別フォルダにあるエクセルファイルのF列値をコピーする方法

このQ&Aのポイント
  • 別フォルダにあるエクセルファイルのF列の値を他のファイルにコピーする方法について教えてください。作業では、Aフォルダに140のファイルがあり、検証テストを複数人で行います。
  • 検証テストが終了したファイルはAフォルダから別のフォルダに移動されますが、移動されたファイルはAフォルダ内では#REF!と表示されます。
  • 質問の主な目的は、ファイルの所在検索マクロ結果からファイルを特定し、そのファイルのF列の値をコピーすることです。質問文にはマクロの作成やエクセルのシートの構造も記載されています。
回答を見る
  • ベストアンサー

別フォルダにあるエクセルファイルのF列値を、他ファイルにコピーさせたい

仕事で、ある機器の検証をしています。 検証テストをするときに使用するファイルが、「Aフォルダ」に140ファイルあります。(ファイル名「101_○○○.xls~240_○○○.xls」) ↓ 検証テストは、1ファイルずつ複数人で行います。 ↓ 検証テストが終了したファイルは、Aフォルダから「B・C・Dフォルダ」のいずれかに切り取り移動されます。 ↓ ということで、移動されてしまったファイルは、Aフォルダ内を検索しても、#REF!と表示されてしまいます。 出来ていること (1)ファイルの所在検索マクロの組立て (2)Aフォルダ内にすべての140ファイルがあった場合のF列コピーマクロの組立て ※A,B,C,Dフォルダは、同フォルダ内、同階層にあります。 ※すべてのフォルダは、会社のネットワークドライブ上にあります。 ※Aフォルダ内のファイルは、最終的に0になります。 ※各ファイルがA・B・C・Dフォルダのいずれに保存されているかは「ファイル所在検索マクロ」を実行しないと分かりません。 可能がどうか知りたいこと!! ファイルの所在検索マクロから確認できたファイルの所在(ハイパーリンク付)&ファイル名から、ファイルを特定して、F列のコピーができるか? 「まとめのエクセルファイル」は、5シート構成です。 Sheet1…進捗&担当者一覧 Sheet2…101~240チェック_詳細結果 Sheet3…301~440チェック_詳細結果 Sheet4…501~640チェック_詳細結果 Sheet5…ファイル所在検索を求めるためのシート 上記の「Sheet2…101~240チェック_詳細結果」にマクロを入れたい。現状、このようになっています。  A   B   C  D  E  F  G  H …列 ファイル名→→ 101 102 103 104 105 106 … 求めたい値  1  OK  OK NG OK  NG ↓ 2  NG OK NG OK OK   ↓    3  OK OK NG OK OK   ↓    4  OK OK NG NG OK (行) ※列…ファイル名 ※行…各ファイルのF8:F57に表示される値 ※C列には、101_○○○.xlsのF8:F57の値をコピーしたいです。  D列には、102_○○○.xlsのF8:F57の値をコピーしたいです。 質問がややこしいですが、ぜひお願いします!!

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

下記の部分の意味が掴めないので、回答が付かないのだと思います。 >可能がどうか知りたいこと!! >ファイルの所在検索マクロから確認できたファイルの所在 >(ハイパーリンク付)&ファイル名から、ファイルを特定して、 >F列のコピーができるか? どの様に所在を確認されているか分かりませんが、例えば参考URLのコードを用いれば、見つかったファイルのフルパスが得られるので、そのファイルを開いてF列の値を引っ張ってくるのは容易だと思いますが、そういう事では無いのでしょうか? 多数のブックを開きたくないい場合は下記の回答No.2の様な方法もあります(取得はセル単位)が、過去との互換性のために残されているものですので、最新バージョンでも機能が残っているかどうかは知りません。 http://okwave.jp/qa2668111.html

参考URL:
http://officetanaka.net/excel/vba/tips/tips36.htm
manna11
質問者

補足

