• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:テキストデータExcel取込時の文字化け、その他)

テキストデータExcel取込時の文字化け、その他

このQ&Aのポイント
  • VBA初心者の方が、テキストデータをExcelに取り込む際の文字化けや空白行の問題について質問しています。
  • 質問者は、「.txt」ファイルを自動的に選び、カンマ区切りのデータをExcelに取り込みたいと考えています。
  • また、テキストデータを正しく取り込むためには、文字化けや空白行をスキップする方法が必要です。

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

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.3

読み込みたいファイルは、 カンマ区切りのテキストファイルで 拡張子が、.txtなんですね? また、そのテキストファイルの文字コードは何でしょうか? 改行コードはCRLFでいいですか? それは、おそらく、添付画像の右下で確認できるはずです。 それとも、文字コード、改行コードがファイルによって異なりますか? もし、文字コードがansi、改行コードがCRLFなら、 以下のように修正すれば、期待の動作になるはずです。 Private Const g_cnsTitle As String = "テキストファイル読み込み" Private Const g_cnsFilter As String = "全てのファイル (*.*),*.*" Sub Txt読み込み()  Dim varFileName As Variant  Dim intFree As Integer  Dim strRec As String  Dim strSplit() As String  Dim i As Long, j As Long  varFileName = Application.GetOpenFilename(FileFilter:="txtファイル(*.txt),*.txt", _  Title:="txtファイルの選択")  If varFileName = False Then   Exit Sub  End If  intFree = FreeFile '空番号を取得  Open varFileName For Input As #intFree 'txtファイルをオープン  i = 0  Do Until EOF(intFree)   Line Input #intFree, strRec '1行読み込み   If strRec <> "" Then    i = i + 1    strSplit = Split(strRec, ",") 'カンマ区切りで配列へ    For j = 0 To UBound(strSplit)     Cells(i, j + 1) = strSplit(j)    Next   End If  Loop  Close #intFree End Sub

tinybuddha33
質問者

お礼

丁寧なご回答ありがとうございます。形式はANTIではなかったのですが、ANTIに修正してご記載のソースで試してみるとうまくいきました!改行コードは添付いただいた箇所には表示されておらず不明でした。もともと8UTFのデータだったのですがそちらは別の方法が見つかり解決いたしました。これで2種類の文字コードとも問題なくExcelに取り込む方法がわかりました。ありがとうございます。

その他の回答 (2)

  • masnoske
  • ベストアンサー率35% (67/190)
回答No.2

No.1に少し補足します. 私は Excelにできることは Excelにやらせる主義なので. 理由は,そのほうがコーディングが簡単になるし,処理速度も速いからです.なので,私なら次のようにします. (1) の処理は,GetOpenFilenameなど好きな方法で良いでしょう. (2) の処理は,Excelの「外部データの取り込み」の「テキストファイル」をマクロ記録して使用します.  文字コードを選択できるので,ここで文字化けしないコードを選択してください.  記録されたマクロのファイルパスの部分を (1)で取り込んだファイル名に変数で置き換えれば OKです. (3)(4) の処理は,cvsファイルを取り込んだワークシートにフィルタを掛けて,データがある行のみ抽出し,それを Excel関数が入力されているワークシートにコピペします. csvファイルの選択以外は,マクロの記録だけで済むはずです.

tinybuddha33
質問者

お礼

ご回答ありがとうございます。一度目のご回答にあるようにExcelから手動でファイルを開いて区切り文字設定をすると勿論うまくいくのですが、頻繁に同じ処理をするため自動化の必要がありました。VBAでマクロを記録して処理する方法を教えてくださりありがとうございます!こちらも試してみます。

  • masnoske
  • ベストアンサー率35% (67/190)
回答No.1

まず、Excelにはcsvファイルを開く機能があるので、それで開いてみてください。 それでも文字化けしますか? 私なら、上記の方法で開いてから成形処理します。

関連するQ&A

専門家に質問してみよう