VBAで文字化けする問題についての対策とは?

このQ&Aのポイント
  • VBAを使用してテキストファイルをエクセルに貼り付ける際に文字化けが発生する問題について検討しています。
  • 現在はアプリからのcsv変換を行っており、手作業でセルに貼り付けることで問題なく表示されています。
  • しかし、VBAを使用すると文字化けが発生する原因が分からず困っています。同じ問題に遭遇した人はいないでしょうか?対策方法を教えていただけると助かります。
回答を見る
  • ベストアンサー

VBA(テキストファイルのデータ コピー)

質問No.773038にて 回答No.5で 実際にやってみると 確かに動作は抜群に質問通りですが 文字化けして エクセルに貼られています。 肝心の テキストデータの保存方法が悪いのか  検討が付きません。 私個人は アプリから csv 変換用があり やっているのです。しかし エクセルにて手作業にて テキストファイルウィザードで カンマやタブの区切り・・・ 元のファイルは 932 日本語(シフト JIS) フィールドの区切りは セミコロンとしてやり セルにしてやると 確かに問題なく 文字化けしません 何故 VBAでやると 文字化けするのか 原因がわかりません。 どなたか 文字化けに出会った人はいませんか? 対応策があれば ご教授願います。

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1620/2460)
回答No.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

otome1102014
質問者

お礼

やはり テキストデータの保存方法の種類なのか 構文がまずいのか 悩殺しまして やはり 構文がまずかったようです。 人によって こんなに差が出るとは 思いませんでした。 お世話かけまして ありがとうございました。 今後もよろしく!!

その他の回答 (4)

  • kkkkkm
  • ベストアンサー率65% (1620/2460)
回答No.4

> カンマ区切りではなく 文字化けしてセミコロン区切りになっています。 失礼しました。 Ary = Split(InData, ";") にすると文字化けは別として区切りは正常になります。Trimも不要だと思うので外しました。 あと、もとのデータが2行で一塊なのかどうか、1行で一塊でしたら Const RwSet As Integer = 2 の2を1にする必要があります。1ならFor~nextが不要なのですが元のコードを利用するという事で。

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

どんなデータが文字化けするのかもう少し情報がないと原因はつかみにくいですね。 質問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側では区切り位置ボタン>「区切り位置指定ウイザード」で各列の「列のデータ形式」を指定すればいいでしょう。 外していたらすいません。

otome1102014
質問者

補足

メモ帳に「1-2-3;02E02;0001;1/30;10 AM」と入力して、これをコピーしてExcelに貼り付けて区切り位置ボタン>「区切り位置指定ウイザード」で区切り文字をセミコロンにして他は何も指定しないで区切ってみてください。 そうすれば2001/2/3 | 2.00E+02 |  1 | 1月30日 | 10:00 AM になります 確かに その通りに表示です それに、列の属性は指定していません。 ほかの方法を 考えます 検討して下さってありがとうございます。

  • kkkkkm
  • ベストアンサー率65% (1620/2460)
回答No.2

質問No.773038の回答にあるVBAでは区切りはスペースであるという前提で作成されています。カンマ区切りのCSVで実行すると文字化けするかどうかは別として正常にデータが区切られないと思います。 カンマ区切りでしたら Ary = Split(Trim(InData), ",") に変更する必要があります。

otome1102014
質問者

補足

カンマ区切りではなく 文字化けしてセミコロン区切りになっています。 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)
回答No.1

状況がよくわかりませんが、エクセルVBAでテキストを読み込む場合、そのファイルの文字コードはシフトJIS前提だと思います。 もし読み込むファイルの文字コードが、UTF-8とか、UNICODEであれば、それをプログラムで指定してあげないと、文字化けします。 検索で”VBA 文字化け”とすれば、いろいろ情報が得られます。 また、VBA内にて、処理のどの段階で文字化けしているか、デバックしてみるのもいいと思います。