mitarashiさん、レスが遅くなり、すみません。 返信ありがとうございます! まずは、ファイルの所在検索は↓ -------------------------------- Sub ファイル所在検索() Dim vntF As Variant Dim objFS As FileSearch Dim objFSO As FileSystemObject Dim dteDate As Date Dim GYO As Long Dim cntFound As Long Set objFS = Application.FileSearch ' FileSearch Set objFSO = New FileSystemObject ' FSO Rows("5:65536").ClearContents GYO = 4 With objFS .NewSearch .LookIn = Trim(Cells(1, 2).Value) ' Search開始フォルダ .Filename = Trim(Cells(2, 2).Value) ' 探索ファイル式 dteDate = DateAdd("m", Cells(3, 2).Value * -1, Date) .SearchSubFolders = True ' サブフォルダも探索 ' 処理開始 If .Execute() <> 0 Then ' 見つかったファイル分のループ For Each vntF In .FoundFiles '-------------------------------- ' ↓↓↓この間が見つかったファイルに対する処理↓↓↓ ' FSOにてファイルを取得 With objFSO.GetFile(vntF) ' 今回は、最終更新日を確認し、該当ならシートの表示 If .DateLastModified >= dteDate Then GYO = GYO + 1 Cells(GYO, 1).Value = _ Left(.Path, Len(.Path) - Len(.Name) - 1) cntFound = cntFound + 1 Cells(GYO, 2).Value = .Name Cells(GYO, 3).Value = .DateLastModified End If End With ' ↑↑↑この間が見つかったファイルに対する処理↑↑↑ '-------------------------------- Next vntF End If End With Set objFS = Nothing Set objFSO = Nothing ' 処理結果の表示 If cntFound = 0 Then MsgBox "見つかりません" Else MsgBox cntFound & "個見つかりました" End If End Sub ---------------------------------- このようなコードを入れています。 mitarashiさんが貼り付けてくださっていた 参考URLのマクロと同じようなコードです。 もう一つのURLから、こちらを見つけました! http://oshiete1.goo.ne.jp/qa2406030.html 参考になるコードがありましたので、明日試してみます! ありがとうございます。

