0

すべてのワークブック シートのデータを 1 つの Excel シート (例: A.xls ) から別の既存の Excel (例: B.xls ) にコピーすることは可能ですか。

A.xls のワークブック シートの量に関係なく、VB を使用してロジックを実装できますか (つまり、 A.xlsのすべてのページのすべてのデータを B.xls にコピーする必要があります)

私はプログラミングのバックグラウンドを持っていないので、あらゆる種類の助けに感謝します。

4

5 に答える 5

4

多くのタブにまたがるすべてのデータを 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
于 2012-09-05T17:12:09.017 に答える
3

さて、多くの苦労といくつかの基本的な学習の後、コードを取得することができました

これが機能するコードです

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のガイダンスに感謝します。

于 2012-09-14T05:04:02.010 に答える
1

あるワークシートから別のワークシートにすべてのデータをコピーする最も簡単な方法は、塗りつぶされたすべてのセルで構成される範囲でコピー アンド ペースト操作を使用することです。

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
于 2012-09-05T17:21:12.223 に答える
0

既存のファイル b.xls と言いますが、全部上書きしてしまっても構わないので使わないでください。

CreateObject("Scripting.FileSystemObject").CopyFile "a.xls", "b.xls", true
于 2012-09-05T20:02:07.447 に答える