■テキスト(タブ区切り)
http://webpersons.jp/tips/2008/05/excelxls.html
こういうことでしょうか?
▽2
●
cx20 ●200ポイント ベストアンサー |
テンプレートファイルを使用して CSV データを作成するスクリプトを作成してみました。
事前に以下のパスを修正の上、実行願います。
' Excelデータファイルファイルを指定します Const g_strExcelFile = "C:\home\edu\hatena\orekojinn\1368499599\book1.xls" ' テンプレートファイルを指定します Const g_strTemplateFile = "C:\home\edu\hatena\orekojinn\1368499599\template.txt" ' 出力先のCSVファイル名を指定します Const g_strCsvFile = "C:\home\edu\hatena\orekojinn\1368499599\out.csv"
なお、Excel VBA ではなく、VBScript でのサンプルとなっております。
(少し修正すれば、VBA で動作させることも可能です。必要であれば修正します。)
実行するには、エクスプローラより「ExcelToCsv.vbs」をダブルクリックするか、コマンドライン(cmd.exe)より、「CScript ExcelToCsv.vbs [Enter]」を行ってください。
実行すると出力先の CSV ファイルが作成されます。
' File : ExcelToCsv.vbs ' Usage : CScript //Nologo ExcelToCsv.vbs Option Explicit ' Excelデータファイルファイルを指定します Const g_strExcelFile = "C:\home\edu\hatena\orekojinn\1368499599\book1.xls" ' テンプレートファイルを指定します Const g_strTemplateFile = "C:\home\edu\hatena\orekojinn\1368499599\template.txt" ' 出力先のCSVファイル名を指定します Const g_strCsvFile = "C:\home\edu\hatena\orekojinn\1368499599\out.csv" Call Main() Sub Main() Dim strTemplate ' テンプレートファイルのテキストの内容を変数に読み込む strTemplate = GetTextFromFile( g_strTemplateFile ) ' Excel ファイルの内容をテンプレートの内容に基づき CSV 出力する Call ConvertExcelToCsvFile( g_strExcelFile, strTemplate, g_strCsvFile ) End Sub ' Excel ファイルの内容をテンプレートの内容に基づき CSV 出力する Sub ConvertExcelToCsvFile( strFileName, strTemplate, g_strCsvFile ) Dim cn Set cn = CreateObject("ADODB.Connection") ' Excel 97-2003 であれば、以下を有効化します。 cn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFileName & ";Extended Properties=""Excel 8.0;HDR=Yes;""" ' Excel 2007/2010 の場合は、以下を有効化します。 'cn.Open "PROVIDER=Microsoft.ACE.OLEDB.12.0;Data Source=" & strFileName & ";Extended Properties=""Excel 12.0;HDR=Yes;""" Dim rs ' Excel のシート名が「Sheet1」でない場合、下記の名称を変更してください。 Set rs = cn.Execute("SELECT * FROM [Sheet1$]") Dim strLine Dim strBaseName Dim strDelimiter strDelimiter = "," ' 出力ファイルの区切り文字として「,」を使用します。 Dim strNo ' 管理番号 Dim strTitle ' タイトル Dim strSize ' サイズ Dim strState ' 状態 Dim nPrice ' 販売金額 Dim strItemInfo ' 商品説明 strItemInfo = strTemplate strLine = Join( Array("管理番号","商品説明文","販売価格"), strDelimiter ) ' 項目行をファイル出力 Call WriteLineToFile( strLine, g_strCsvFile ) ' レコード件数分、順次取得します While Not rs.BOF And Not rs.EOF ' 各項目の値を取得 strNo = rs("管理番号") strTitle = rs("タイトル") strSize = rs("サイズ") strState = rs("状態") nPrice = rs("販売価格") ' テンプレートの内容に基づき置換 strItemInfo = Replace( strItemInfo, "<タイトル>", strTitle ) ' <タイトル> を置換 strItemInfo = Replace( strItemInfo, "<サイズ>", strSize ) ' <サイズ> を置換 strItemInfo = Replace( strItemInfo, "<状態>", strState ) ' <状態> を置換 ' 「管理番号,商品説明文,販売価格」の CSV データを作成する strLine = _ Chr(34) & strNo & Chr(34) & strDelimiter & _ Chr(34) & strItemInfo & Chr(34) & strDelimiter & _ CStr( nPrice ) ' CSV データをファイル出力 Call WriteLineToFile( strLine, g_strCsvFile ) ' 次のレコードに移動 rs.MoveNext Wend End Sub ' データをファイル出力する Function WriteLineToFile( strLine, strFileName ) Dim fso Set fso = CreateObject("Scripting.FileSystemObject") Dim file Set file = fso.OpenTextFile(strFileName, 8, True) ' 追加書き込みモード file.WriteLine strLine file.Close End Function ' テキストファイルを読み込む Function GetTextFromFile( strFileName ) Dim strResult Dim fso Set fso = CreateObject("Scripting.FileSystemObject") Dim file Set file = fso.OpenTextFile(strFileName, 1) ' ForReading = 1 strResult = file.ReadAll GetTextFromFile = strResult End Function