C#やVB.netを経験してからVBAを扱うと、DataTableってVBAにはないの?と思ってしまいますよね。
DataTableではなく、RecordSetを使うことで同じような感じで処理ができます。
使い方の備忘録として残しておきます。
テーブルをRecordSetに取得するコード
処理としては以下の抜粋から紹介します。
①テーブルからデータをSELECT
②RecordSetへ結果を取得
③csv、tsvに出力

RecordSetからcsv、tsvファイルを出力するAccessのテーブルからtsvファイルを出力しようとしたところ、意外と簡単に出す方法がありませんでした。
備忘録のために残してお...
作成したAccessファイルはこちらからダウンロードできます。
テーブルをRecordSetに取得する書き方
以下のような書き方です。
※RecordSetにSELECT結果を格納しているのは13行目です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
'==============================================' '処理 :csv出力ボタン押下時' '==============================================' Private Sub ExportCsv_Click() Dim db As DAO.Database 'DBの変数 Dim RS_Supplier As DAO.Recordset 'レコードセット 'DBをセット Set db = CurrentDb 'レコードセットへテーブルのデータを取得 Set RS_Supplier = db.OpenRecordset(GetSupplier()) 'レコードセットをファイル出力 Call ExportRecordSet(",", RS_Supplier) End Sub |
GetSupplier()の中身
SELECT文をGetSupplier()で作成しています。
SQLの知識が必要なので、ゼロからはじめるデータベース操作がおすすめです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
'==============================================' '目的: Supplierテーブルからすべてを取得' '引数:' '戻り値: SQL文' '==============================================' Public Function GetSupplier() As String Dim SB As StringBuilder 'インスタンス化' Set SB = New StringBuilder SB.Clear SB.AppendLine ("SELECT") SB.AppendLine (" * ") SB.AppendLine ("FROM Supplier") GetSupplier = SB.GetString() End Function |



VBA C# オススメ参考書プログラミングの参考書でオススメの紹介をしていきます。
それぞれ私が使っている言語のみです。
VBAのオススメ参考書をExc...
StringBuilderについては次で解説しています。
StringBuilderクラス
StringBuilderもC#やVB.netには既存であるクラスなのですが、VBAにはありません。
なので簡単に作ってあります。
一つ作っておくと1つのAccessアプリでは使いまわせるので便利です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
'====================================================================' ' StringBuilderクラス' '--------------------------------------------------------------------' ' create: 2018/02/20' ' update: 2018/02/20' '====================================================================' Option Compare Database '=========================================================' ' メンバ宣言' '=========================================================' ' 成形文字列' Private strString As String ' 改行コード' Private RTN_CODE As String '=========================================================' ' コンストラクタ' '=========================================================' Private Sub Class_Initialize() ' 初期化' strString = "" RTN_CODE = Chr(13) & Chr(10) End Sub '=========================================================' ' 成形した文字列を空文字にする' '=========================================================' Public Sub Clear() strString = "" End Sub '=========================================================' ' 成形した文字列を取得する' '---------------------------------------------------------' ' return 成形した文字列' '=========================================================' Public Function GetString() GetString = strString End Function '=========================================================' ' 文字列を追加' '---------------------------------------------------------' ' param strAdd 追加する文字列' '=========================================================' Public Sub Append(ByVal strAdd) strString = strString & strAdd End Sub '=========================================================' ' 文字列を追加' '---------------------------------------------------------' ' param strAdd 追加する文字列' '=========================================================' Public Sub AppendLine(ByVal strAdd) Append (strAdd & RTN_CODE) End Sub |



おすすめのプログラミングスクール めざせ就職・年収アップ!
プログラミングを独学でされている人は意外と多いです。
ただ、プログラミングの独学は簡単にはいきません。
自分だけの力...



プログラミング初心者の独学方法 文系卒の経験談
私はIT系の会社に勤めて4年目ですが、最初の1年は開発をさせてもらえませんでした。
文系卒でプログラミング経験はなかったの...



プログラミングの独学とはエラーとの闘い
プログラミングを勉強し始めた初心者の方はつまづくことが多いと思います。
私も最初はエラーが出るたびにいちいちビビッて、意味...
・【Excel VBA】コピペ用:簡易StringBuilder
https://qiita.com/OneK/items/4f8ecdb33eac7bc840b5
おすすめ参考書
■Excelマクロ
てっとり早く確実にマスターできる Excel VBAの教科書
■Accessマクロ
よくわかる Microsoft Access 2016 基礎
Accessのデータベースのツボとコツがわかる本2013対応