Excel VBA読み込みで文字化けが

このQ&Aのポイント
  • Excel VBAを使用してメールデータを読み込む際に文字化けが発生する問題についての解決方法を教えてください。
  • Mozilla Thunderbirdで保存したメールデータをExcel VBAで開くと文字化けが発生します。文字コード変換を試みましたが効果がありませんでした。
  • Excel VBAでテキストデータを読み込む際に文字化けが生じる問題があります。どのように解決したら良いでしょうか?
回答を見る
  • ベストアンサー

Excel VBA読み込みで文字化けが

Excel VBAにてメールデータを読み込むプログラムを組んでいます。 データの作り方は、 (1)Mozilla Thunderbirdでメールデータをtext形式で保存 (2)VBAにてtextデータを開く。 しかし読み込みを行うと、文字化けしたデータが表示されてしまいます。 どのように解決したらよいのでしょうか? 文字コード変換を行ってもダメでした。 Sub Read_mail_data() Const cnsTITLE = "テキストファイル読み込み処理" Const cnsFILTER = "全てのファイル (*.*),*.*" Dim xlAPP As Application ' Applicationオブジェクト Dim intFF As Integer ' FreeFile値 Dim strFileName As String ' OPENするファイル名(フルパス) Dim vntFileName As Variant ' ファイル名受け取り用 Dim strREC As String ' 読み込んだレコード名 Dim GYO As Long ' 収容するセルの行 Dim lngREC As Long ' レコード件数カウンタ ' Applicationオブジェクト取得 Set xlAPP = Application ' 「ファイルを開く」のダイアログでファイル名の指定を受ける xlAPP.StatusBar = "読み込むファイル名を指定して下さい。" vntFileName = xlAPP.GetOpenFilename(FileFilter:=cnsFILTER, Title:=cnsTITLE) ' キャンセルされた場合はFalseが返るので以降の処理は行わない If VarType(vntFileName) = vbBoolean Then Exit Sub strFileName = vntFileName ' FreeFile値の取得(以降この値で入出力する) intFF = FreeFile ' 指定ファイルをOPEN(入力モード) Open strFileName For Input As #intFF GYO = 1 ' ファイルのEOF(End of File)まで繰り返す Do Until EOF(intFF) ' レコード件数カウンタの加算 lngREC = lngREC + 1 xlAPP.StatusBar = "読み込み中です....(" & lngREC & "レコード目)" ' 改行までをレコードとして読み込む Line Input #intFF, strREC ' 行を加算しA列にレコード内容を表示(先頭は2行目) GYO = GYO + 1 ' 文字コードを変換する 'StrConv(strREC, vbFromUnicode) = a Cells(GYO, 1).Value = StrConv(strREC, vbFromUnicode) Cells(GYO, 1).Value = StrConv(strREC, vbFromUnicode) Cells(GYO, 1).Value = StrConv(strREC, vbFromUnicode) Cells(GYO, 1).Value = StrConv(strREC, vbFromUnicode) Cells(GYO, 1).Value = StrConv(strREC, vbFromUnicode) Cells(GYO, 1).Value = StrConv(strREC, vbFromUnicode) ' セルにデータを書き込む 'Cells(GYO, 1).Value = strREC Loop ' 指定ファイルをCLOSE Close #intFF xlAPP.StatusBar = False ' 終了の表示 MsgBox "ファイル読み込みが完了しました。 " & vbCr & "レコード件数=" & lngREC & "件", vbInformation, cnsTITLE End Sub

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

文字化けの原因が文字コードのためだと・・仮定して。 Ado.Stream で読み込んだらどうなりますかね。 Sub testAdoStream() Dim objStrm As Object Dim strTmp As String Dim i As Integer Const ReadLine As Integer = -2, ReadAll As Integer = -1 Set objStrm = CreateObject("ADODB.Stream") With objStrm .Charset = "ISO-2022-JP" .LineSeparator = -1 'CR=13, LF=10, CRLF=-1 .Open .LoadFromFile "D:\ThunderbirdMAIL.txt" End With Do Until objStrm.EOS i = i + 1 Cells(i, 1) = objStrm.ReadText(ReadLine) Loop objStrm.Close: Set objStrm = Nothing End Sub なお、Charset の "ISO-2022-JP" はあてずっぽうです。 Thunderbird は使ったことが有りませんので、ここまで。

kmwrod
質問者

お礼

色々試して、ず~っと悩んでいましたが、おかげさまで できました!本当にありがとうございます。

