• 締切済み

バイナリ読み込み書き込みについて

Set objReadADO = WScript.CreateObject("ADODB.Stream") If Err.Number = 0 Then objReadADO.Open objReadADO.Type = 2 objReadADO.LoadFromFile "C:\old.xls" End If Set objWriteADO = WScript.CreateObject("ADODB.Stream") If Err.Number = 0 Then objWriteADO.Open objWriteADO.Type = 2 End If strReadDate = objReadADO.Read(-1) If InStr(1, strReadDate, "abc", 0) > 0 Then ← 1 strReadDate = Replace(strReadDate, "abc", "xyz") ← 2 End If objWriteADO.Write strReadDate objWriteADO.SaveToFile "C:\new.xls" objReadADO.Close objWriteADO.Close Excelをバイナリで読み込み、特定の文字があった場合に置き換えを行い別の名前でExcelを出力したいと思っています。出力自体は出来たのですが、変換がされません… ADODB.Streamは初心者なためどうしてよいかわかりません。 どのようにすればできるのでしょうか? よろしくお願いします。

みんなの回答

  • nda23
  • ベストアンサー率54% (777/1416)
回答No.1

Excelをバイナリで読み込んで解析できるのでしょうか? Type=2はテキストモードでは? VBSには形式の指定がないので、バイナリデータを扱うべき Byte型配列を変数に取ることができません。Positionを ズラしながら1バイトずつ読み込むしかありません。(他の フレームワークを使う方法はある) Excelのシート上にあるデータを扱うのなら、ActiveXObjectで Excelを操作した方がよいでしょう。 Dim Appli Dim WkBk Dim WkSt Dim Rng Set Appli = CreateObject("Excel.Application") Set WkBk = Appli.Workbooks.Open("C:\old.xls") Set WkSt = WkBk.WorkSheets(1) Set Rng = WkSt.Cells.Find("abc") --- 中略 --- WkBk.SaveAs "C:\new.xls" Appli.Quit Set Appli = Nothing 実際の操作はExcelの「新しいマクロの記録」で得られた プログラムを見て記述できます。

yuki-_-yos
質問者

補足

objReadADO.Type = 2ではなく1でした。 > Excelをバイナリで読み込んで解析できるのでしょうか? できないのでしょうか?バイナリエディタで読み込んでみたところ、表示できたのですが・・・

すると、全ての回答が全文表示されます。

関連するQ&A