CSVファイルをADOで扱う連載の25回目です。前回の記事はこちらになります。 hirocom777.hatenadiary.org
CSVファイルを作る
今までADOを使ってCSVファイルを読みむ方法をご紹介してきました。
今回はCSVファイルを作る方法についてご紹介したいと思ます。CSVファイルはテキストファイルです。わざわざADOを使わなくてもファイルを作ることができます。でも、ADOを使ってCSVファイルを作ることによって色々なメリットがあります。
準備
それでは準備をしていきたいと思います。まずはマクロ記述可能なExcelファイルを用意します。Microsoft ActiveX Data Objects 2.8 Libraryを参照設定してください。VBEの画面からメニューのツール⇒参照設定で選択して設定します。
次に、標準モジュールを用意して以下を入力しましょう。こちらがCSVファイルを作るプロシージャです。
Public Sub MakeCsvFile(folderName As String, fileName As String, fieldList As String) ' On Error GoTo ErrorHandler 'データベースを接続します Dim adoCn As New ADODB.Connection adoCn.Provider = "Microsoft.ACE.OLEDB.12.0" adoCn.Properties("Extended Properties") = "Text;HDR=Yes;FMT=Delimited" adoCn.Open folderName & "\" 'CSVファイルを作ります Dim adoCm As New ADODB.Command adoCm.ActiveConnection = adoCn adoCm.CommandText = "CREATE TABLE " & fileName & "(" & fieldList & ")" adoCm.Execute adoCn.Close ErrorHandler: If Err.Number <> 0 Then MsgBox "データベース接続に失敗しました " & Err.Number
このプロシージャは、CSVファイルを配置するフォルダー、CSVファイル名、フィールドのリストを指定することでCSVファイルを作ります。お次は、このプロシージャを呼び出すサンプルのプロシージャを書いていきましょう。
Public Sub CsvText() Dim folderName As String Dim fileName As String Dim fieldList As String folderName = ThisWorkbook.Path fileName = "Test.csv" fieldList = "日付 DATE,品名 TEXT,価格 INTEGER" MakeCsvFile folderName, fileName, fieldList End Sub
フォルダー、CSVファイル名、フィールドのリストを設定してMakeCsvFileを呼び出すというシンプルな構造になっています。フィールド指定方法の詳細については別途ご説明したいと思います。これでExcelファイルが保存してある場所と同じ所にTest.csvを作ります。
実行してみる
それではCsvTextを実行してみましょう。するとちょっとだけ間をおいて・・・おお、Test.csvができました!!テキストエディターで中を確認してみると・・・
"日付","品名","価格"
ちゃんとファイルができていますね!!そして注意してみると、同じ場所にもう1つschema.iniというファイルができています。こちらもテキストエディターで中を確認してみましょう。
[Test.csv] ColNameHeader=True CharacterSet=932 Format=CSVDelimited Col1=日付 Date Col2=品名 LongChar Attribute 32 Col3=価格 Integer
なにやら、作成したTest.csvに関するファイルの様です。いったい何なんでしょうか?別の機会にご紹介していきたいと思います。
次回は解説
いかがでしたか?とりあえずCSVファイルを作ることには成功しました。次回は今回ご紹介したコードの解説です。お楽しみに!!