• 締切済み

VBAフォルダやファイル操作について

VBA初めての初心者です。 VBAのフォルダとファイル操作関連の質問です。(初心者です) 【やりたいこと】 画面から、 入力フォルダのパスを入力する・・・(1) 出力フォルダのパスとファイル名を入力する・・・(2) ・処理概要 入力されたフォルダ内のファイルを順次読み込み、 リネームして、出力フォルダに追加出力する。 (1)フォルダ内全ファイルを出力して終了する。 追加処理として、 (1)を複数入力できるようにしたいと思います。 ・詳細処理 出力フォルダのファイルネームは、連番であり、 画面での入力(2)ファイル名から連番したファイル名(+1していく) 出力するデータ内容は(1)のコピーのままでよい。 入力されたフォルダ内の全てのファイルを実行して終了する。 このようなプログラムなのですが、 初心者で、 わかりません。 思うようにコーディングしても 動きません???? どのように コーディングすればいいですか?

みんなの回答

  • fjdkslty
  • ベストアンサー率28% (9/32)
回答No.3

単純に、あとでいろいろ処理(3で、ディレクトリのパスとファイル名とつなげるなど) がしやすいよう、まず変数に入れておくのが便利と言いたかっただけです^^; それとも、変数は、お使いになったことはありませんか? (念のため。一般的なプログラミングと大まかな概念は同じです。 もしご存じなければ、参考URLなどをご覧になってください) 変数の扱いに不慣れであれば、まずは入力したパス名を 隠しシートに吐き出してしまっても良いと思います。 あと、VBAのリファレンスはお持ちですか? 私も初めてVBAを組んだときは、独学で似たようなコードを組みましたが、 全てのVBAの機能が掲載されている分厚いリファレンスが手元に1冊あると、ぐっと作業がしやすくなります。

参考URL:
http://pc.nikkeibp.co.jp/article/NPC/20070802/278891/
naogooqa
質問者

お礼

fjdksltyさん、ありがとう。 お礼が遅くなってすみませんでした。 「変数」、「シートに吐き出す」とかいうことも チャレンジしてみます。 また、 VBAのリファレンス所持のアドバイスも ありがとうございました。

  • fjdkslty
  • ベストアンサー率28% (9/32)
回答No.2

ちなみに、参考までに・・・。 私でしたら、大雑把に、以下の手続きを取ります。 1:入力・出力フォルダのパスを変数に入れる。 2:Dirで入力フォルダのパス内のファイルの一覧を出力する。 3:入力フォルダのパスとファイル一覧を繋げ、ファイルのパス名一覧を作成する。 4:Filecopyで3のファイルを出力フォルダのパスにコピーする。 詳細処理は理解が出来なかったのですが、 連番ならFor~Nextか、 もしくは3と4をLoopで回す際、FilecopyのDestinationに変数を利用し、+1する といったあたりです。 慣れないうちは、シート(隠し)に、パス名やファイル名を吐き出す仕様にすると、 処理を視認しやすいため、デバッグなどに役立つことと思います。

naogooqa
質問者

お礼

ありがとう! 作業手順1から4で、 概略が見えてきました。 dirを使用してみます。 ありがとうございました。 ? 1:入力・出力フォルダのパスを変数に入れる。・・・?? 変数に入れる? どういうことですかね?

  • fjdkslty
  • ベストアンサー率28% (9/32)
回答No.1

「コーディングしても」ということは、一応組んだのですよね? まずはデバッグを行って、どこで引っかかっているのかを検証しましょう。 それが分からないと、解決は出来ませんよ。

