VBAでUipathちっくな事をさせたかったのがきっかけ。
元々Uipathは.Net系である訳なので、なにかあるはずい?とぐぐりまくった時のメモ
<参考サイト>
MicroSoft-ExcelQueryTables
パラメータ多すぎて覚えきれないのでコード書いてコメントメモにした。
Gitできない環境なので一旦ここへ置かせて頂きます。
Sub Sample_QueryTables()
'-------------------
'Webデータを取得する
'-------------------
Dim ws As Worksheet
Dim sUrl As String
Set ws = ThisWorkbook.Worksheets(SHEET_INDEX)
sUrl = GET_STRING_URL
'QueryTableの作成 読み込むCSV(Web)パスと、取り込み先のシート、セルを指定
With ws.QueryTables.Add(Connection:=sUrl, Destination:=Range("A1"))
' .CommandType = 0
.Name = "Emplist.asp?OrgCd=N52" 'どのWebクエリかを指定
.FieldNames = True '列見出し表示(True/Falseどちらを設定しても、
'CSVファイル読込では結果は変わらない
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True 'True の場合、先頭の 5 行のデータに共通する
'書式をクエリTblの新しい行のデータに適用する。
'未使用のセルは書式設定されません。
'False の場合、クエリTableに最後に適用した
'オートフォーマットがクエリTblの
'新しい行のデータに適用される。
.RefreshOnFileOpen = False 'ブックを開いたときにクエリを更新するか
.BackgroundQuery = True 'True = 更新をバックグラウンドで実行する
.RefreshStyle = xlInsertDeleteCells '取得または指定したワークシートの行を
'追加または削除して、クエリによって返される
'recordset 内の行の数に対応するように設定。
'xlInsertDeleteCells:1 新しいレコードセットに
'必要な行数と正確に一致するように、一部の行を
'挿入または削除する。
.SavePassword = False
.SaveData = True 'False = ブックを保存する時、クエリのデータを
' 保存しない
.AdjustColumnWidth = True
.RefreshPeriod = 0 'クエリの自動更新のプロパティ。
'分単位(0 ~ 32767 の整数)
.WebSelectionType = xlEntirePage 'WebPageの全てのTbl、又は特定のテーブルのみを
'インポートするかを示す値を設定)
'(既定値:xlAllTables(全てのTbl),
' xlEntirePage(全て),
' xlSpecifiedTables (特定のテーブル)
.WebFormatting = xlWebFormattingNone 'WebPageをQueryTblにインポートする時に
'どれだけの書式を適用するかを示す値を設定
'xlWebFormattingAll(全ての書式),
'xlWebFormattingNone(書式なし)
.WebPreFormattedTextToColumns = True 'HTMLタグ内に含まれるデータを列に変換するか
'どうかを設定または返す
.WebConsecutiveDelimitersAsOne = True 'webPage上の HTML <PRE>タグから
'クエリTblにデータをインポートする時、
'列に解析する場合は、
'Treu = 連続した区切り文字が1つの
' 区切り文字として扱われます。
'False = 連続した区切り文字が
' 複数の区切り文字として扱われます。
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
'QueryTablesオブジェクトを更新
.Refresh BackgroundQuery:=False 'False:Refreshメソッドを実行する際に、
'バックグラウンドで更新しない
'名前でクエリを指定
'ActiveSheet.QueryTables("SHEET_NAME").Refresh 'Commit的なやつ
End With
End Sub
'/--- 番外編 --- Excelの範囲選択が非常に楽になりました。
'表Adressを取得
Set tbl = ws.Range("A1").CurrentRegion
Set tbl = tbl.Offset(1, 0).Resize(tbl.Rows.Count, tbl.Columns.Count)
Debug.Print "表の範囲 : " & tbl.Address
'/--- 自分用メモメモ その2--- エクセルVBAのIE(InternetExplorer)制御について