- ベストアンサー
【VBA】フォルダ内の複数Excelのセルをコピー
- あるフォルダ内にある複数のExcelファイルの特定のセルを1つのExcelファイルに集約する方法について質問です。
- Excel 2002のVBAを使用して、選択したExcelファイルのA1セル、B1セル、C1セルを1つのExcelファイルに張り付ける方法を教えてください。
- 複数のExcelファイルから選択したセルを集約したExcelファイルにまとめる方法についてお教えいただきたいです。
- みんなの回答 (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
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
基本的には、>あるフォルダ内にある複数の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つやるほか無い。そういう疑問点の質問ににこのコーナーは使うべきだ。
お礼
早急なアドバイス、有難う御座います。 >集約するブックへのコードはA->Bブックの例でマクロの記録を採って考えてみては。 でもさらに色々疑問点はあろうが、1つ1つやるほか無い。そういう疑問点の質問ににこのコーナーは使うべきだ。 →imogasiさんのいうとおり、僕がもう少し努力をしてから質問をすべきでした。 今後はそのようにします。
- kmetu
- ベストアンサー率41% (562/1346)
とりあえず複数のファイルを選択して開く ↓の最後にやり方があります。 http://officetanaka.net/excel/vba/file/file02.htm > Excelファイルの数だけ繰り返します これも上記のサイトが参考になります。 あとは説明するまでもないですよね。
お礼
アドバイスを頂きまして、有難う御座います。 URLを確認しました。 様々な方法があるのですね、勉強になります。 >あとは説明するまでもないですよね。 →ファイル選択後の処理も、今の僕には難しいですが、 努力してみます。
お礼
的確なアドバイス、有難う御座います。 僕のイメージどおりの、集約したExcelファイルができました。 今後、「F1」「A3」など、飛び飛びのセルも集約の対象になる見込みなのですが、 merlionXXさんのアドバイスを参考にさせて頂いて、対応したいと思います。