関連するQ&A

  • VBAの初心者でやりたいことがあるのですが、どうやっていいのか分かりま

    VBAの初心者でやりたいことがあるのですが、どうやっていいのか分かりません。 やりたいことは 1.フォルダを指定してCSVファイルを読み込む。 2.読み込んだCSVファイルを一行あたり1ファイルのエクセルファイルに書き込む。 3.完成したエクセルファイルを印刷する。 4.フォルダの中のファイルが無くなれば終了 としたいのですが、途中で頓挫しています。 宜しくお願いします。 Option Explicit sub READ_TextFile() Const cnsTITLE = "フォルダ内のファイル名一覧取得" Const cnsDIR = "\*.*" Dim xlAPP As Application Dim strPATHNAME As String Dim strFILENAME As String Dim GYO As Long Const cnsFILTER = "全てのファイル (*.*),*.*" Dim xlAPP2 As Application' Applicationオブジェクト Dim intFF As Integer' FreeFile値 Dim X() As Variant' 読み込んだレコード内容 Dim IX1 As Long' CSV項目カラムINDEX Dim lngREC As Long' レコード件数カウンタ Dim strREC As String' レコード領域 Dim POS1 As Long' レコード文字位置 Dim POS2 As Long' レコード文字位置 Set xlAPP = Application strPATHNAME = xlAPP.InputBox("フォルダ名を入力して下さい。", _ cnsTITLE, "C:\Documents and Settings\hidekazu_miyawaki\デスクトップ\") If StrConv(strPATHNAME, vbUpperCase) = "FALSE" Then Exit Sub If Dir(strPATHNAME, vbDirectory) = "" Then MsgBox "指定のフォルダは存在しません。", vbExclamation, cnsTITLE Exit Sub End If strFILENAME = Dir(strPATHNAME & cnsDIR, vbNormal) Set xlAPP2 = Application Do While strFILENAME <> "" GYO = GYO + 1 Cells(GYO, 1).Value = strFILENAME strFILENAME = Dir() Open strFILENAME For Input As #intFF GYO = 1 Do Until EOF(intFF) lngREC = lngREC + 1 xlAPP2.StatusBar = "読み込み中です(" & lngREC & "レコード目)" Line Input #intFF, strREC POS1 = 1 IX1 = 0 ReDim X(IX1) Do While POS1 <= Len(strREC) POS2 = InStr(POS1, strREC, ",", vbTextCompare) If POS2 < POS1 Then POS2 = Len(strREC) + 1 End If ReDim Preserve X(IX1) X(IX1) = Trim$(Mid$(strREC, POS1, POS2 - POS1)) If (((Left$(X(IX1), 1) = """") And (Right$(X(IX1), 1) = """")) Or _ ((Left$(X(IX1), 1) = "'") And (Right$(X(IX1), 1) = "'"))) Then X(IX1) = Trim$(Mid$(X(IX1), 2, Len(X(IX1)) - 2)) End If POS1 = POS2 + 1 IX1 = IX1 + 1 Loop GYO = GYO + 1 If IX1 >= 1 Then Range(Cells(GYO, 1), Cells(GYO, IX1)).Value = X End If Loop Loop Close #intFF xlAPP.StatusBar = False MsgBox "ファイル読み込みが完了しました。" & vbCr & _ "レコード件数=" & lngREC & "件", vbInformation, cnsTITLE End Sub

  • VBAでのテキストデータ追記

    VBAを使ってデータをテキストファイルに追記したいのですが、 A列だけじゃなく A列からF列までのデータを追記させたいと 考えているのですが、 どうやるのか理解できません。 教えていただけますでしょうか? -------------------------------------------------------------- Option Explicit ' テキストファイル書き出すサンプル Sub WRITE_TextFile() Const cnsTitle = "テキストファイル出力処理" Const cnsFilter = "テキストファイル (*.txt;*.dat),*.txt;*.dat" Dim xlAPP As Application ' Applicationオブジェクト Dim intFF As Integer ' FreeFile値 Dim strFileName As String ' OPENするファイル名(フルパス) Dim vntFileName As Variant ' ファイル名受取り用 Dim strREC As String ' 書き出すレコード内容 Dim GYO As Long ' 収容するセルの行 Dim GYOMAX As Long ' データが収容された最終行 Dim lngREC As Long ' レコード件数カウンタ ' Applicationオブジェクト取得 Set xlAPP = Application ' 「名前を付けて保存」のフォームでファイル名の指定を受ける xlAPP.StatusBar = "出力するファイル名を指定して下さい。" ' (1) vntFileName = xlAPP.GetSaveAsFilename(InitialFilename:="SAMPLE.txt", _ FileFilter:=cnsFilter, _ Title:=cnsTitle) ' キャンセルされた場合はFalseが返るので以降の処理は行なわない If VarType(vntFileName) = vbBoolean Then Exit Sub strFileName = vntFileName ' 収容最終行の判定(Excel認知の最終行から上に向かってデータがある行を探す) With ActiveSheet If .FilterMode Then .ShowAllData ' オートフィルタ解除 End With GYOMAX = Cells(65536, 1).End(xlUp).Row ' (2) If GYOMAX < 2 Then xlAPP.StatusBar = False MsgBox "テキストをA列2行目から入力してから起動して下さい。", , cnsTitle Exit Sub End If ' FreeFile値の取得(以降この値で入出力する) intFF = FreeFile ' 指定ファイルをOPEN(出力モード) Open strFileName For Output As #intFF ' (3) ' 2行目から開始 GYO = 2 ' 最終行まで繰り返す Do Until GYO > GYOMAX ' A列内容をレコードにセット(先頭は2行目) strREC = Cells(GYO, 1).Value ' (4) ' レコード件数カウンタの加算 lngREC = lngREC + 1 xlAPP.StatusBar = "出力中です....(" & lngREC & "レコード目)" ' レコードを出力 Print #intFF, strREC ' (5) ' 行を加算 GYO = GYO + 1 Loop ' 指定ファイルをCLOSE Close #intFF xlAPP.StatusBar = False ' 終了の表示 MsgBox "ファイル出力が完了しました。" & vbCr & _ "レコード件数=" & lngREC & "件", vbInformation, cnsTitle End Sub -----------------------------------------------------------------------------

  • エクセルのCSV読み込みについて

    現在,以下の記述でエクセル上にマクロ実行ボタンを作成しました。 任意のCSVファイルをエクセルに取り込み利用する目的です。 実行ボタンを押すと,「実行時エラー ファイルにこれ以上データがありません。」として,記述中の 「Input #intFF, X(1), X(2), X(3), X(4), X(5), X(6), X(7) ' (2)」 部分が黄色になって止まってしまいます。 エクセル画面上には,希望通りのデータが出力されているようなので,このエラーが表示されなければデータの取り込みとしては問題ないのですが・・・。 どのようにこのエラーを回避し処理すればよいかかが分かりません。 どなたかご教示いただければ幸いです。 どうかよろしくお願いいたします。 Sub Macro4() ' CSV形式テキストファイル(7カラム)読み込みサンプル Const cnsTITLE = "テキストファイル読み込み処理" Const cnsFILTER = "CSV形式ファイル (*.csv),*.csv,全てのファイル(*.*),*.*" Dim xlAPP As Application ' Applicationオブジェクト Dim intFF As Integer ' FreeFile値 Dim strFileName As String ' OPENするファイル名(フルパス) Dim vntFileName As Variant ' ファイル名受取り用 Dim X(1 To 7) As Variant ' 読み込んだレコード内容 ' (1) Dim GYO As Long ' 収容するセルの行 Dim lngREC As Long ' レコード件数カウンタ ' Applicationオブジェクト取得 Set xlAPP = Application ' 「ファイルを開く」のフォームでファイル名の指定を受ける xlAPP.StatusBar = "読み込むファイル名を指定して下さい。" vntFileName = xlAPP.GetOpenFilename(FileFilter:=cnsFILTER, _ Title:=cnsTITLE) ' キャンセルされた場合はFalseが返るので以降の処理は行なわない If VarType(vntFileName) = vbBoolean Then Exit Sub strFileName = vntFileName ' FreeFile値の取得(以降この値で入出力する) intFF = FreeFile ' 指定ファイルをOPEN(入力モード) Open strFileName For Input As #intFF GYO = 1 ' ファイルのEOF(End of File)まで繰り返す Do Until EOF(intFF) ' レコード件数カウンタの加算 lngREC = lngREC + 1 xlAPP.StatusBar = "読み込み中です....(" & lngREC & "レコード目)" ' レコードを読み込む(このサンプルは7項目のCSV) Input #intFF, X(1), X(2), X(3), X(4), X(5), X(6), X(7) ' (2) ' 行を加算しA~G列にレコード内容を表示(先頭は2行目) GYO = GYO + 1 Range(Cells(GYO, 1), Cells(GYO, 7)).Value = X ' 配列渡し ' (3) Loop ' 指定ファイルをCLOSE Close #intFF xlAPP.StatusBar = False ' 終了の表示 MsgBox "ファイル読み込みが完了しました。" & vbCr & _ "レコード件数=" & lngREC & "件", vbInformation, cnsTITLE End Sub

  • CSVファイルをインポートするマクロについて

    CSVファイルをインポートするマクロを作成しようと思っているのが、作り方がわかりません。 アドバイスを下さい。 インポートするCSVの書式 "AAA","CC","DFD" "BBB","FF","HHH" "JJ","LL","JI" "Skip" "A","Y","JI","Y","JI" "B","L","JI","JI" "C","IL","JI" 1~3行目はエクセルのD3行,D4行,D5行 4行目はインポートしない 5行目以降はエクセルのA6行,A7行・・・にインポートしたいと思っております。 サンプルを作成して頂けないでしょうか。 下記のソースを元に作成しようとしているのですが、わからなくなってしまいました。 ◆作成途中のソース Sub READ_TextFile() Const cnsTitle = "テキストファイル読み込み処理" Const cnsFilter = "CSV形式ファイル (*.csv),*.csv" Dim xlAPP As Application ' Applicationオブジェクト Dim intFF As Integer ' FreeFile値 Dim strFileName As String ' OPENするファイル名(フルパス) Dim vntFileName As Variant ' ファイル名受取り用 Dim X() As Variant ' 読み込んだレコード内容 Dim IX1 As Long ' CSV項目カラムINDEX Dim GYO As Long ' 収容するセルの行 Dim lngREC As Long ' レコード件数カウンタ Dim strREC As String ' レコード領域 Dim POS1 As Long ' レコード文字位置INDEX Dim POS2 As Long ' レコード文字位置INDEX ' Applicationオブジェクト取得 Set xlAPP = Application ' 「ファイルを開く」のダイアログでファイル名の指定を受ける xlAPP.StatusBar = "読み込むファイル名を指定して下さい。" vntFileName = xlAPP.GetOpenFilename(FileFilter:=cnsFilter, _ Title:=cnsTitle) ' キャンセルされた場合はFalseが返るので以降の処理は行なわない If VarType(vntFileName) = vbBoolean Then Exit Sub strFileName = vntFileName ' FreeFile値の取得(以降この値で入出力する) intFF = FreeFile ' 指定ファイルをOPEN(入力モード) Open strFileName For Input As #intFF GYO = 13 ' ファイルのEOF(End of File)まで繰り返す Do Until EOF(intFF) ' レコード件数カウンタの加算 lngREC = lngREC + 1 xlAPP.StatusBar = "読み込み中です....(" & lngREC & "レコード目)" ' 行単位にレコードを読み込む Line Input #intFF, strREC ' (1) ' LineInputより自分で半角カンマを探しCSV→項目分割させる POS1 = 1 IX1 = 0 ReDim X(IX1) ' 配列を初期化 Do While POS1 <= Len(strREC) ' (2) POS2 = InStr(POS1, strREC, ",", vbTextCompare) ' (3) If POS2 < POS1 Then POS2 = Len(strREC) + 1 End If ReDim Preserve X(IX1) ' 配列要素数を再設定 X(IX1) = Trim$(Mid$(strREC, POS1, POS2 - POS1)) ' (4) ' シングルクォーテーション、ダブルクォーテーションで囲まれている場合は ' 両端文字を取り除く If (((Left$(X(IX1), 1) = """") And (Right$(X(IX1), 1) = """")) Or _ ((Left$(X(IX1), 1) = "'") And (Right$(X(IX1), 1) = "'"))) Then ' (5) X(IX1) = Trim$(Mid$(X(IX1), 2, Len(X(IX1)) - 2)) End If POS1 = POS2 + 1 IX1 = IX1 + 1 Loop ' 行を加算しレコード内容を表示(先頭は2行目) GYO = GYO + 1 If IX1 >= 1 Then Range(Cells(GYO, 1), Cells(GYO, IX1)).Value = X ' 配列渡し (6) End If Loop ' 指定ファイルをCLOSE Close #intFF xlAPP.StatusBar = False ' 終了の表示 MsgBox "ファイル読み込みが完了しました。" & vbCr & _ "レコード件数=" & lngREC & "件", vbInformation, cnsTitle End Sub

  • EXCELのVBAでEOFを誤認識

    すみません、ファイルからデータを読み込んでいるのですが、変なコードが入っているらしく、EOFはきちんと認識できず、困っています。 文字コードも何かわからなず、半角空白でもないようです。読み込みファイルの2行目の"ー"と"&"の間にある見えない文字コードです。(さくらエディタでは半角空白に見えてます。) 何なのかも私にはわかりませんが解決方法をご教授願います。このコードを削除するば良いですが、大量にあり手動では削除困難です。 (出来れば以下のサンプルプログラムを修正する形で教えてもらえると助かります。) 簡単なVBAコードと読み込みファイルをお付けしますので、解決策をご教授方よろしくお願いします。 (以下のコードでも問題は発生します。) 添付ファイルが付けれないし、コードは変換されて表示されそうです。。。 その場合はどうやって調べれば良いかご教授頂ければと思います。 ----------VBAプログラム(Excel2007で作成)---------- Option Explicit Sub testLoadFile() Dim intFF As Integer ' FreeFile値 Dim lngREC As Long ' レコード件数カウンタ Dim strREC As String ' レコード領域 Dim opnFileName As String ' FreeFile値の取得(以降この値で入出力する) intFF = FreeFile ' 指定ファイルをOPEN(入力モード) opnFileName = ActiveWorkbook.Path & "\loadtest.txt" Open opnFileName For Input As #intFF lngREC = 0 ' ファイルのEOF(End of File)まで繰り返す Do Until EOF(intFF) ' レコード件数カウンタの加算 lngREC = lngREC + 1 ' 行単位にレコードを読み込む Line Input #intFF, strREC Cells(lngREC, 1).Value = strREC Loop ' 指定ファイルをCLOSE Close #intFF End Sub --------読み込みファイルテキスト(3行のファイルです。)------------ "aaa","3" "cccー&","4" "bbb","5"

  • エクセル VBA テキストファイル書き出す応用?

    以下のページより、 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_040.html Option Explicit ' テキストファイル書き出すサンプル(2) Sub WRITE_TextFile2() Const cnsFILENAME = "\SAMPLE.txt" Dim intFF As Integer ' FreeFile値 Dim strREC As String ' 書き出すレコード内容 Dim GYO As Long ' 収容するセルの行 Dim GYOMAX As Long ' データが収容された最終行 ' 最終行の取得 GYOMAX = Range("A65536").End(xlUp).Row ' FreeFile値の取得(以降この値で入出力する) intFF = FreeFile ' 指定ファイルをOPEN(出力モード) Open ThisWorkbook.Path & cnsFILENAME For Output As #intFF ' 2行目から開始 GYO = 2 ' 最終行まで繰り返す Do Until GYO > GYOMAX ' A列内容をレコードにセット(先頭は2行目) strREC = Cells(GYO, 1).Value ' レコードを出力 Print #intFF, strREC ' 行を加算 GYO = GYO + 1 Loop ' 指定ファイルをCLOSE Close #intFF End Sub ------------------------------------------------------------- これを参考にしてテキストファイル書き出すのは出来たのですが、 今回は、ちょっと応用で以下のようにしたいです。 Sheet1のA2~A20までテキストファイル名が書いてあるとします。 また、Sheet2~Sheet20ぐらいまで、各Sheetに文章が入っているとします。 テキストファイルに書きだしたいのですが、 Sheet2の内容は、Sheet1のA2のファイル名 Sheet3の内容は、Sheet1のA3のファイル名 Sheet4の内容は、Sheet1のA4のファイル名 このようにしたいのですが、どのようにすればいいのか教えてください。 よろしくお願います。

  • ファイル書き出しのエクセルマクロ

    試行錯誤でマクロを作っているのですが、エラーが出てしまいます。 コンパイルエラー 定数式が必要ですと出てしまいます。 Const cnsFILENAME = "C:\" & の & で出ます。 どうすればいいのかお教えねがえませんでしょうか? よろしくお願いします。 (帰りに本を買って帰ります。。。) 'テキストファイル書き出す Dim S5 As Worksheet Set S5 = Worksheets("TEMP") Const cnsFILENAME = "C:\" & S5.Range("D4") & ".TXT" Dim intFF As Integer ' FreeFile値 Dim strREC As String ' 書き出すレコード内容 Dim GYO As Long ' 収容するセルの行 Dim GYOMAX As Long ' データが収容された最終行 ' 最終行の取得 GYOMAX = Range("A65536").End(xlUp).Row ' FreeFile値の取得(以降この値で入出力する) intFF = FreeFile ' 指定ファイルをOPEN(出力モード) Open ThisWorkbook.Path & cnsFILENAME For Output As #intFF ' 1行目から開始 GYO = 1 ' 最終行まで繰り返す Do Until GYO > GYOMAX ' A列内容をレコードにセット(先頭は2行目) strREC = Cells(GYO, 1).Value ' レコードを出力 Print #intFF, strREC ' 行を加算 GYO = GYO + 1 Loop ' 指定ファイルをCLOSE Close #intFF End Sub

  • ExcelVBAで書き出した文字が化ける

    お世話になります。 ExcelのVBAでテキストにタグをつけてxml形式で書き出すようにしたのですが、xmlの始めの文章で <?xml version="1.0" encoding="UTF-8" standalone="yes"?> で文字コード?を指定しているために書き出されたxmlをドリームウェーバーで開くと平仮名などの中身の文字が化けます。 MacのOSXを使っているためなのか、ADODBが使えないようです。 参考までにこんなプログラムです↓ Sub kaki_TextFile2() Const cnsFILENAME = "a.xml" Dim intFF As Integer ' FreeFile値 Dim strREC As String ' 書き出すレコード内容 Dim GYO As Long ' 収容するセルの行 Dim GYOMAX As Long ' データが収容された最終行 Worksheets("最終データ").Activate ' 最終行の取得 GYOMAX = Range("A65536").End(xlUp).Row ' FreeFile値の取得(以降この値で入出力する) intFF = FreeFile ' 指定ファイルをOPEN(出力モード) Open ThisWorkbook.Path & cnsFILENAME For Output As #intFF ' 2行目から開始 GYO = 2 ' 最終行まで繰り返す Do Until GYO > GYOMAX ' A列内容をレコードにセット(先頭は2行目) strREC = Cells(GYO, 1).Value ' レコードを出力 Print #intFF, strREC ' 行を加算 GYO = GYO + 1 Loop ' 指定ファイルをCLOSE Close #intFF End Sub といってもこちらから抜粋させていただいただけなのですが… http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_040.html VBもxmlも初心者同然なので、、、すみませんがよろしくお願いします。

  • ファイル内容を変換後に別フォルダへコピーしたい

    エクセルVBAにて 下記フォルダ状況となっている場合に C\元データ\複数のtxtファイル C\変換後データ 元のデータ内にあるtxtファイルの中身を変換し Open strFileName For Input As #intFF Do Until EOF(intFF)   Line Input #intFF, strREC GYO = GYO + 1 Cells(GYO, 1).Value = 付け加えたい文字 + strREC Loop 変換したファイルを C\変換後データへコピーしたいのですが どのようししたらよろしいのでしょうか? コピーしたファイル名は元のファイル名と同じにしたいです。

  • excel vba でファイルの読み込み失敗

    タイトルの通り、ファイルの読み込みがうまくいきません。 Dim objStrm As Object Dim strTmp As String Dim i As Integer Const ReadLine As Integer = -2, ReadAll As Integer = -1 Set objStrm = CreateObject("ADODB.Stream") Set xlAPP = Application ' 「ファイルを開く」のダイアログでファイル名の指定を受ける xlAPP.StatusBar = "読み込むファイル名を指定して下さい。" vntFileName = xlAPP.GetOpenFilename(FileFilter:=cnsFILTER, Title:=cnsTITLE) With objStrm .Charset = "UTF-8" 'charsetを変える?ISO-2022-JP→shift-jis→utf-8 .LineSeparator = -1 'CR=13, LF=10, CRLF=-1 .Open '.LoadFromFile "C:\****" 'ここの値を直接取得する←これはうまくいく .LoadFromFile "vntFileName" 'ここの値をダイアログで取得する←エラー End With Do Until objStrm.EOS i = i + 1 Cells(i, 1) = objStrm.ReadText(ReadLine) Loop objStrm.Close: Set objStrm = Nothing 色々教えて頂きまして、プログラムを組んだのですが、ダイアログの読み込み部分がうまくいきません。 直接データアドレスを入力すると、上手くいきます。 何とかダイアログから読み込めるようにできないでしょうか? よろしくお願いします。

専門家に質問してみよう