【VBA】Excelシート内の表データをSQLで操作したい
作成日:2022-10-21
更新日:2022-11-06

Excelシートを、FROMに指定することができる
標準モジュールに記述

[シート名$]には、指定シートのシート名を “” 無しで記述
Public Sub test()
Dim bookPath As String: bookPath = "(Excelファイルのフルパスを指定)"
Dim cn As Object: Set cn = CreateObject("ADODB.Connection")
Dim rs As Object: Set rs = CreateObject("ADODB.Recordset")
Dim tbl As String
Dim select_ As String
Dim where_ As String
tbl = " " & "[シート名$]" & " "
select_ = " " & "aaa, bbb, ccc" & " "
where_ = " " & "ccc > 0" & " " '0以外の値を抽出する場合
Dim strSQL As String
strSQL = _
"SELECT" & select_ & _
"FROM" & tbl & _
"WHERE" & where_
'接続
With cn
.Provider = "Microsoft.ACE.OLEDB.12.0"
.Properties("Extended Properties") = "Excel 12.0"
.Open bookPath
End With
'レコードセット
Dim ary As Variant
With rs
.Open strSQL, cn
'データを配列に入れる
ary = .GetRows
'※配列ではなく、シートに貼り付けたい場合
'Sheet1.Cells(1, 1).CopyFromRecordset rs
.Close
End With
cn.Close
Set rs = Nothing
Set cn = Nothing
End Sub
データベースに移行したくなったときのためにも、便利かも
2022-10-21
編集後記:
この記事の内容がベストではないかもしれません。
記事一覧
-

UsedRangeのデータを配列で取得 【VBA】シートにあるデータを配列に格納する(空白含む)|UsedRange -

クラスでForEachを使いたい 【VBA】クラスで通常のCollection機能を利用する準備|ForEachが使えない -

[VBA]開いているブックからファイルを探す 【VBA】開いている全ブックから対象ブックをセット|InStr ファイル名の一部で判定 -

[VBA]Control the calculation再計算 【VBA】指定のシートを再計算する|Calculate -

[VBA]Killthe progress dialog VBA|保存処理(SaveAs)がフリーズする原因と対策 -

ユーザーフォームを半透明にする 【VBA】ユーザーフォームを半透明にしてシートの内容が見えるようにする|waiting-form