関連するQ&A

  • vbaでテキストファイル(*.txt)を取込みたい

    vba初心者です。 Application.Dialogs(xlDialogOpen).Showで選択したテキストファイル(***.txt)をテキストファイルウィザードで、タブ、カンマ、スペース区切りで、エクセルファイルに取り込むマクロを組みたいのですが? 何度やってもうまくいきません。 ご教示願えないでしょうか! excel2002を使用してます。 よろしくお願いします。

  • CSVファイルをカンマ区切りのテキストファイルに直したい!

    CSVのエクセルファイルを文字化けすることなく、カンマ区切りのテキストファイルにしたいのですが、どうすればよろしいのでしょうか?

  • ExcelでのCSVファイルの編集について、

    ExcelでのCSVファイルの編集について、 オートフィルタ機能を使いたいため、 ExcelでCSVファイルの編集しようとしているのですが、ちょっと苦戦しています。。。 私が試してみたこと 1.もとのCSVファイルの拡張子を○○.csv → ○○.txtに変更。   ↓ 2.Excelの「開く」からその○○.txtを読み込む。   ↓ 3.テキストファイルウィザードに従い、   1「カンマやタブなどの区切り文字によって~ 」にチェック   2「区切り文字」→ カンマ、「文字列の引用符」 → "   3「列のデータ形式」 → 文字列 ※090などの数字を、90と先頭の0を消されないように 上記のような手順でCSVファイルを取り込み、編集を終え、 保存する時は   「○○.txtにはテキスト(タブ区切り)と互換性のない機能が含まれている可能性があります。    この形式でブックを保存しますか?」 → このまま保存するため「はい」を選択 これでバッチリOK!…かと思われたのですが、 元の編集前の○○.txt は"名前","ヨミ","電話番号1", …… ""とカンマ区切りであったのが、 編集後の○○.txtは名前 ヨミ 電話番号1  …… タブ区切り(?) となってしまっています。 (CSVファイルとしてはタブ区切りでも問題ないのでしょうが…) どうすれば元のカンマ区切りの形式のまま保存できますでしょうか。 アドバイスよろしくお願い致します。

  • Access VBA CSVファイルのインポート

    お世話になります。 VBAにてCSVファイル(タブ区切り)をインポートするのに、 以下のように記述してますが、エラーとなります。 なお、インポート先のtempテーブルはインポートするCSVファイルの フィールドと同じ並びで予め作成したものです。 DoCmd.TransferText acImportDelim, , "temp", path, True 「実行時エラー2391 貼り付け先のtempテーブルには、'フィールド1_ フィールド2_フィールド3'フィールドがありません。」 このエラーを見る限り、フィールド1~3が一つのフィールドとして 認識されているように見受けられます。 タブ区切りなのか、カンマ区切りなのかを指定するようなパラメタは あるのでしょうか。 なお、当該CSVファイルをウィザードより手動でインポートする分には 問題無くインポート出来ます。 ************** インポートするCSVファイルはユーザーにより見出し(フィールド)の 並びが異なる場合がある為、インポート定義を予め作っておくことが できない状況です。 ご教授の程、宜しくお願い致します。

  • VBAでテキストファイルからデータを読み込む方法

    VBAでテキストファイルからデータを読み込む方法を探しています。 コンマ区切りのデータを、エクセルに書き込みたいです。 テキストファイルにはコンマ区切りで6個のデータを書き込んであります。 それを、セルD3からD7に書き込む方法を教えていただきたいです。よろしくお願いします。

  • テキストファイルのデータ区切り文字(制御文字)について

    テキストファイルにデータを保存しているのですが、区切り文字タブ\tはフィールドの区切りに使っています。 その状態で、仮に1つのフィールドにデータを詰め込む場合、,(カンマ)で区切った場合にデータ自体に金額の,があった場合、誤動作します。フィールドの区切りはタブ\tは普通ですが、1つのフィールドに複数データを持たせる場合の区切り文字は\0など使っても問題ないのでしょうか? 環境はWindows, Linux両方で使います。\0を使ってそれが文字列の最後とまた誤動作しても嫌です。 皆さんは\t以外にテキストデータの区切りにどのような制御文字を使っていますか?ちなみに改行は1レコードの区切り文字です。

    • ベストアンサー
    • Perl
  • テキストファイルウィザードを使用したCSVファイル読み込みの挙動について【Excel2003】

    テキストファイルウィザードを使用したCSVファイル読み込みの挙動について【Excel2003】 <CSVファイル例> "aaaa","bbb<改行コード 0d0A>bb","ccc" 上記のようなCSVファイルを、 ダブルクリックにてExcel起動すれば正常に表示されますが、 テキストファイルウィザード(データ→外部データ取り込み→データの取り込み) を使用して、読み込みを行うと改行されて表示されてしまいます。 これは、Excelの仕様なのでしょうか? ご存知の方いらっしゃいましたら教えていただけますでしょうか? 現在の本質的な問題は、 ------------------------------------------------------------------- Excel2003にて、文字コードがUTF-8のCSVファイルを下記方法にて読み込む ・テキストファイルウィザードを使用 ・文字コードをUTF-8 ・カンマ区切り設定 で読み込みを行うと文字化けしないで表示されるのですが ダブルコーテーション中のデータ内に改行コード0d0aが含まれると 改行されてしまいます。 ------------------------------------------------------------------- と言う現象の調査をしております。

    • 締切済み
    • PHP
  • テキストファイルをエクセルで開く時、編集して開けませんか?

    すごく初歩的な質問で申し訳ないのですが・・・ お客さんからCSV形式(カンマ編集)のテキストファイルをもらったのですが、エクセルでファイルを開く時、すぐに開いてしまい困ってます。 例えば、カンマ編集していないテキストファイルだったら、開く時に、まず『テキストファイルウィザード』なるボックスが開いて、どこで区切るとか、どんな文字タイプだとかを指定してから開く事ができますよね? CSV形式のファイルでも、この『テキストファイルウィザード』から指定をしてから開く事はできないのでしょうか? 何故先に指定をしたいかと言うと、カンマで区切っている値を編集してから開きたいのです。 開いてから文字の指定しようと思っても、数字のみの値だと、前の0が消えてしまってて編集不可能になるんです。 例えば、6桁の数字のみのコードがセットされている場合、『000123』となっているものが、開くと『123』となり前の0が消えてしまうのです。 どなたか良い方法を教えて下さい! エクセルのバージョンは、Excel 2000 ウィンドウズ98の環境です。

  • カンマ区切りCSVファイルをVBAで読み込みたい

    こんにちは。EXCELのVBAに詳しい方、どうか教えてください! カンマ区切りCSVファイルをEXCELに読み込みたいのですが、 CSVファイルのデータが金額のため、データ自体にもカンマが含まれていて、 金額のカンマでも分割されてEXCELのセルに収まってしまいます。 データの区切りのカンマと、金額のカンマを区別して読み込む良い方法はないでしょうか。 とても困っているので、お解りになる方どうかご回答をお願いいたします。 ・CSVファイルのデータ   1,000 , 2,000 , 1,500 , 3,000 , 1,000 , 2,500 , 2,000  ↑金額のカンマでデータが分割されないように読み込みたいのですが・・・

  • テキストファイル

    教えてください。テキストファイルをエクセルで開き、データを加工した後、カンマ区切りのテキストファイル(csvではなくて)には保存できないのでしょうか?ソフトが必要ならフリーソフトが良いのですが、良いものがあったら教えてください。

専門家に質問してみよう