• ベストアンサー

テキストファイルを開く際のFor文の使い方

質問です。あるフォルダに入っているテキスト形式のデータ10個をエクセルで開いていくVBAのプログロムを書いているのですが、エラー文で「i.txtがありません」と表示されます。私の書いたプログラムは下記です。 Sub テスト() テスト Macro Dim i As Integer For i = 0 To 5 ChDir "C:\Documents and Settings\データ" Workbooks.OpenText Filename:= _ "C:\Documents and Settings\データ\i.txt" _ , Origin:=932, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _ xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _ Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _ TrailingMinusNumbers:=True Next i End Sub このプログラムの目的は、テキストデータの入っているフォルダを他の名前に変更したときも、その中に入っているテキストデータ10個をエクセルで展開するためです。おそらく"C:\Documents and Settings\データ\i.txt"のiの部分が間違えていると思うのですが、どうすればいいでしょうか?よろしくお願いします。

  • sdfa
  • お礼率50% (151/298)

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

  • ベストアンサー
noname#99913
noname#99913
回答No.1

次のように変更すればいいのではないでしょうか。 "C:\Documents and Settings\データ\i.txt"          ↓ "C:\Documents and Settings\データ\" & i & ".txt"

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

コードばっかり書いて、中身を説明してない。 C:\Documents and Settings\データフォルダの中の 1.txt,2.txt,3.txt・・といったファイル名のファイルを開きたいということか。 プログラムの5回のOpenの繰り返しと、 >テキストデータの入っているフォルダを他の名前に変更したときも、その中に入っているテキストデータ10個をエクセルで展開するためです、の10個とはどういう関係か。書き間違い? >フォルダを他の名前に変更したときも それはC:\Documents and Settings\データ\の部分を変えることになるのでは? なぜこんなことを書いているのか。このままでは旨く走らないのは 当たり前。 ーー フォルダの中のエクセルブックを捉えて初めから10個ということか。 10個しかない場合は良いが、それ以上ある場合は名前を指定で捉えないとダメでは。 結局何がしたいのか良くわからない。このプログラムの目的は・・があるがために。 ーーー #1でご指摘のように データ\i.txt" _ は文字列(フルパスとファイル名を””で囲っているでしょう)の中に変数と思っているものiを書いて変化するだろうと思ってもダメ。初歩的なミス。文字列をiの前までと、iの次からに分割し、その間に ”・・・データ\" & i & ".txt" _・・のように結合しないとだめ。 本当はiを文字列化して結合するのだが、VBAでは上記の書き方でも 半角の1,2・・の場合はOK。