関連するQ&A

  • excelマクロ 別ファイルの特定列をコピーしたい

    C:\testの配下にexcelファイル「aaa.xls」「aaa_yyyymmdd.xls」「bbbxls」があります。 「aaa_yyyymmdd.xls」は「aaa.xls」のバックアップファイルです。 又、「bbbxls」にマクロを記述しようと思います。 ☆処理内容☆ 「aaa.xls」「aaa_yyyymmdd.xls」が開いていない状態で、「aaa.xls」のシート「sheet1」内の E列をコピーして「bbbxls」のシート「sheet3」のA列に貼り付け。 「aaa_yyyymmdd.xls」のシート「sheet1」内の E列をコピーして「bbbxls」のシート「sheet3」のB列に貼り付け。 その後、張り付けたA列を正としB列と比較して、差異があった場合はB列の差異があった部分の セルに色つけをした後、「aaa_yyyymmdd.xls」をC:\test:\oldフォルダに移動する。 上記のようなexcelマクロを作成中なのですが、できなくて困っております。 有識者の方、助けを貸してください。 よろしくお願い致します。

  • ExcelVBA別フォルダにあるブックのコピー方法

    ExcelVBAでデータを条件に応じてコピーしたいと思っています。 同一階層に「VBAファイル.xls」「1_フォルダA」「2_フォルダB」「3_フォルダC」があります。 「1_フォルダA」と「2_フォルダB」には年代別に分かれたファイルがあります。 ファイルとフォルダの構造は以下の通りです。 VBAファイル.xls 1_フォルダA  ∟1999_ファイルA.xls  ∟2000_ファイルA.xls  ∟2001_ファイルA.xls  ∟2002_ファイルA.xls  ∟2003_ファイルA.xls  ∟2004_ファイルA.xls  ∟2005_ファイルA.xls  ∟2006_ファイルA.xls  ∟2007_ファイルA.xls  ∟2008_ファイルA.xls  ∟2009_ファイルA.xls  ∟2010_ファイルA.xls  ∟2011_ファイルA.xls  ∟2012_ファイルA.xls 2_フォルダB  ∟1999_ファイルB.xls  ∟2000_ファイルB.xls  ∟2001_ファイルB.xls  ∟2002_ファイルB.xls  ∟2003_ファイルB.xls  ∟2004_ファイルB.xls  ∟2005_ファイルB.xls  ∟2006_ファイルB.xls  ∟2007_ファイルB.xls  ∟2008_ファイルB.xls  ∟2009_ファイルB.xls  ∟2010_ファイルB.xls  ∟2011_ファイルB.xls  ∟2012_ファイルB.xls 3_フォルダC  ∟ファイルC_結果.xls 「VBAファイル.xls」では添付の画像のような「ActiveXコントロール」を設定しました。 コンボボックスで西暦を選択すると、選択した年を中心年として、 前後1年を合わせて合計3年がラベルに表示されます。 その年のファイルのデータが「ファイルC_結果.xls」にコピーされるようにしたいです。 例えば画像のように「2007」を選択した場合、 ・「2006_ファイルA.xls」のC7~C25を「ファイルC_結果.xls」のD7~D25にコピー ・「2007_ファイルA.xls」のC7~C25を「ファイルC_結果.xls」のE7~E25にコピー ・「2008_ファイルA.xls」のC7~C25を「ファイルC_結果.xls」のF7~F25にコピー ・「2006_ファイルB.xls」のC6~C24を「ファイルC_結果.xls」のH7~H25にコピー ・「2007_ファイルB.xls」のC6~C24を「ファイルC_結果.xls」のI7~I25にコピー ・「2008_ファイルB.xls」のC6~C24を「ファイルC_結果.xls」のJ7~J25にコピー というようにしたいです。 「ファイルC_結果.xls」のD/E/F列はファイルAのデータで、 D列は前年、E列は当年、F列は翌年 H/I/J列はファイルBのデータで、 H列は前年、I列は当年、J列は翌年の値をコピーして貼り付けたいです。 また、可能であれば「ファイルC_結果.xls」は原本なので、 値をコピーする際にファイル名が変更できればよりよいです。 いろいろ書いてしまい、うまく伝わっているか不安なのですが 処理するデータが多くとても困っています。 お知恵のある方、どなたか助けていただけますと幸いです。 よろしくお願いいたします。

  • エクセル(マクロ) 特定セルのファイル間コピペ

    マクロで下記内容の処理を行いたいと思っております。 どのようなコードにすればよいかご教授よろしくお願い致します。 1.A.xlsを開く 2.B.xlsを開く 3.B.xlsの特定セルの値をコピーする。(特定セルを仮にB4、C7、D9とする) 4.A.xlsのC列にあるファイル名リストから「B.xls」というファイル名の入ったセルを検索する。 5.仮に5行目に「B.xls」というファイル名があれば、同じ行にある特定列 (行は固定で、例えばE5、F5、G5とする)に3.でコピーしたB4、C7、D9の値を張り付ける。 ※B4はE列、C7はF列、D9はG列に対応するものとする 6.B.xlsを閉じる 7.C.xlsを開く 8.C.xlsの特定セルの値をコピーする。(特定セルはB.xlsと同じB4、C7、D9) 9.A.xlsのC列にあるファイル名リストから「C.xls」というファイル名の入ったセルを検索する。 10.仮に7行目に「C.xls」というファイル名があれば、同じ行にある特定列 (行は固定で、例えばE7、F7、G7とする)に8.でコピーしたB4、C7、D9の値を張り付ける。 ※B4はE列、C7はF列、D9はG列に対応するものとする 11.C.xlsを閉じる 12.D.xlsを開く 以下、同じ処理を繰り返す。

  • フォルダ内のxlsをシートごとに別ファイルにしたい。

    現在開いているブックのシートごとにブックにするマクロはあったのですが フォルダ内のブックを一気にばらすことはできませんか? ---元--- ./甲.xls(シートa,シートb,シートc) ./乙.xls(シートa) ./丙.xls(シートa,シートb) ---元--- ---先--- ./甲a.xls(シートa) ./甲b.xls(シートb) ./甲c.xls(シートc) ./乙.xls(シートa) ./丙a.xls(シートa) ./丙b.xls(シートb) ※シート名もしくはseqをつけて分割 ---先--- まとめてPDFを作ろうかとしたら複数シートがうまく行かないので 1ブック1シートの形式にできればと思ってます。 (通常時は複数シートがいいので1ファイルづつ作業は考慮したくない) できましたらお願いいたします。

  • Excelマクロでエクセルファイルのファイル名を変更して保存、他

    Excel97のマクロを使用して以下の作業を実施したいのですが どなたかご教示お願い致します。 1.フォルダ内の複数ファイルから任意の一つのファイルAを開き、そのファイルA内の任意のセル(1A)の文字列をファイル名にして保存する。 2.あるファイルBを開き、ファイルB内のあるセル(1A)の"文字列が含まれるフォルダ"を検索してそのフォルダ内に保存する。 3.あるフォルダ(\1)内のあるファイルCを開き所要の作業を実施し閉じたあと、そのファイルCを別のフォルダ(\2)へ移動する。 4.あるフォルダ(\3)内のファイルDを開き、ファイルDのファイル名と同じ文字列を含むフォルダ(\4)を検索し、そのフォルダ(\4)内から、 ファイルD内のあるセル(1A)の文字列と同じファイル名のファイルEを検索して開く。 いくつも質問して真に厚かましいですが 解る物だけでも結構ですので 何卒、宜しくお願い致します。

  • 同フォルダ内の串刺し集計と文字列結合のマクロ作成

    同じフォルダ内に同じ形式のファイルがいくつかあり、ブック間で数値の串刺し集計と、文字列を結合して集計できるマクロの作成がしたいです。 フォルダ内には各所から送付されてくる同一フォーマット書類『(回答)**.xls』が多数あります。 「**」にはそれぞれの部署名が入っており、シート名は『回答』となっています。 各ファイルの『回答』シート F5~F32セルまでには数値が入力されています。 同じく各ファイルの『回答』シート G5~G32セルまでには文字列が入力されています。 これらを同一フォルダ内にある『集計ファイル.xls』の『集計』シートに集計をしたいのです。 F列は数値なので串刺し集計、G列はそれぞれバラバラの文字列のため「,」で区切って文字を結合をしたいと思っています。 (G列イメージ) あああ,XX,○△△,・・・ このようなマクロを同一フォルダ内にある『集計ファイル.xls』に作成することはできるのでしょうか? よろしくお願いいたします。

  • フォルダ内の特定ファイル名表示

    excel のVBAでmydoocumentの"abc"というフォルダの中にあるxls拡張子 付きのファイルを今開いているシートのA列にxxx.xlsと表示するマクロを書きたいのですが。教えてください。

  • 別のファイルの条件にあう数値を反映させたい

    ファイルAはその日の発注個数 C列に順番がバラバラの商品名   O列に個数 のような表になってます ファイルBは一か月の発注個数 B1列に商品名  D1から1行ごとに個数が表示される表になってます ファイルBの商品名と同じ ファイルAの個数を ファイルBのD1に反映させるにはどうすればいいですか? ファイルBのD1に =('F:\発注\[1.xls]Sheet1'!$C$4:$C$43,B1,'F:\発注\[1.xls]Sheet1'!$O$4:$O$43) と自分なりにやってみたら#VALUE!の表記になりました 正しい数式を教えてください

  • 別ファイルにある特定の文字列をコピーするマクロ

    マクロ初心者です。 取引先一覧.xlsのA2、B2、C2(A3、B3、C3…と、数十行続きます)に入っているそれぞれの三つの文字列を、 別ファイルである 伝票.xls の A2、A3、A4にコピーするマクロを組みたいです。 コピーする際は、 伝票.xls に設置した各取引先を示すボタンを押すことで、それぞれの取引先の住所や名前が 伝票.xls のA2~A4に飛んでくるようにしたいのですが、ファイルをまたがってのコピーの方法が分かりません。 初歩的な質問である上に分かりにくい説明で申し訳ありませんが、よろしくお願いいたします。

  • データファイルを開かずにコピー、別ファイルに転記

    データファイルを開かずに、該当行をコピー、別ファイルに転記する方法を教えてください。 ・ユーザーフォームを持つファイルがあります(仮ファイル名:印刷用ツール.xls)  ユーザーフォームには、テキストボックス(番号入力用)と、コマンドボタンがひとつあります  印刷用ツール.xlsのSheet1は「印刷用シート」になっています。  印刷用ツール.xlsのSheet2は、「印刷用シート」に表示するためのデータが入るデータシートです。 ・↑とは異なるデータファイルがあります(仮ファイル名:データファイル.xls) データファイルには A列に番号 、B~D列には番号に付随する情報データが入力されています。 (例)  A   B   C   D  1  りんご 青森 150 2  いか  新潟 200 ***以下、実行したい内容のイメージです (1)ユーザーフォームのテキストボックスに番号を入力して、コマンドボタンを押す ↓ (2)テキストボックスに入力された番号と同じ番号をデータファイル.xls内で検索する(データファイル.xlsを開かずに) ↓ (3)データファイル内で検索して合致した番号行を行ごとコピーする ↓ (4)コピーしたデータを印刷用ツール.xlsのSheet2の1行目に貼り付ける(貼り付ける前にSheet2の1行目をクリアする) (後は、Sheet2のデータはSheet1(印刷用シート)で、表示したい部分だけを表示して印刷します) 宜しくお願い致します。

専門家に質問してみよう