人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

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

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

よろしくお願いします。

●質問者: taroemon
●カテゴリ:コンピュータ
✍キーワード:UTF-8 VBA いるか エクセル テキスト
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ●
●100ポイント

前回の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

参考になれば幸いです。

◎質問者からの返答

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

完璧にできました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