• 締切済み

EXCEL(VBA)

EXCELVBAで指定したフォルダ内にtextファイルをまとめるマクロを作成したいと思っています。 条件としましては、フォルダ名の5文字とtextファイルの最初の5文字を照合させて一致した場合そのフォルダにtexitファイルを収納していくといった感じです。 できればソースを教えていただくと助かります。

みんなの回答

回答No.3

Option Explicit Sub TextCheck() Const cnsDIR = "*.txt" Const cnsPATHNAME$ = "C:\フォルダパス\" Const strFOLDER$ = "check" '←入力フォルダ名 Const outBASENAME$ = "outfile.txt" '←出力ファイル名 Dim strPATHNAME$, strFILENAME$, outFILENAME$ Dim Irec$, inOK%, inNG%, outCNT! strPATHNAME = cnsPATHNAME & strFOLDER & "\" outFILENAME = cnsPATHNAME & strFOLDER & "\" & outBASENAME 'ファイル名の取得 strFILENAME = Dir(strPATHNAME & "*.txt", vbNormal) '出力ファイルオープン Open outFILENAME For Output As #1 inOK = 0: inNG = 0: outCNT = 0 'ファイルが見つからなくなるまで繰り返す Do While strFILENAME <> ""  '出力ファイルを対象としないように  If strFILENAME <> outBASENAME Then  '条件   If Left(strFILENAME, Len(strFOLDER)) = strFOLDER Then    inOK = inOK + 1    Open strPATHNAME & strFILENAME For Input As #2    Line Input #2, Irec    '出力    Print #1, Irec: outCNT = outCNT + 1    Do Until EOF(2)    '次のレコード入力     Line Input #2, Irec     '出力     Print #1, Irec: outCNT = outCNT + 1     Loop    Close #2   Else    inNG = inNG + 1   End If  End If  '次のファイル名を取得  strFILENAME = Dir() Loop Close #1 MsgBox ("対象:" & inOK & " 対象外:" & inNG & " 出力件数:" & outCNT) End Sub 主旨があってますか?環境設定は、ご自分で。

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

良く質問者にあるが、 下記のようにも取れることが判らないのかな。 フォルダ内にtextファイルをまとめるマクロ、の意味が2義的で不明瞭。 ●在るフォルダのテキストファイル「のすべて)をテキストファイルだけ別フォルダに写す ●在るフォルダの指定のテキストファイルを別のあるフォルダに写す ●在るフォルダのすべて(または指定の)のテキストファイルをレコード的に寄せ集めて、指定したフォルダ内の1本のテキストファイルにする。 など。 ーーー 在るフォルダのテキストファイルをとらえつくすコード テキストファイルを読むコード、書き出すコード 別フォルダにファイルを写すコード などは VBScriptの本や、WEBのGoogleでも照会すれば、コード実例が出てくる。 この質問は、課題を丸投げしているが、回答者などは皆相当長期の苦労を経て経験を積んでいるのだ。

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.1

フォルダ名はどうやって取得させようとしていますか? どこかのセルにフォルダ名を書いておく? InputBoxを使う? textファイルはどこにあるのですか? フォルダ名の5文字、とはどういう意味ですか? 5文字のフォルダがある? 6文字以上のフォルダの最初の5文字? あなたはどの程度VBAを解っているのでしょうか? プログラムを書いてあげたら、それをどうやって実行させるか解りますか? 簡単なプログラムなら書けますか?

関連するQ&A