すべてのワークブック シートのデータを 1 つの Excel シート (例: A.xls ) から別の既存の Excel (例: B.xls ) にコピーすることは可能ですか。
A.xls のワークブック シートの量に関係なく、VB を使用してロジックを実装できますか (つまり、 A.xlsのすべてのページのすべてのデータを B.xls にコピーする必要があります)。
私はプログラミングのバックグラウンドを持っていないので、あらゆる種類の助けに感謝します。
多くのタブにまたがるすべてのデータを 1 つのタブにコピーしたいと考え始めていますが、実際にデータを別々のタブに保持したい場合は、このようなものを使用して A.xlsx のワークシートをループしてコピーできます。それらを B.xlsx に:
Sub copy_sheets()
Dim eapp As Excel.Application
Dim wkbk_from As Workbook
Dim wkbk_to As Workbook
Dim wksh As Worksheet
Set eapp = CreateObject("Excel.Application")
Set wkbk_from = eapp.Workbooks.Open("C:\Documents\Miscellaneous-DT\Excel\a.xlsx")
Set wkbk_to = eapp.Workbooks.Open("C:\Documents\Miscellaneous-DT\Excel\b.xlsx")
eapp.Visible = True
For Each wksh In wkbk_from.Worksheets
wksh.Copy After:=wkbk_to.Worksheets(Worksheets.Count)
Next wksh
End Sub
さて、多くの苦労といくつかの基本的な学習の後、コードを取得することができました
これが機能するコードです
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objPasteData = objExcel.Workbooks.Open("C:\A.xlsx") 'Copy From File
Set objRawData= objExcel.Workbooks.Open("C:\B.xls") 'Paste To File
Set obj1 = objPasteData.WorkSheets("RawData") 'Worksheet to be cleared
obj1.Cells.Clear
countSheet = objRawData.Sheets.Count
For i = 1 to countSheet
objRawData.Activate
name = objRawData.Sheets(i).Name
objRawData.WorkSheets(name).Select
objRawData.Worksheets(name).Range("A2").Select
objExcel.ActiveSheet.UsedRange.Select
usedRowCount1 = objExcel.Selection.Rows.Count
objExcel.Range("A2:H" & usedRowCount1).Copy
objPasteData.Activate
objPasteData.WorkSheets("RawData").Select
objExcel.ActiveSheet.UsedRange.Select
usedRowCount2= objExcel.Selection.Rows.Count
objPasteData.Worksheets("RawData").Range("A"& usedRowCount2 + 1 ).PasteSpecial Paste =xlValues
Next
objPasteData.Save
@Nilpoと@ryanpのガイダンスに感謝します。
あるワークシートから別のワークシートにすべてのデータをコピーする最も簡単な方法は、塗りつぶされたすべてのセルで構成される範囲でコピー アンド ペースト操作を使用することです。
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objWorkbook1= objExcel.Workbooks.Open("C:\test1.xls")
Set objWorkbook2= objExcel.Workbooks.Open("C:\test2.xls")
Set objRange = objWorkbook1.Worksheets("Sheet1").UsedRange.Copy
objWorkbook2.Worksheets("Sheet1").Range("A1").PasteSpecial objRange
objWorkbook1.Save
objWorkbook1.Close
objWorkbook2.Save
objWorkbook2.Close
既存のファイル b.xls と言いますが、全部上書きしてしまっても構わないので使わないでください。
CreateObject("Scripting.FileSystemObject").CopyFile "a.xls", "b.xls", true