エクセルVBAについての質問です。


右のページ(http://q.hatena.ne.jp/1162125842)で質問したのですが、
エクセルの文字列を置換したところ、文字化けが起こりました。
おそらくテキストの文字コードをUTF-8に
設定しているからだと思うのですが、
これを解決するにはどうしたら良いのでしょうか?

マクロ自体は完璧に僕が求めているものなので、
これに付け足していただいてマクロを作り直していただいても結構です。

テキストの側の文字コードは変更できないので、
理想的には文字コードを自動的に認識して、
置換し直してもらえると最高ですが、
UTF-8で置換するという方法でも結構です。

もし文字コードが原因でない場合は、
それを解説していただいた上でマクロを作成してください。

よろしくお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/10/30 03:22:57
  • 終了:2006/10/30 22:00:00

回答(1件)

id:bonlife No.1

回答回数421ベストアンサー獲得回数752006/10/30 06:06:33

ポイント100pt

前回のid:Mookさんの回答にあったFileSystemObjectが扱える文字コードは、ASCII、UTF-16、システムのデフォルト文字コードの3つのみです。

UTF-8を正しく扱うために、ADODB.Streamを使うようにしました。

Option Explicit
Const baseFile = "D:\はてな"
Const backupFile = "D:\はてな.bak"

Sub setDate()
    Dim Stream As Object, Stream2 As Object, buf As String

    Set Stream = CreateObject("ADODB.Stream")
    Set Stream2 = CreateObject("ADODB.Stream")
    
    Stream.Open
    Stream.Type = 2
    Stream.Charset = "utf-8"
    Stream.LoadFromFile baseFile
    buf = Stream.readText()
    Stream.SaveToFile backupFile, 2
    
    buf = Replace(buf, "☆☆", Format(Now, "dd/mm/yyyy hh:mm:ss AM/PM"))

    Stream2.Open
    Stream2.Type = 2
    Stream2.Charset = "utf-8"
    Stream2.WriteText (buf)
    Stream2.SaveToFile baseFile, 2
    
    Stream.Close
    Stream2.Close

End Sub

参考になれば幸いです。

id:taroemon

ご回答ありがとうございます。

完璧にできました。

2006/10/30 21:59:21

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません