• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マクロ 違うファイルから抽出して貼り付け)

マクロで複数ファイルからデータ抽出と貼り付け

このQ&Aのポイント
  • マクロを使用して、「重点」ファイルと「田中」ファイルからデータを抽出し、貼り付ける方法を教えてください。
  • 「重点」ファイルには、シート「入力」と「集計」があります。月末に全担当者の項目数を集計するために処理しています。
  • 「田中」ファイルには、シート「4月~3月」が12シートあります。K列には合計数が入っています。この合計数を「重点」ファイルのE列に貼り付けたいです。マクロの作成方法を教えてください。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

当方の環境ではそのエラーは出ないので何とも言えないのですが、シートにズームの設定などがされているとメモリ不足エラーがでる事があるらしいです。該当しませんか? Application.ScreenUpdating = False / True はこのエラーに有効かどうかは解りませんが、処理速度は上がるはずです。

mmhh8989
質問者

補足

何度もすみません。 これで成功します。 どうか宜しくお願い致します。 "C:\社内フォルダ\5020地区グループ\重点項目\重点集計システム\H25年度\各個人表\1グループ\南基地\田中.xls" 田中さん以外の方約50名は、 \1グループ\東京基地\田中.xls"のここからフォルダーが変わります。 グループ(1・2・3)、基地(南・北・西)、このような場合いはどうしたらよいのでしょうか? 下記のようなL44に1グループのフォルダ中の個人名を入力するとファイルが開くと言うこのレベルしか考えられません。 Workbooks.Open Filename:= _ "C:\社内フォルダ\5020地区グループ\重点項目\重点集計システム\H25年度\各個人表\1グループ\南基地\" & Range("L44").Value & ".xls" これだと2グループからどうしたらよいのかわかりません。 理想は、個人名を入力すると個人名で保存されているエクセルファイルが開くと言うものにしたいのですが・・・。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.4

大分本題から離れちゃいましたね(^^; シート上に個人別シートを登録しておくリストと、今回の対象個人ファイルを選択するエリアを作っては? 添付の図ではA5:B9に対象となる個人名のファイルと、そのフォルダを入力してあります。 A2の選択個人名は、「データの入力規則」の入力値の種類を「リスト」にしてA5:A9の中から個人名ファイルを選択できるようにします。 で、B2セルには↓の式を入れます。 =IF(A2="","",VLOOKUP(A2,A5:B9,2,FALSE)&A2) これで、個人名ファイルを選択すると、B2セルにはフルパスでファイルの情報が表示されます。 個人名ファイルを選択後、ボタンか何かでマクロを起動させ、マクロではA2セル、B2セルの値を参照するようにしては如何でしょう。

mmhh8989
質問者

お礼

何度もありがとうございました。 本当に助かりました。

すると、全ての回答が全文表示されます。
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

> ご質問なのですが、i とは何を指しているのでしょうか? iは変数です。 直前の For i = 5 To 10 で5~10になるように宣言してありますので、 i=5 の時 .Range("E" & i + 10) = Evaluate("Sum('[田中.xlsx]4月:3月'!K" & i & ")") は、↓と同じことになります。 .Range("E15") = Evaluate("Sum('[田中.xlsx]4月:3月'!K5)") この時、田中ブックの4月:3月シートのK2の合計値を、自シートのE15セルに代入しています。

mmhh8989
質問者

補足

すごいです。 本当にわかりやすいご回答、本当にありがとうございました。 ですが、実行すると次は「メモリ不足です。完全に表示できません」と出ます。シート数は少ないはずなのですが・・・。何か対策等ありますでしょうか? 私なりに勉強したところ、 マクロの先頭にApplication.ScreenUpdating = False マクロの最後Application.ScreenUpdating = True をいれると少しは改善されるとあるのですが?これは有効でしょうか? また、何か違った対策等ありますでしょうか? 宜しくお願い致します。

すると、全ての回答が全文表示されます。
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

質問文の前半は良くイメージできなかったので考慮していません。悪しからず。 「田中」ブックの4月~3月シートのK5:K10合計値(各シートの串刺し集計値)を、自ブック(「重点」)のSheet1のE15:E20(質問文ではE15:E25でしたが、数が合わないのでE20までとしました)に貼り付けるマクロのサンプルです Sub Sample()   Workbooks.Open Filename:="C:\Temp\田中.xlsx", ReadOnly:=True   With ThisWorkbook.Sheets("Sheet1")     For i = 5 To 10       .Range("E" & i + 10) = Evaluate("Sum('[田中.xlsx]4月:3月'!K" & i & ")")     Next i   End With   Windows("田中.xlsx").Close End Sub

mmhh8989
質問者

補足

ご対応ありがとうございました。 .Range("E" & i + 10) = Evaluate("Sum('[田中.xlsx]4月:3月'!K" & i & ")")     Next i 勉強不足な私にお教え下さい。 ご質問なのですが、i とは何を指しているのでしょうか? 宜しくお願い致します。

すると、全ての回答が全文表示されます。

関連するQ&A