UTF-8のテキストファイルを開く方法
こんにちは。VBA初心者です。
FSOを使ってテキストファイルを開いてみたのですが、S-JISで開かれるらしく、文字化けしてしまいました。
そこで、WEBで調べてみると「ADODB.Stream」というものを使用すると、「オブジェクト.Charset = "UTF-8"」のように文字コードを指定できることがわかりました。
しかし、テキストストリームというものがいまいち理解できていないので使い方がよくわかりません。
以下のようなコードを書いてみましたが、「実行時エラー'438' オブジェクトは、このプロパティまたはメソッドをサポートしていません。」となってしまいました。
どこが間違っているのか教えていただけないでしょうか。
ちなみに「Open」ステートメント(Open バス名 For モード As #ファイル番号)を使用してテキストを内部的に開いた場合はどうなるのでしょうか。もし、標準でS-JISだった場合は、UTF-8にする方法はあるのでしょうか。
どうかよろしくお願いします。
Sub UTF8を開く()
Dim myADODB As Object
Set myADODB = CreateObject("ADODB.Stream")
Dim i As Integer
Worksheets("sheet1").Activate
i = 1
With myADODB
.Charset = "UTF-8"
.ReadLine ("D:\test\sample.txt")
Do Until .AtEndOfStream = True
Cells(i, 1).Value = myADODB
i = i + 1
Loop
.Close
End With
End Sub
No.2ベストアンサー
- 回答日時:
とりあえず一例です
Sub test()
Dim mystream As Object
Dim i As Long
Const adTypetext As Long = 2
Const adReadLine As Long = -2
Set mystream = CreateObject("ADODB.Stream")
mystream.Type = adTypetext
mystream.Charset = "UTF-8"
mystream.Open
mystream.LoadFromFile ("C:\hoge.txt")
i = 1
Do Until mystream.EOS
Cells(i, 1).Value = mystream.ReadText(adReadLine)
i = i + 1
Loop
mystream.Close
Set mystream = Nothing
End Sub
ありがとうございます!UTF-8のファイルを開くことができました。
ところで、.ReadText の引数が「-2」となっていますが、こうすると1行ごとに読み込むということになるのでしょうか。
以下のMSDNのページでもそのあたりが説明されていないのですが、どこで調べたらそういうことが判るでしょうか(Typeプロパティについても同様です)。
http://msdn.microsoft.com/ja-jp/library/cc364207 …
とにかく、非常に助かりました。
ありがとうございます。
No.3
- 回答日時:
#2です。
真面目に捜してみました。下記からが良いでしょう。Typeプロパティは、規定値がadTypeTextなので、あえて指定しなくても良さそうです。
http://msdn.microsoft.com/ja-jp/library/cc408215 …
ADO API リファレンス
└ADO オブジェクト
└Stream オブジェクト
└Stream オブジェクトのプロパティ、メソッド、およびイベント
├Type プロパティ (ADO Stream)
│└Stream オブジェクトに格納されたデータの種類を表す StreamTypeEnum の値を設定します。
└ReadText メソッド
└パラメータ
NumChars
省略可能です。ファイルから読み取る文字数を指定する長整数型 (Long) の値、または StreamReadEnum 値を指定します。既定値は adReadAll です。
ご丁寧にありがとうございました。
「StreamReadEnum」のリンクを開いたら「-2」がどういう意味だか書いてありました。
勉強になります。
No.1
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- Visual Basic(VBA) InputBoxでキャンセルボタンを押したらファイル自体を閉じたい 3 2022/07/23 17:52
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
このQ&Aを見た人はこんなQ&Aも見ています
-
【お題】NEW演歌
【大喜利】 若い人に向けたことは分かるけど、それはちょっと寄せ過ぎて変になってないか?と思った演歌の歌詞
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
【お題】引っかけ問題(締め切り10月27日(日)23時)
【大喜利】 「日本で一番高い山は富士山……ですが!」から始まった、それは当てられるわけ無いだろ!と思ったクイズの問題
-
【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
【お題】 ・買ったばかりの自転車を分解してひと言
-
架空の映画のネタバレレビュー
映画のCMを見ていると、やたら感動している人が興奮で感想を話していますよね。 思わずストーリーが気になってしまう架空の感動レビューを教えて下さい!
-
ADODB.Streamを使用してUTF-8を出力
Visual Basic(VBA)
-
エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA 定数にオブジェクト...
-
サーブレットコンテキストの意...
-
VB.netでメソッドからコントロ...
-
javaで、、、
-
エクセルVBA 画像を貼り付ける...
-
VBAでの[]
-
C#のクラスで値渡しをする
-
Vba ListViewの行挿入に関して...
-
JSPでのArrayListの表示につい...
-
Dispose()は、どんな時に使うの...
-
VB2005でADDとINSERTの違いは?
-
VBスクリプトでテキストファイ...
-
Visual BasicでJavaアプレット...
-
mkdirsでフォルダが作成されない
-
VB.NETでのnothing の意義について
-
MessageBox.Show(Me,…の「Me」...
-
String型からlong型への変換は...
-
C#のXmlDocumentについて
-
getHeigth,getWidthについて
-
ArrayListのデバッグ方法について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA 画像を貼り付ける...
-
VBAでの[]
-
Excel VBA 定数にオブジェクト...
-
サーブレットコンテキストの意...
-
C#のクラスで値渡しをする
-
javaで、、、
-
servletからjspへオブジェクト...
-
VB.netでメソッドからコントロ...
-
VB.NETでのnothing の意義について
-
Vba ListViewの行挿入に関して...
-
String型からlong型への変換は...
-
VBスクリプトでテキストファイ...
-
JSPでのArrayListの表示につい...
-
Dispose()は、どんな時に使うの...
-
MessageBox.Show(Me,…の「Me」...
-
C#で親にイベントを投げる方法
-
vectorの内容をString型に変換...
-
オブジェクトの参照渡しについて
-
UTF-8のテキストファイルを開く...
-
エクセルVBA/SpecialCellsで特...
おすすめ情報