• 締切済み

フォルダ内のファイルを上から読み込み、別ファイルにレコード化して移すとき

フォルダA   ファイル1      氏名:太郎      番号:3210   ファイル2      氏名:次郎      番号:3211   ファイル3      氏名:三郎      番号:3212 ファイルS   読込ボタン       氏名:     番号: 1.ファイルSの読込ボタンを押す 2.フォルダA内のファイル1の氏名、番号を読込む 3.読込んだ氏名、番号をファイルSに1行のレコードとして書き込む 4.そのままファイル2の氏名、番号を読込みファイルSの3.で書き込んだレコードの下(2行目)に書き込む 5.ファイル3を読込んで、同様の処理を行う。 6.フォルダ内のレコードを全て読み込み、ファイルSに書き込んだら終了 説明が下手ですいません。 要は、ボタン一つでフォルダ内のすべてのファイルの氏名、番号項目を読み込んで別ファイルにレコード化する処理を行いたいのです。 VBAで上記の処理を行いたいのですが、構文が書けずにに悩んでいます。 VBAの勉強を始めたのが4日前で、それ以前に開発の経験はありません。 参考書などを読んでも、参考になる構文が載っておらず、いま一つわかりません。 どなたか、構文を教えて頂けると助かります。 宜しくお願い致します。

みんなの回答

回答No.4

前回載せたのは指定したフォルダ内のファイルを取得するという今回の質問の一番大変だろうと思われる部分であってそれをそのまま利用して出来るものではありません。 文中にも「参考になりそうなサイト」と書いたはずですが・・・ 前回載せたサイトのコードが理解できるのであれば、どの時点でフォルダ内のファイルが取得できるかわかると思います。 その場所でWorkBookをOpenしてあげれば、シート内の操作ができるはずです。 http://officetanaka.net/excel/vba/file/index.htm http://home.att.ne.jp/zeta/gen/excel/c04p24.htm これもGoogleで「Excel ファイル操作」と検索すれば出てきます。 参考に出されたものはあくまで参考です。 答えではありません。 お礼に載せて頂いたコードはサイト内を抜き出したものですよね。 VBAはデバッグできるのですから、ヘルプやインターネットで調べる癖をつけないと今後苦労すると思いますよ。

回答No.3

ネットで検索してみましたか? Googleで「VBA Excel フォルダ内」と検索すれば一番上に参考になりそうなサイトが出てきますよ。 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_120.html 参考資料は基本的なこと、一般的に使われそうなことしか書かれていません。 ※たまにマニアックなことも書いてありますが。 調べるのであればインターネットを使いましょう。 便利なのですから・・・

SALONPAS77
質問者

お礼

