- - PR -
excel 2003から VBAのreplaceメソッドで文字を置換する方法を教えてください
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-10-01 19:11
エクセルファイルシートをセミコロン区切りで、*.ABCDのようにお客さんからの要望に合わせてファイルの拡張子も変更して出力する仕様です。拡張子の変更はすでに解決しました。
エクセル2002では以下のVBAで書いたマクロがちゃんと動いてTABをセミコロンに置換できますが、エクセル2003ではTABがセミコロンに置換ができなくてデータとデータの間にTABまま出力されます。 Public Sub ExportWorksheetWithCustomDelimiter( _ ByVal SourceWorksheet As Variant, _ ByVal FilePath As String, _ ByVal Delimiter As String) ' Exports the source worksheet as a text file with a custom field delimiter. ' ExportWorksheetWithCustomDelimiter(SourceWorksheet, FilePath, Delimiter) ' SourceWorksheet - The name of or a reference to a worksheet. ' FilePath - The full path to the export file. ' Delimiter - One or more characters to use as the field delimiter. Dim DisplayAlerts As Boolean Dim FileNumber As Long Dim FileData As String If VarType(SourceWorksheet) = vbString Then SourceWorksheet = ActiveWorkbook.Sheets(SourceWorksheet).Name ' Create copy of source worksheet in new workbook Sheet1.Copy ' Save copy as tab delimited text file and close DisplayAlerts = Application.DisplayAlerts Application.DisplayAlerts = False ActiveWorkbook.SaveAs FileName:=FilePath, FileFormat:=xlText ActiveWorkbook.Close SaveChanges:=False Application.DisplayAlerts = DisplayAlerts ' Read file into string variable and delete file FileNumber = FreeFile 'Open FilePath For Binary Access Read Write As FileNumber Open FilePath & ".txt" For Binary Access Read Write As FileNumber FileData = StrConv(InputB(LOF(FileNumber), FileNumber), vbUnicode) Close FileNumber Kill FilePath & ".txt" ' Replace all tabs with special character FileData = Replace(FileData, Chr(9), Delimiter) ' Right modified text back out to same file Open FilePath For Binary Access Read Write As FileNumber Put FileNumber, , FileData Close FileNumber End Sub 上のマクロの実行後の結果は次と同じです。 エクセル2002からマクロの実行結果:AAA;BBB;CCC;DDD;EEE;FFF エクセル2003からマクロの実行結果:AAA BBB CCC DDD EEE FFF 解決方法を教えてください。 ぜひよろしくお願いします。 ありがとうございます。 [ メッセージ編集済み 編集者: zyh_uk 編集日時 2008-10-01 19:39 ] [ メッセージ編集済み 編集者: zyh_uk 編集日時 2008-10-01 19:48 ] | ||||
|
投稿日時: 2008-10-02 15:54
質問するよりデバッグで原因を確かめるのが先ですね。
差し当たりここの戻り値を確認するのが良いでしょう。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |
1