- ベストアンサー
VBAで文字化けする問題についての対策とは?
- VBAを使用してテキストファイルをエクセルに貼り付ける際に文字化けが発生する問題について検討しています。
- 現在はアプリからのcsv変換を行っており、手作業でセルに貼り付けることで問題なく表示されています。
- しかし、VBAを使用すると文字化けが発生する原因が分からず困っています。同じ問題に遭遇した人はいないでしょうか?対策方法を教えていただけると助かります。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
No2No4です。 試しに以下のコードで開いてみてください。新しいファイルで開きます。 Sub Example() Dim FileName As Variant FileName = Application _ .GetOpenFilename("テキスト ファイル(*.csv;*.txt),*.csv;*.txt") If FileName = False Then Exit Sub Workbooks.Open FileName:=FileName, Format:=4 End Sub
その他の回答 (4)
- kkkkkm
- ベストアンサー率66% (1719/2589)
> カンマ区切りではなく 文字化けしてセミコロン区切りになっています。 失礼しました。 Ary = Split(InData, ";") にすると文字化けは別として区切りは正常になります。Trimも不要だと思うので外しました。 あと、もとのデータが2行で一塊なのかどうか、1行で一塊でしたら Const RwSet As Integer = 2 の2を1にする必要があります。1ならFor~nextが不要なのですが元のコードを利用するという事で。
- nishi6
- ベストアンサー率67% (869/1280)
どんなデータが文字化けするのかもう少し情報がないと原因はつかみにくいですね。 質問773038の解答で行っていることは、2行(指定行)で1データの半角スペースで区切られたテキストファイルを読んで、1行(の位置)にしてExcelに貼り付けています。無条件の貼り付けです。質問者様はsplit関数の区切り文字にセミコロンを指定されている? 例えば、メモ帳に「1-2-3;02E02;0001;1/30;10 AM」と入力して、これをコピーしてExcelに貼り付けて区切り位置ボタン>「区切り位置指定ウイザード」で区切り文字をセミコロンにして他は何も指定しないで区切ってみてください。 「2001/2/3 | 2.00E+02 | 1 | 1月30日 | 10:00 AM」 のように「文字化け」するはずですが、属性を指定していないのでExcelの仕様になります。質問773038のモジュールで行われているのはこれと同じです。 >手作業にて~セルにしてやると 確かに問題なく 文字化けしません どんな手作業かわかりません。列の属性を指定していませんか? >対応策があれば ご教授願います。 業務でテキストファイルを読むときは、ウィザードで「列のデータ形式」を指定しています。 この場合は、テキストファイルの方が複数行で1データを表しているはずなので、テキストファイルの複数行を1行にするプログラムを作り、1行単位にしたファイルに対して、Excel側では区切り位置ボタン>「区切り位置指定ウイザード」で各列の「列のデータ形式」を指定すればいいでしょう。 外していたらすいません。
補足
メモ帳に「1-2-3;02E02;0001;1/30;10 AM」と入力して、これをコピーしてExcelに貼り付けて区切り位置ボタン>「区切り位置指定ウイザード」で区切り文字をセミコロンにして他は何も指定しないで区切ってみてください。 そうすれば2001/2/3 | 2.00E+02 | 1 | 1月30日 | 10:00 AM になります 確かに その通りに表示です それに、列の属性は指定していません。 ほかの方法を 考えます 検討して下さってありがとうございます。
- kkkkkm
- ベストアンサー率66% (1719/2589)
質問No.773038の回答にあるVBAでは区切りはスペースであるという前提で作成されています。カンマ区切りのCSVで実行すると文字化けするかどうかは別として正常にデータが区切られないと思います。 カンマ区切りでしたら Ary = Split(Trim(InData), ",") に変更する必要があります。
補足
カンマ区切りではなく 文字化けしてセミコロン区切りになっています。 Title;Artist;Album;Track;Year;Length;Size;Last Modified;Path;Filename; r0s0M0;「丙0・ヒ0;14.01 g燈・・ュ0・ー0;1;2014;283;4.31 こんな感じです
- lv4u
- ベストアンサー率27% (1862/6715)
状況がよくわかりませんが、エクセルVBAでテキストを読み込む場合、そのファイルの文字コードはシフトJIS前提だと思います。 もし読み込むファイルの文字コードが、UTF-8とか、UNICODEであれば、それをプログラムで指定してあげないと、文字化けします。 検索で”VBA 文字化け”とすれば、いろいろ情報が得られます。 また、VBA内にて、処理のどの段階で文字化けしているか、デバックしてみるのもいいと思います。
お礼
やはり テキストデータの保存方法の種類なのか 構文がまずいのか 悩殺しまして やはり 構文がまずかったようです。 人によって こんなに差が出るとは 思いませんでした。 お世話かけまして ありがとうございました。 今後もよろしく!!