関連するQ&A

  • 開いているファイルをリネームする方法 vba

    エクセルvbaで、開いているファイルをリネーム保存することは可能なのでしょうか? リネームは、名前の書き換えという意味で、名前を付けて保存ではないです。 検索してみましたが、なかなか該当するものが見つけられません。 やりたいことは、フォルダ内にファイルは1つしか存在せず、セルA1に値が入力されると、その値でファイル名が随時変更されるようにしたいのですが、その他、どのようなvbaが可能でしょうか? エクセルvba、初心者です。 ネット検索で、必要なvbaを持ってきて使う程度のことしかできないので、自分で組み立てるレベルではありません。 できれば、キーワードではなく、できるだけ書いてくださると助かります。 バージョンは2003です。 どうぞ、お分かりになる方、教えてください。 よろしくお願いいたします。

  • フォルダ内のファイル名をプリントしたい

    フォルダ内のファイル名を一覧にしてプリントしたいのと ファイル名をリネームしたいのです 連番を付けたい訳ではなく ファイル名に書き足しと少しの削除です 上記の事が出来るツールはありませんでしょうか?

  • 【Excel VBA】ネットワーク上のとあるフォルダの削除

    OS:WindowsXP Excel:2003 現在、エクセルVBAで以下の処理を動かしています。 ・コンピューターAのフォルダB内の全ファイルを、  サーバーCのフォルダD内にコピー 今後は逆に、以下の処理を追加したいのです。 ・サーバーCのフォルダEを削除 VBAで可能でしょうか? またその場合は、どのようにコーディングすればよろしいでしょうか? よろしくお願いします。

  • VBAエクセル・・・フォルダ名を取得する

    VBA初心者です。 マクロで、ヘッダー部分にフォルダ名を入力したいのですが、 どのように取得すればよいでしょうか? ThisWorkbook.Path にすると、パスが出てきますが、 \C:\***\△△△\○○○\XXX.xls だとすると、「○○○」だけを入力したいのですが・・・ よろしくお願いいたします。

  • Access VBA での有効なパスチェック

    Access VBA での有効なパスチェック お世話になっております。 Access2002 VBAで、画面入力されたパスが有効なら、 そこにテーブルの内容をExcel出力する。といったことをしているのですが、 画面入力されたパスが、 たとえば「C:\\\\\\tmp\\\\\\\」などと入力された場合、 フォルダチェックに用いているDir関数ではOKなのですが、 Excel出力するDoCmd.TransferSpreadsheetでエラーとなってしまいます。 ここでのエラーが、実行時エラー:2220なので、例外処理で拾っているのですが、 フォルダチェックの段階で、はじくよい方法はあるでしょうか? 例文です> str_tmpPath = txt_Path.Value  'ここで「C:\\\\\\tmp\\\\\\\」と入力されたとする '有効なパスかチェックする If Dir(str_tmpPath, vbDirectory) = "" Then  '上記のパスで通ってしまう。戻り値は"."   MsgBox "入力しなおして"   End End If str_SavePath = str_tmpPath & "ファイル名" 'Excel出力 DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, テーブル名, str_SavePath, True  'ここで実行時エラー:2220が発生 以上、よろしくお願いいたします。

  • フォルダ内にあるファイルの連番リネーム。

    フォルダ内に決まった数(8枚)のJPG画像が入っていて、その8枚づつ画像の入ったフォルダがたくさんあります。 そのフォルダ内のJPG画像のファイル名はそれぞれ全て違うのですが、フォルダ内にある8枚のJPG画像を全て01.jpg~08.jpgに連番リネームしたいと思っています。 今まではエクスプローラー風フォルダツリーから1個1個フォルダを開けて、中身のJPG画像を全選択して連番にリネームという風にやっていましたが(Namery使用)、例えば中身を変更したいフォルダをD&Dしたらフォルダごとに8枚づつ連番を自動でつけてくれるようなソフト、またはそのような作業が可能なソフトがありましたら教えて下さい。 いくつか試してみましたが期待した結果は得られませんでした、よろしくお願いします。

  • EXCEL VBAでフォルダ操作をしたい

    どなたか、お知恵をお貸し下さいませ。 フォルダ(A)の中に、さらにフォルダがいくつかあり その中にあるフォルダを、順番に開く処理がしたいのです。 「フォルダ選択」を表示させて、そこで選択したフォルダを開くという方法で行なっていたのですが、フォルダの数が多すぎて、それも大変で・・・。 順番に自動的に開いてくれるようにすることはできないものなのでしょうか? 中のフォルダの名前は連番ではありません。 連番にする必要があるのでしたら、その方法もお教え下されば有難いです。(フォルダ名は変更しても支障ありません) 説明がわかりにくいかもしれませんが、よろしく御願いします。

  • 特定のフォルダー内のエクセルファイルを開くVBA

    たとえば C:\My Documents\データ というフォルダーには20~30のエクセルファイルが入っています ファイルの名前は「えくせる なんばー101」などという名前になっています 「えくせる なんばー」までは共通で「101」の部分はそれぞれランダムな数字が入っています ランダムなファイル名なのでファイルを捜して開くのが大変です インプットボックスなどで 「101」の部分を入力すれば該当ファイルが開くような マクロを作りたいのですが (続きナンバーにして フォルダの整列をすれば捜しやすいのですが ネットワーク上の共有フォルダなので勝手にファイル名を変えることが出来ないのです) VBA初心者なのでよろしくお願いします

  • フォルダー内のファイルとリンクするマクロVBA

    エクセルのマクロ機能を使い、エクセルのセルに管理番号入力し選択してマクロ実行すると、 自動でセルに入力した管理番号と同じフォルダー名の物を指定した場所に作成し、ハイパーリンクするVBAを 見よう見まねで作成しました。 この作成したVBAに追加機能を付けたいのですが、 WEBで検索したのですが、なかなか実行したい事が合う内容のものが見つからず、 マクロ初心者で何をどうすれば良いのか解りません。 大変申し訳ありませんが、どなたか教えて頂けませんでしょうか? 追加したい機能は、例としてA列の4と5の行を結合(結合しない場合もある)して管理番号を入力し、 自動で管理番号名のと同じフォルダーを作成しハイパーリンクした後に、 手動で、作成したフォルダーの中にファイルを入れる。 その後、行に同じファイル名を入力し、その行を選択してファイル名が同じ物があればハイパーリンクする様にしたい。 添付の画像ですと、管理番号を付けるのはA列で順番に番号を付けていきます。 1つのフォルダーの中に複数ファイルを入れる場合は、列を結合して1つの管理番号にし、 同じ行に並ぶフォルダーのE列(列の場所は変わる場合もあり)にフォルダーの中のファイル名を入力して、 フォルダー内同期リンク実行ボタンを押してファイルをハイパーリンクしたい。 ※管理番号で列に対し行は1:1の時もあれば、ファイルの数により、列を結合し1:2~1:10以上もある。 ※自動で管理番号名のと同じフォルダーを作成しハイパーリンクするVBAは下記で作ったのですが、   それをWEBで、似た様な内容のものを少し参考に編集しると、現在の機能も使えなくなってしまったりと困っています。   難しい。 Sub MakeHyLink() Dim wkStr As String If ActiveCell.Column <> 1 Then Exit Sub If ActiveCell.Value = "" Then MsgBox "アクティブセルは未入力、やり直し" Exit Sub End If wkStr = ThisWorkbook.path & "\TEST\" & ActiveCell.Value If Dir(wkStr, vbDirectory) = "" Then MsgBox "フォルダー:" & wkStr & vbLf & " を、作成します。" MkDir wkStr Else MsgBox "フォルダー:" & wkStr & vbLf & " は、存在します。" End If ActiveSheet.Hyperlinks.Add Anchor:=ActiveCell, Address:=wkStr End Sub

  • VBAフォルダ内ファイル入出力について

    Accessで特定のフォルダ内にあるcsvファイルを全て読み込み、別のcsvファイルへ 出力するという処理を作りたいのですが、最近からVBAを始めたばかりで どうすればよいか分かりません。 とりあえず、特定のファイルをひとつ読み込み、別ファイルへ出力することはできました。 Option Compare Database Private Sub Button_Click() Dim No As Integer Dim buf No = FreeFile Open "C:\test1.csv" For Input As #1 Open "C:\test2.csv" For Output As #2 Do Until EOF(No) Line Input #1, buf Print #2, buf Loop MsgBox "処理終了" Close #1 Close #2 End Sub 読み込み対象を「特定のフォルダ内のファイル全て」 にする方法が知りたいです。 ちなみに出力先のファイルはひとつにまとめてもそれぞれ別のファイルに 出力でもどちらでも構いません。 できれば両方教えていただければ有難いです。 宜しくお願いします。

専門家に質問してみよう