Excelを使ったCSV→Xlsファイル変換をするには?

解決


Sato_a  2003-11-08 04:12:01  No: 109833

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のセルに入りません。
どのようにしたらよいか、教えて下さい。


oku  URL  2003-11-09 05:53:18  No: 109834

VBレスキュー花ちゃんの
Excel & Word関係を参考にされると良いと思いますよ。
http://www.bcap.co.jp/hanafusa/


Sato_a  2003-11-11 00:54:03  No: 109835

okuさん、こんにちは。
CSVファイル読み込みの部分については、VBレスキュー花ちゃんの「Excel上にCSV及びTXTファイルをデータ型を指定して読込む」を参考にして作成したのですが、ここには保存する処理は書かれていませんでした。書籍の「VisualBasic逆引き大全」なども見て、いろいろ作ってみましたが、それでもうまくいかず、ここに書き込んだ次第です。


だっちゃん  2003-11-11 02:24:23  No: 109836

こんちは。

過去に同じようなレスに答えてます。

http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200309/03090017.txt

参考になりませんか?


Sato_a  2003-11-11 06:04:59  No: 109837

だっちゃん、こんばんは。大変参考になりました。実は、

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

どうもありがとうございます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加