@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

excel 2003から VBAのreplaceメソッドで文字を置換する方法を教えてください

1
投稿者投稿内容
zyh_uk
会議室デビュー日: 2008/10/01
投稿数: 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 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-10-02 15:54
質問するよりデバッグで原因を確かめるのが先ですね。

引用:

zyh_ukさんの書き込み (2008-10-01 19:11) より:

FileData = Replace(FileData, Chr(9), Delimiter)


差し当たりここの戻り値を確認するのが良いでしょう。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

スキルアップ/キャリアアップ(JOB@IT)