Old Cal と New Cal というタイトルの 2 つのドキュメントがあります。それぞれの個別のファイルからテーブルを取得し、それらを新しい比較ファイルに自動的にコピーできるようにしたいと考えています。唯一の問題は、データが収集されるたびに新しい比較シートに入力する必要がある新しいドキュメントが継続的に存在することです。たとえば、今回のファイルは Old Cal と New Cal と呼ばれますが、これらの比較の後、別の新しいページで比較する必要がある完全に新しい情報を含む、Blue と Red という名前の 2 つの新しいファイルが作成されます。毎回異なるファイルがあるにもかかわらず、2 つのドキュメント間で作成する必要がある比較シートを自動的に入力できるマクロを作成するのに助けが必要です。さらに情報が必要な場合はお知らせください。どんな助けも大歓迎です。ありがとう!
1 に答える
0
Tim Williams が言うように、使用Application.GetOpenFilename()
は優れたソリューションです。標準の Excel ファイルを開くダイアログが開きますが、実際にはファイルは開きません。ファイル名が表示されるだけです。
ワークブックを実際に開くには、 を使用できますApplication.Workbooks.Open()
。以下は、使用するために変更できるコードのスニペットです。
Dim file1 as String
Dim file2 as String
Dim book1 as Workbook
Dim book2 as Workbook
Dim comp as Workbook
Dim targetSheet as Worksheet
Dim copySheet as Worksheet
Dim lastRow as Long
Dim lastCol as Long
Set comp = Application.ActiveWorkbook
file1 = Application.getOpenFilename
file2 = Application.getOpenFilename
If file1 <> "False" AND file2 <> "False" Then
Set book1 = Application.Workbooks.Open(file1)
Set book2 = Application.Workbooks.Open(file2)
'Copy the contents from the first sheet of each of the files to a new sheet in a new sheet
comp.Worksheets.add After:=comp.Worksheets(comp.Worksheets.count)
Set targetSheet = comp.Worksheets(comp.Worksheets.count)
Set copySheet = book1.Worksheets(1)
lastRow = copySheet.Cells.SpecialCells(xlCellTypeLastCell).Row
lastCol = copySheet.Cells.SpecialCells(xlCellTypeLastCell).Column
copySheet.Range(copySheet.Cells(1, 1), copySheet.Cells(lastRow, lastCol)).Copy
targetSheet.Cells(1, 1).PasteSpecial
Set copySheet = book2.Worksheets(1)
lastRow = copySheet.Cells.SpecialCells(xlCellTypeLastCell).Row
lastCol = copySheet.Cells.SpecialCells(xlCellTypeLastCell).Column
copySheet.Range(copySheet.Cells(1, 1), copySheet.Cells(lastRow, lastCol)).Copy
lastRow = targetSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
targetSheet.Cells(lastRow, 1).PasteSpecial
book1.Close
book2.Close
End If
これはおそらく問題を正確に解決するわけではありませんが、良い出発点になるはずです。現在、両方のワークブックの最初のシート (一方が他方の上にある) が元のワークブックの新しいシートにコピーされます。
これが役に立てば幸いです。SOへようこそ
于 2012-07-25T13:30:01.090 に答える