• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【VBA】フォルダ内の複数Excelのセルをコピー)

【VBA】フォルダ内の複数Excelのセルをコピー

このQ&Aのポイント
  • あるフォルダ内にある複数のExcelファイルの特定のセルを1つのExcelファイルに集約する方法について質問です。
  • Excel 2002のVBAを使用して、選択したExcelファイルのA1セル、B1セル、C1セルを1つのExcelファイルに張り付ける方法を教えてください。
  • 複数のExcelファイルから選択したセルを集約したExcelファイルにまとめる方法についてお教えいただきたいです。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

一例です。 ただ、シート名に一切言及がなかったので、複数選択した転記元ファイルについては開いたときに表示されるシート、転記先はこのマクロを書いたファイルのSheet1という名前のシートを対象としました。 フォルダを選択したら、対象とする複数のファイルを選択してください。(Ctrlボタンを押しながらファイルを選べば複数ファイルの選択ができます。) Sub test01()   Dim Bks, wb   Bks = Application.GetOpenFilename(FileFilter:="Microsoft Excelブック,*.xls", MultiSelect:=True)   If IsArray(Bks) Then     Application.ScreenUpdating = False     For Each wb In Bks       Workbooks.Open wb       n = n + 1       ActiveSheet.Range("A1:C1").Copy       ThisWorkbook.Sheets("Sheet1").Cells(1, n).PasteSpecial Paste:=xlPasteAll, Transpose:=True       Application.CutCopyMode = False       ActiveWindow.Close (False)     Next     Application.ScreenUpdating = True   Else     MsgBox "キャンセル"   End If End Sub

coltcolt
質問者

お礼

的確なアドバイス、有難う御座います。 僕のイメージどおりの、集約したExcelファイルができました。 今後、「F1」「A3」など、飛び飛びのセルも集約の対象になる見込みなのですが、 merlionXXさんのアドバイスを参考にさせて頂いて、対応したいと思います。

その他の回答 (2)

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

基本的には、>あるフォルダ内にある複数のExcelファイル、はすべて処理対象にするのだろう? そのうち処理対象からはずすのはあるのか(集約ブックは別として)?。そのために操作者への表示と確認が必要なのか。 ーー 初心者といって、ここに質問する前に、あるフォルダのすべてのファイル(エクセルファイルだけでも良い)を掴むコードを勉強するべきだ。Googleで照会すれば沢山あるはず。ここへの質問もたびたび出てくる。 Googleで「フォルダ すべて ファイル 列挙」などで照会する。 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_080.html など。 定石としてVBSでやる方法、DIR関数、その他がある。 下記はVBSをつかう。エクセルのブック(データを集約するブックででも)の標準モジュールに Sub test01() On Error Resume Next Dim FSO 'Scripting.FileSystemObject Dim objFolder 'Folderオブジェクト Dim oFile 'Fileオブジェクト Set FSO = CreateObject("Scripting.FileSystemObject") Set objFolder = FSO.GetFolder("C:\Documents and Settings\XXXX\My Documents\") For Each oFile In objFolder.Files If Right(oFile, 4) = ".xls" Then MsgBox oFile.Name End If Next End Sub ーー ファイルをとらえたら、エクセルでOpen する。 そのブックのシートSheet1のA1セルなどの値を掴む。 Sub test01() Application.ScreenUpdating = False Application.DisplayAlerts = False On Error Resume Next Dim FSO 'Scripting.FileSystemObject Dim objFolder 'Folderオブジェクト Dim oFile 'Fileオブジェクト Set FSO = CreateObject("Scripting.FileSystemObject") Set objFolder = FSO.GetFolder("C:\Documents and Settings\XXXX\My Documents\") For Each oFile In objFolder.Files If Right(oFile, 4) = ".xls" Then 'MsgBox oFile.Name Workbooks.Open oFile MsgBox Worksheets("Sheet1").Range("A1") ActiveWorkbook.Close SaveChanges:=True End If Next Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub ーーーー 集約するブックへのコードはA->Bブックの例でマクロの記録を採って考えてみては。 でもさらに色々疑問点はあろうが、1つ1つやるほか無い。そういう疑問点の質問ににこのコーナーは使うべきだ。

coltcolt
質問者

お礼

早急なアドバイス、有難う御座います。 >集約するブックへのコードはA->Bブックの例でマクロの記録を採って考えてみては。 でもさらに色々疑問点はあろうが、1つ1つやるほか無い。そういう疑問点の質問ににこのコーナーは使うべきだ。 →imogasiさんのいうとおり、僕がもう少し努力をしてから質問をすべきでした。 今後はそのようにします。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

とりあえず複数のファイルを選択して開く ↓の最後にやり方があります。 http://officetanaka.net/excel/vba/file/file02.htm > Excelファイルの数だけ繰り返します これも上記のサイトが参考になります。 あとは説明するまでもないですよね。

coltcolt
質問者

お礼

アドバイスを頂きまして、有難う御座います。 URLを確認しました。 様々な方法があるのですね、勉強になります。 >あとは説明するまでもないですよね。 →ファイル選択後の処理も、今の僕には難しいですが、  努力してみます。

関連するQ&A