関連するQ&A

  • テキストファイルを開く際のFor文の使い方

    質問です。あるフォルダに入っているテキスト形式のデータ10個をエクセルで開いていくVBAのプログロムを書いているのですが、エラー文で「データ_i.txtがありません」と表示されます。私の書いたプログラムは下記です。 Sub テスト() テスト Macro Dim i As Integer For i = 0 To 5 ChDir "C:\Documents and Settings\データ" Workbooks.OpenText Filename:= _ "C:\Documents and Settings\データ\_i.txt" _ , Origin:=932, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _ xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _ Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _ TrailingMinusNumbers:=True Next i End Sub このプログラムの目的は、テキストデータの入っているフォルダを他の名前に変更したときも、その中に入っているテキストデータ10個をエクセルで展開するためです。おそらく"C:\Documents and Settings\データ\_i.txt"のiの部分が間違えていると思うのですが、どうすればいいでしょうか?よろしくお願いします。

  • エクセル マクロ 教えてください

    お世話になります エクセルのマクロ記録を使った結果が下記のようになりました。 そこで、ファイルは自分で選択して開きたいと思い 色々調べた結果 Application.GetOpenFilenameを使用すればよい事がわかりましたが、どの部分を変更すればよいのかわかりません やりたいことは、txtファイルの中身の不要な部分を削除して必要な部分だけを取り出したいのです。 どうぞ、よろしくお願いします。 Sub Macro1() ' ChDir "C:\Documents and Settings\My Documents\next\aaa" Workbooks.OpenText Filename:= _ "C:\Documents and Settings\My Documents\next\aaa\aaa.txt" _ , Origin:=932, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _ xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, _ Comma:=False, Space:=True, Other:=True, OtherChar:="(", FieldInfo:= _ Array(Array(1, 9), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 9), Array(7 _ , 9)), TrailingMinusNumbers:=True Cells.Select Cells.EntireColumn.AutoFit End Sub

  • Excel VBAでテキストを開く際の表示形式

    恐れ入りますが、ご存知の方、ご教授願います。 Excel VBAにてテキストファイルを開く際に、表示形式を"標準"ではなく"文字列"で取り込もうと思います。 "文字列"にするにはVBAで下記のように記述します。 ------------------------------------------------------------------ Workbooks.OpenText Filename:= _ sFileName _ , Origin:=932, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _ xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _ Comma:=False, Space:=False, Other:=False, FieldInfo:=Array( Array(1, 2), Array(2, 2), Array(3, 2)) , TrailingMinusNumbers:=True ------------------------------------------------------------------ FieldInfo:=部分に列数だけArray(x, 2)を指定しますが、一括で"文字列"指定することは可能でしょうか。 恐れ入ります。ご教授願います。

  • VBA テキストclose

    初めまして。VBAでマクロを作成しています。 今、sheet上のあるボタンを押したら、テキストファイルのデータをカンマ刻みで読み出し、シートに表示しています。 記憶マクロで作成したのですが、以下のコードはtextファイルをopenにしたままなので、closeしたいのです。(外部からテキストファイルに書き込みたいため、openのままであると書き込みができない)。 以下のコードを修正してテキストファイルをクローズさせる方法を 教えていただけないでしょうか?  宜しくお願い致します。 Sub ボタン1_Click() ' ' ボタン1_Click Macro ' マクロ記録日 : 2008/8/10 ユーザー名 : Matsumura ' ' ChDir "C:\Documents and Settings\Owner\デスクトップ\List" Workbooks.OpenText Filename:= _ "C:\Documents and Settings\Owner\デスクトップ\List\DBへ登録.txt", Origin:=932, _ StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=True _ , Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), _ Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)), TrailingMinusNumbers:=True Columns("A:A").ColumnWidth = 14.38 Application.CommandBars("Forms").Visible = False Columns("B:B").ColumnWidth = 14.38 Columns("C:C").ColumnWidth = 14.38 Columns("D:D").ColumnWidth = 14.38 Columns("E:E").ColumnWidth = 14.5 Range("E1").Select Columns("E:E").ColumnWidth = 14.38 Columns("F:F").ColumnWidth = 14.38 Columns("E:E").ColumnWidth = 16.25 Columns("A:F").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Range("B3").Select Rows("1:1").RowHeight = 26.25 Range("A1:F1").Select With Selection.Font .Name = "MS Pゴシック" .Size = 18 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With Selection.Font.ColorIndex = 3 Selection.AutoFilter End Sub

  • UTF-8のデータを複数開いて編集したい

    皆様のお力をお貸しください 基本がわかってないために所々おかしなところがあるかも知れませんが宜しくお願いします。 UTF-8で書かれたxmlデータをエクセルで開いて編集して保存したいのですがうまくいきません。 Sub test1() Dim xmlFileName As Variant Dim F_Filter As String Dim i As Integer F_Filter = "データ,*.txt" xmlFileName = Application.GetOpenFilename(filefilter:=F_Filter, MultiSelect:=True, Title:="ファイル選択") If IsArray(xmlFileName) Then For i = 1 To UBound(xmlFileName) Workbooks.OpenText Filename:=xmlFileName(i), _ Origin:=932, StartRow:=1, DataType:=xlDelimited, TextQualifier _ :=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:= _ False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _ TrailingMinusNumbers:=True MsgBox xmlFileName(i) ActiveWorkbook.Close Next End If End Sub Origin:=932は Origin:=-535 だと思ってください。(家だとなぜかエラーのため) 一つはこんな感じです。 これだと連続編集できるのですが拡張子がxmlだとスクリプトエラー となってしまうため まず拡張子を手で.txtに変えています。 二つ目は Sub OpenFile() Dim xmlFileName As Variant Dim F_Filter As String Dim NewName As String F_Filter = "データ,*.xml" xmlFileName = Application.GetOpenFilename(filefilter:=F_Filter, MultiSelect:=False, Title:="ファイル選択") If xmlFileName = False Then MsgBox "キャンセルしました" Else NewName = Left(xmlFileName, InStrRev(xmlFileName, ".", -1, vbTextCompare)) & "txt" Name xmlFileName As NewName Workbooks.OpenText Filename:=NewName, _ Origin:=932, StartRow:=1, DataType:=xlDelimited, TextQualifier _ :=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:= _ False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _ TrailingMinusNumbers:=True MsgBox xmlFileName ActiveWorkbook.Close Name NewName As xmlFileName End If End Sub これだと拡張子を変更してくれるのですが連続編集できません。 拡張子を自動で変更しつつ連続編集できないものでしょうか。 というのも自作なのですがすべてつぎはぎでできているためうまくできないのです。どうぞ宜しくお願いします。 あわせて編集したあとUTF-8で保存したいのですがこちらのコード もわかりましたら宜しくお願いします。

  • 【Excel2013】特定のセルを指定したくない

    下記マクロはD8:D80までのセルに入力されている文字を「文字列」にするマクロです。 Range("D8:D80").Select Selection.TextToColumns Destination:=Range("D8"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _ Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _ :=Array(1, 2), TrailingMinusNumbers:=True Range("D8").Select End Sub 同じ作業を他のセルでも実行することが多々あるため、文字列にしたいセルを選択した状態でマクロを実行したいのです。 どのように設定すればよろしいのでしょうか?

  • 【バッチファイル】コマンド上で書いた文字をテキストに表示

    コマンド上で入力した文字を、元々あるテキスト(メモ帳)に 書き出したいのですが、どなたかご存知の方、ご教授願いますm(_ _)m 例)、 ping 192.168.*.***>"C:\Documents and Settings\=====\デスクトップ\%COMPUTERNAME%.txt" ipconfig /all>>"C:\Documents and Settings\=====\デスクトップ\%COMPUTERNAME%.txt" "C:\Documents and Settings\=====\デスクトップ\%COMPUTERNAME%.txt">notepad.exe ↑で作成したテキストに、サービスタグ(仮に、XTZ1234とします)を追記したい ということです。 よろしくお願いいたします。

  • Excel2010 VBAでテキストファイル読込

     初めて質問させていただきます。  Excel2010のVBAで下記のようなマクロを組み、テキストファイルを読込したところ、データの一部が誤変換されてしまいます。  誤変換内容  11/12/29 →2029/11/12  マクロを使用せず、Excelから直接テキストファイルウィサードを使って読み込んだ場合には、正しく「2011/12/29」となります。  (お恥ずかしい話ですが、Excelシートのセルに直接「11/12/29」と打ち込むと自動的に「2011/12/29」に変換されることを今回初めて知りました。)  同一項目には「11/12/29」形式と「20111229」形式が混在しており、「11/12/29は2011/12/29」、「20111229はそのまま」セルに格納するよう依頼されています。  従って、Array(1, 2)で文字列やArray(1, 5)でYMD形式の日付へ同一項目のデータを固定することはできなくなっております。  テキストデータは「カンマ区切り」の35項目です。  データはネットワーク内の他のPCドライブに保存されています。  因みに「 Workbooks.OpenText Filename:=」以下は、Excelのマクロ記録で取得したものです。  お忙しいところ恐縮ですが、よろしくお願いいたします。 【作成したマクロ】 Sub 読込() With CreateObject("WScript.Shell") .currentdirectory = "\\コンピューター名\c\フォルダ名\" End With Const cnsTITLE = "テキストファイル読み込み処理" Const cnsFILTER = "全てのファイル (*.*),*.*" Set xlAPP = Application xlAPP.StatusBar = "読み込むファイル名を指定して下さい。" strFILENAME = xlAPP.GetOpenFilename(FileFilter:=cnsFILTER, _ Title:=cnsTITLE) If StrConv(strFILENAME, vbUpperCase) = "FALSE" Then Exit Sub Workbooks.OpenText Filename:=strFILENAME, Origin:=932, _ StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=True _ , Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), _ Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), _ Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15, 1), Array( _ 16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1), Array(22, 1), _ Array(23, 1), Array(24, 1), Array(25, 1), Array(26, 1), Array(27, 1), Array(28, 1), Array( _ 29, 1), Array(30, 1), Array(31, 1), Array(32, 1), Array(33, 1), Array(34, 1), Array(35, 1)) _ , TrailingMinusNumbers:=True End Sub

  • ワイルドカードの記述が、原因でしょうか?

    下記コードが、ついこの前までは、きちんと "A?07??????.CSV" を読み込んでたんですが、 今は、 "検索条件を満たすファイルはありません。"  となってしまいます。 1、ワイルドカードの記述が、おかしいでしょうか? 2、フォルダ名は、漢字等はやめて、半角英数字にしたほうがよいのでしょうか? 3、このような、現象は、よくあることでしょうか? 以上 原因がわかりませんので、何卒ご教示くださいませ。 ----------------- Private Sub TEST() Dim myFS As FileSearch Dim i As Long ChDir "C:\Documents and Settings\Owner\デスクトップ\ああ" Set myFS = Application.FileSearch With myFS .LookIn = "C:\Documents and Settings\Owner\デスクトップ\ああ" .Filename = "A?07??????.CSV" If .Execute > 0 Then For i = 1 To .FoundFiles.Count '見つかったファイルを一つずつ開く Workbooks.OpenText Filename:=.FoundFiles(i), _ StartRow:=1, _ DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, _ Comma:=True 'ああ.xlsブックに移動 Sheets(1).Move after:=Workbooks("ああ.xls").Worksheets(Workbooks("ああ.xls").Sheets.Count) Next i Else MsgBox "検索条件を満たすファイルはありません。" End If End With End Sub

  • EXCELでテキストファイルを取込むマクロの作成

    EXCELにテキストファイルを「カンマ区切り」で読み込みしたいのですが、 下記マクロの内容でデータはインポートされるのですが、 元のデータが悪いのか「読影日」と「検査日」の区切りが項目が別れてしまい 項目が二つほどずれてしまい正しくインポートされないのですが サンプル画面を添付いたします。 作成方法ご伝授お願いいたします。 sub macro1()  dim myFile as string  myfile = application.getopenfilename(filefilter:="テキストファイル(*.txt),*.txt")  if myfile = "False" then exit sub  workbooks.opentext _   filename:=myfile, _   datatype:=xldelimited, _   textqualifier:=xltextqualifierdoublequote, _   tab:=true, _   comma:=true, _   space:=true ’予備  activeworkbook.worksheets(1).move before:=thisworkbook.worksheets(1) end sub

専門家に質問してみよう