参考サイトありがとうございます。 現在、下記のDir関数を用いたフォルダ内ファイルの一覧取得を参考に考えているのですが、ファイルの一覧をレコード化するのではなく 更にファイルの中の項目を参照し、レコード化したいのですが、その方法で悩んでいます。 もしよろしければ力をお貸し下さい。 Option Explicit ' 指定したフォルダ内のファイルの一覧を取得 Sub Display_Directory() Const cnsTITLE = "フォルダ内のファイル名一覧取得" Const cnsDIR = "\*.*" Dim xlAPP As Application Dim strPATHNAME As String Dim strFILENAME As String Dim GYO As Long Set xlAPP = Application ' InputBoxでフォルダ指定を受ける strPATHNAME = xlAPP.InputBox("参照するフォルダ名を入力して下さい。", _ cnsTITLE, "C:\") ' (1) If StrConv(strPATHNAME, vbUpperCase) = "FALSE" Then Exit Sub ' フォルダの存在確認 If Dir(strPATHNAME, vbDirectory) = "" Then ' (2) MsgBox "指定のフォルダは存在しません。", vbExclamation, cnsTITLE Exit Sub End If ' 先頭のファイル名の取得 strFILENAME = Dir(strPATHNAME & cnsDIR, vbNormal) ' (3) ' ファイルが見つからなくなるまで繰り返す Do While strFILENAME <> "" ' (4) ' 行を加算 GYO = GYO + 1 ' 先頭は1行目 Cells(GYO, 1).Value = strFILENAME ' (5) ' 次のファイル名を取得 strFILENAME = Dir() ' (6) Loop End Sub

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

ファイルの種類も質問で書いてなくて、どうした。ブックとかけば判るが。 エクセルだろうね。エクセルVBAでよいのだね。 フォルダ1のファイルには、エクセルブック以外ないのか。 フォルダ1のブックのシートの項目構成は皆同じか。 ーーー これなど丸投げの質問ではないか。規約上遠慮していただくタイプ。 コードを回答者に全的に頼むのは困る。 この累計の質問はこのコーナーでも月に2三度は出る質問。 Googleで「フォルダ ファイル 一覧」などで照会すれば、たくさんコード例が出る。 ーー まづフォルダ内のファイルを全て掴む(ファイル名をMsgboxで表示 、(できればエクセル以外は排除)のコードがどうなるか勉強から始めるのがよかろう。 大きく分けて FSOを使う Dir関数を使う その他、がある。初心者ならDir関数利用かな。 それを自分の場合にどう修正したらよいか考えて、行きづまった点があればその点を質問すべきだ。 あとブックが捉えられた、そのシートを検索するコードの勉強になるが、検索操作をして、マクロの記録を取り、コードをどう修正したらよいか勉強する。

SALONPAS77
質問者

お礼

様々な指摘ありがとうございます。 そうですよね、説明不足の部分が多々あり、申し訳ありあませんでした。 今後、このような質問にならないように気をつけます。 また検索の仕方や、勉強方法のアドバイス。 ありがとうございます。 Dir関数利用の方を使って考えてみます。 またわからなくなった時は、力を貸して頂けると助かります。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

”ファイル”とは何を差してますか? Excelブック?テキストファイル?その他? アプリケーションは? Access・Excel・Word・etc

SALONPAS77
質問者

お礼

ご連絡ありがとうございます。 説明不足ですいません。 ファイル”とは何を差してますか? Excelブックです。 アプリケーションは? Excelです。

関連するQ&A

  • エクセルVBAでフォルダ内の全ファイルをコピペ

    フォルダ内にあるファイルの内、複数を指定して開いて、任意の部分をコピーし、マスターとなるファイルに貼りつける、という作業をVBAで行いたいと思っています。 VBAを全く知らないため、毎回20近いファイルを手で開いてはコピペしなくてはならず困っております。 ●あるフォルダ内にあるファイルの形式は全て同じで、10行目まではタイトル欄になっているため、11行目以降の記載がある行だけをマスターとなるファイルにコピペしたいです。 ●マスターも同じく10行目まではタイトル欄なので、11行目以降に、他ファイルの11行目以降の内容をどんどん積み上げていく形式にしたいです。 ●ファイルの名前は毎回変わるので、フォルダ内の指定されたエクセルファイルのみをコピペ、のような処理にしたいです。 ●B列だけは必ず記載がある列なので、そこを参考に11行目から何行目までをコピーすればいいのかを判断できるのかな、と思います。 ●貼り付けが完了したらマスター以外の開いたファイルを全て閉じるところまで自動化できたら有難いです。 全くの初心者なため、貼り付けるだけで動くようなものをいただけれると大変助かります。 よろしくお願いいたします。

  • フォルダ内のファイル読み込み

    エクセル2003のVBAを使って、特定のフォルダ内の複数のCSVファイル全てを「順番」に読み込む(ファイルを開く)方法を教えて下さい。 フォルダの中には「0.csv」~「12.csv」が入っています。 (しかし、間の番号が無い場合があります。例えば、0~4と6~10のファイルがあり、間に「5」がない。 必ず「0」から始まるないし、最後のファイル名の数字も違う。) よろしくお願いします。

  • 別ファイル起動時にはカレントフォルダの変更が必要?

    「マクロの記録」のボタンをクリックして以下の作業のマクロ構文をPCに自動記述させた場合 「ChDirステートメント」で必ずカレントフォルダが変更される一文が記述されます  1.別ファイルを起動させた場合  2.「名前を付けて保存」の処理を実行させた場合 そのため、今までは「カレントフォルダ」を変更しないことには他のファイルやブックを使用できない とばかり思っていましたが、下記ホームページを拝見したところフルパス名を使用するのであれば 特に「カレントフォルダ」を変更する必要はなさそうであることが分かりました。 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_140.html これって、他のファイルやブックを使用する際に「ファイルを開く」などの操作で「ファイルの場所」を 特定したその作業をPCがマクロ処理として構文を自動作成してしまっただけの「ChDir」であって、 実際のファイル起動などのマクロ構文をフルパス名で記述するのであれば、「ChDirステートメント」 でのカレントフォルダ変更は特に必要ないという認識で正しいのでしょうか? このことについては何となく理解できたのですが、下記4点について詳しく知りたいので宜しく お願いします。  1.「ChDrive」、「ChDir」を省略した方がファイルが軽くなるのか(処理が早くなるのか)  2.「ChDrive」、「ChDir」を記述した方がファイルが軽くなるのか(処理が早くなるのか)  3.FSOなどでファイルやフォルダを新たに作成する場合は「ChDir」の記述をした方が良いのか  4.常にフルパス名でマクロ処理することによるデメリットはあるのか 以上です。宜しくお願いします。

  • Access2000のレコード削除について

    Access2000のVBAにより、フォームに配置したコマンドボタンを押すことで、テーブルの全レコードを一度に削除したいのですが、どの様にすればよいのですか? 構文で教えて頂けると助かります。とても困っています。よろしくお願いします。

  • AccessVBA フィルタとカレントレコードの移動について

    現在、下記のような構文で、「フィルタ」というテキストボックスに文字を入力し、「フィルタ実行」というボタンを押すと、フィルタがかかるように作っています。 ---------------------------------- Private Sub フィルタ実行_Click() Me.Filter = "故障処理票番号 like '" & Me!フィルタ & "'" Me.FilterOn = True End Sub ---------------------------------- ※故障処理票番号のデータ型はテキスト型。 頭にアルファベット2文字と4桁の数字からできています。例:AA0001 ※フォームは表形式。 2つ質問があります。 1)テキストボックスに入力した値で始まる文字をすべてフィルタで抽出する方法。 つまり、"AA"で始まる番号をすべて検索したい場合に、テキストボックスに"*"を入力することなく、結果が返る方法を教えてください。 2)フィルタで抽出したレコードをカレントレコードにする方法。 複数あった場合には、レコードセレクタで選択したレコードをカレントレコードとする方法を教えてください。 (ボタンを押すと、カレントレコードとなっているレコードの詳細表示(単票フォーム)に飛ぶように設定しているので、カレントレコードを移動する必要があります。ボタンは詳細セクションのそれぞれのレコードの横に表示されるよう作成しています) 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フォルダやファイル操作について

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

  • フォルダのファイルを開く

    ExcelVBAについて。 「フォルダ内の「*.xls」ファイルを開く」という処理をVBAで行いたいですが、 ネット上の情報( http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_120.html )よりも 簡素に記述することは可能でしょうか? よろしくお願いします。

  • レコードの値を取得

    お尋ねします。 職員台帳をアクセス2000で作成しています。 検索フォームを作って、部署名をコンボボックスで選択すると、その部署に所属する職員の一覧を表形式で表示するようにしました。 表示するフィールドは、部署名、職員氏名、職員番号、入社年月日です。 次に、表形式で抽出されたそれぞれのレコードについて、コマンドボタンを押して別のフォームを開き、そのフォームで個別の情報を入力したいと考えます。各レコードそれぞれにコマンドボタンを配置する方法です。 別のフォームを開くときに、各レコード(テキストボックス)に表示されている職員氏名と職員番号の「値」を取得したいのですが、その方法がわかりません。表形式のレコードのValueを取得する方法をVBAでどう記述すればいいか、どなたか教えてください。 よろしくお願いいたします。

  • EXCEL VBAフォルダ配下のファイル削除したい

    お世話になります。 VBAを使って特定フォルダ(C/TEST)配下のファイルを全て一括削除したいのです。 :特定フォルダ=C/TEST やりたいこと EXCELシートに[削除]というボタンを配置してクリックしたらC/TEST配下のファイルを全て 削除するロジックをどなたかご教授いただけますでしょうか? C/TEST配下にファイルがない場合は[削除対象ファイルは存在しません]というメッセージを出して処理を終えたいです。 よろしくお願い致します。 EXCEL2013

専門家に質問してみよう