1.環境
Microsoft Windows7 64ビット
Microsoft Ofiice2013 Excel2013 32ビット
2.事象
テキストファイルに定義しているUNICODEを読むと文字化け(?)します。
メモ帳等のテキストファイル上はUNICODEを文字化けせずに目視で確認しています。
どうしたら文字化けせずに読めるのでしょうか?
どなたか詳しい方、ご教授願います。
3.テキストファイル(test.dat)
❶
4.VBA
・参照設定([ツール(T)]バー-[参照設定(R)…])
レ Microsoft ActiveX Data Objects 2.8 Library
・ソース
※例どっちでも、文字化けします。
Dim a, b As String
例1)
With CreateObject("ADODB.Stream")
.Charset = "UTF-8"
.Type = adTypeText
.Open
.LoadFromFile "C:\test.dat"
a = .ReadText
.Close
End With
例2)
Open "C:\test.dat" For Input As #1
Do Until EOF(1)
Line Input #1, b
Loop
Close #1
No.4
- 回答日時:
ファイルがUTF-8の前提です。
以下のようにしてください。
---------------------------------------------------
Option Explicit
Public Sub Macro1()
Call myReadFile("c:\test.data")
End Sub
'参照設定でMicrosoft ActiveX Data Objects x.x Library(最新版) にチェックをしておくこと
Public Sub myReadFile(ByVal infile As String)
'読み込み用オブジェクト作成
'ファイルを読み込むための変数
Dim line As String
Dim lineNo As Long
'オブジェクトを作成
Dim txt As Object
Set txt = CreateObject("ADODB.Stream")
'オブジェクトに保存するデータの種類を文字列型に指定する
txt.Type = adTypeText
'文字列型のオブジェクトの文字コードを指定する
txt.Charset = "UTF-8"
'オブジェクトのインスタンスを作成
txt.Open
'ファイルからデータを読み込む
txt.LoadFromFile (infile)
lineNo& = 0
'最終行までループする
Do While Not txt.EOS
lineNo = lineNo + 1
'1行を読み取る
line = txt.ReadText(adReadLine)
MsgBox (line)
Loop
txt.Close
'メモリからオブジェクトを削除する
Set txt = Nothing
MsgBox ("lineNo=" & lineNo)
End Sub
------------------------------------------------------
1行ずつ読み込んで、メッセージボックスに内容を表示しています。
参照設定でMicrosoft ActiveX Data Objects x.x Library(最新版) にチェックをしておくことを
忘れずにお願いいたします。
No.3
- 回答日時:
UTF-8 BOM無のように見えますが、念の為
(1)秀丸でそのファイルを開いて、
メニューバーの「ファイル」ー「エンコードの種類」で
Unicode(UTF-8) BOMはグレー表示(BOM無)
となっていますか。
(2)開いたファイルの内容は、秀丸できちんと表示されていますか。
No.2
- 回答日時:
そのテキストファイル(test.dat)が一体、どのUNICODEなのかを明確にする必要があります。
もし、秀丸があれば、秀丸で、そのファイルを開いてください。
UTF-16(LE) BOM無
UTF-16(BE) BOM無
UTF-7 BOM無
UTF-16(LE) BOM付き
UTF-16(BE) BOM付き
UTF-7 BOM付き
等が考えられますが、まず、どのUNICODEなのかを明らかにしましょう。
話はそれからです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
誕生日にもらった意外なもの
みなさんがもらった誕生日プレゼントで面白いものがあったらぜひ教えてください!
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
VBAにて読み込みが出来ない環境依存文字 ㉖ の文字コードを教えて下さい。
Excel(エクセル)
-
Line Inputで文字化け(助けて下さい)
Visual Basic(VBA)
-
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
-
-
4
Excel VBA読み込みで文字化けが
Visual Basic(VBA)
-
5
テキストデータExcel取込時の文字化けと、その他
Visual Basic(VBA)
-
6
VBA、フォルダのパスに環境文字 ㉑ があり、VBAが機能しません。
Android
-
7
VBAで、㉑という数値が、正しく、入力できない
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
.txtではなく.logの方が良いの...
-
バッチ処理でファイルの中身を...
-
多数のサブディレクトリ内のフ...
-
ファイルの最後に文字列挿入
-
Windowsのバッチファイルを利用...
-
拡張子を元に戻す
-
テキストファイルで提出とは?
-
VBSで、テキストファイルに対し...
-
COPYコマンドで結合すると余計...
-
cshでファイルサイズ取得
-
UWSCでファイルを開く方法
-
コマンドプロンプトでスペース...
-
forfilesで検索したファイルを...
-
ファイル内容の修正、行削除に...
-
VBAでワークシートを引数として...
-
ファイルを処理中に次の処理に...
-
txtとはWordでなんですか?
-
Scriptを使用して指定のプリン...
-
【エクセルVBA】エクセルからテ...
-
ExcelVBA ファイル一覧を出力
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ処理でファイルの中身を...
-
.txtではなく.logの方が良いの...
-
VBAでワークシートを引数として...
-
多数のサブディレクトリ内のフ...
-
COPYコマンドで結合すると余計...
-
拡張子を元に戻す
-
テキストファイルで提出とは?
-
ファイルの最後に文字列挿入
-
バッチファイル 複数ファイル...
-
バッチファイルで文字列削除に...
-
renameコマンドについて
-
forfilesで検索したファイルを...
-
accessでSQL文を使ってcsvファ...
-
バッチファイルからVBAに引数を...
-
psqlでエラーログをとりたい
-
UWSCでテキストファイルを開い...
-
cshでファイルサイズ取得
-
MS-DOSのバッチファイルの中で...
-
コマンドプロンプトで指定した...
-
テキストファイルのタブをカン...
おすすめ情報
UTF-16LEに変更して実行後、下記のエラーが出ました。
困っています。
解消方法を願います。
■エラー詳細
Err.Number:3001
Err.Description:引数が間違った型、許容範囲外、または競合しています。
64ビット版の秀丸エディタで、開きました。
次に[メニュー]バー-[ファイル]-[名前を付けて保存(A)…]
名前を付けて保存画面
エンコードの種類(C): [自動判定 - Unicode(UTF-8)] □BOMを付ける(※チェック無)
Unicode(UTF-8) BOMはグレー表示(BOM無)になっています。
開いたファイルの内容は、秀丸できちんと表示されています。
ソースの提供ありがとうございました。
下記のようにして参照設定を変更してソース実行をしました。
まだ、文字化け(?)をします。
ちなみに試しに①は、文字化け(?)をせずにきちんと表示されました。
また、Microsoft ActiveX Data Objects 2.8 Libraryに戻して、実行も文字化けしています。
後、例1の実行も文字化けしています。
■参照設定の変更
・参照設定([ツール(T)]バー-[参照設定(R)…])
レ Microsoft ActiveX Data Objects 6.1 Library
皆さん、様々な情報ありがとうございます。
秀丸で❶を改行付き、Unicode16(UTF-16) □BOMを付ける(※チェック有)で保存
> この文字をexcelのシートに直接出力すれば、きちんと表示されます。
結果は文字化けです。
(◆◆の中に(?)v')が見れました。
> ・読み込んだテキストがどんな文字列になっているか、1文字1文字ascWでコードを調べる
-3でした。
> Shift_JISに無い「黒地の丸数字」が変換できずに「文字化け」になっている、というものです。
と自分も思います。
書き忘れていたのですが、したい事はExcelVBAを通して別のテキストファイルに❶を出力させる事です。
今の文字化け状態で別のテキストファイルにそのまま出力で、あるソフト変換にて正しく表示出来ればOKです。
果たしてそのUnicodeを維持していればいいのですが…
皆さんのアドバイスを元に色々、試しました。
結果、NGです。
発想を変えて、入力テキストファイルから出力テキストファイルではなく、シートのセルから出力テキストファイルに変更しました。
結果、OKです。
これは、セル自体にUnicodeを対応していると思っています。
自分だけでは、解決出来ず、皆さんのアドバイズに感謝しています。
ありがとうございました(__)。