CSVファイルからExcel用ファイルに変換するプログラムを作成しています。
VBに関する掲示板や、書籍をみて、以下のように作ってみました。
Dim xlApp As Excel.Application
Dim strCSVFile As String 'CSVファイル名
Dim strXLSFile As String 'Excelファイル名
(途中は省略)
Set xlApp = CreateObject("Excel.Application")
xlApp.Workbooks.OpenText FileName:=strCSVFile, _
DataType:=xlDelimited, TextQualifier:=xlDoubleQuote
xlApp.Application.DisplayAlerts = False
xlApp.SaveAs strXLSFile
xlApp.Quit
Set xlApp = Nothing
ところが、上記のxlAppにはSaveAsメソッドがありませんので、これではうまく動作しません。
SaveAsメソッドを使うには、以下の定義が必要となります。
Dim xlBook as Excel.Workbook
Set xlBook =
となって、
xlBook.Workbook.SaveAs strXLSFile
となるのだと思うのですが、「Set xlBook =」の後にどう書いたらいいか分かりません。
Set xlBook = xlApp.Workbooks.Open(strCSVFile)
とやると、CSVファイルの中身がカンマごとにExcelのセルに入りません。
どのようにしたらよいか、教えて下さい。
VBレスキュー花ちゃんの
Excel & Word関係を参考にされると良いと思いますよ。
http://www.bcap.co.jp/hanafusa/
okuさん、こんにちは。
CSVファイル読み込みの部分については、VBレスキュー花ちゃんの「Excel上にCSV及びTXTファイルをデータ型を指定して読込む」を参考にして作成したのですが、ここには保存する処理は書かれていませんでした。書籍の「VisualBasic逆引き大全」なども見て、いろいろ作ってみましたが、それでもうまくいかず、ここに書き込んだ次第です。
こんちは。
過去に同じようなレスに答えてます。
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200309/03090017.txt
参考になりませんか?
だっちゃん、こんばんは。大変参考になりました。実は、
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200309/03090017.txt
は見ていたのですが、ちょっと違うかなと思って試していませんでした。それは、
MyXL.Application.Workbooks.Open "c:\test.txt"
を使っており、私の場合は、
xlApp.Application.WorkBooks("test.txt").SaveAs FileName:="C:\test.xls"
は、使えないかなと思ったのです。
ですが、ものは試しだと思ってやってみたらうまくいきました。
下記のように記述することで、動作するようになります。
なお、xlApp.Workbooks.OpenTextのところでは、「Comma:=True」が抜けてました
Dim xlApp As Excel.Application
Dim strCSVFile As String 'CSVファイル名
Dim strXLSFile As String 'Excelファイル名
Dim strCSVFullPath As String 'strCSVFileのフルパス名(ファイル名を含む)
Dim strXLSFullPath As String 'strXLSFileのフルパス名(ファイル名を含む)
(途中は省略)
Set xlApp = CreateObject("Excel.Application")
xlApp.Workbooks.OpenText FileName:=strCSVFullPath, _
DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, Comma:=True
xlApp.Application.DisplayAlerts = False
xlApp.Application.WorkBooks(strCSVFile).SaveAs FileName:=strXLSFullPath, FileFormat:=xlExcel9795
xlApp.Quit
Set xlApp = Nothing
どうもありがとうございます。
ツイート | ![]() |