1

ワークブックとワークシートの間でデータのコピーと貼り付けをしようとしています。次のコードがありますが、時間がかかるようです。コピーにもっと簡単な方法があるかどうか疑問に思っていましたか?

    Sub Test1()

    Dim wb As Workbook, x As String, y As String, wb1 As Workbook

    For Each wb In Application.Workbooks
    If wb.Name <> ThisWorkbook.Name Then x = wb.Name
    Next wb

    Workbooks(x).Activate

    Sheets("Sheet1").Range("A:E").Copy

    ActiveWindow.WindowState = xlMinimized

    Sheets("Sheet1").Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteAll
    Sheets("Sheet1").Range("A1").Select

    Workbooks(x).Activate
    ActiveWindow.WindowState = xlNormal
    Sheets("Sheet1").Range("F:F").Copy
    ActiveWindow.WindowState = xlMinimized
    Sheets("Sheet1").Range("G:G").Select
    Selection.PasteSpecial Paste:=xlPasteAll
    Workbooks(x).Activate
    ActiveWindow.WindowState = xlNormal

    End Sub
4

2 に答える 2

0

私はJMAXからいくつかのアイデアを得て、次のような方法を見つけました:

Sub test()
Dim wb As Workbook, wb2 As Workbook
Dim ws As Worksheet
Dim vFile As Variant

'Set source workbook
Set wb = ActiveWorkbook
'Open the target workbook
vFile = Application.GetOpenFilename("Excel-files,*.xls", _
    1, "Select One File To Open", , False)
'if the user didn't select a file, exit sub
If TypeName(vFile) = "Boolean" Then Exit Sub
Workbooks.Open vFile
'Set targetworkbook
Set wb2 = ActiveWorkbook

'For instance, copy data from a range in the first workbook to another range in the other workbook
wb2.Worksheets("Sheet1").Range("A:B").Copy
wb.Worksheets("Sheet1").Activate
wb.Worksheets("Sheet1").Range("A1").PasteSpecial Paste:=xlPasteAll
End Sub
于 2013-08-28T01:22:41.063 に答える