Vba 我正在尝试将多个工作簿中的值复制到一个工作表中
我试图使用宏将一个工作簿中一个工作表中的多个单元格复制到主工作表中。我使用记录工具创建了一个宏,但是当我尝试在不同的工作簿中运行它时,代码的第一部分适用于不同的工作簿,而其他部分引用回原始工作表。我看到宏一直在激活特定窗口(“Vincent…”),我想知道如何将所选工作表定义为变量,从而使用该变量执行其余的激活Vba 我正在尝试将多个工作簿中的值复制到一个工作表中,vba,excel,Vba,Excel,我试图使用宏将一个工作簿中一个工作表中的多个单元格复制到主工作表中。我使用记录工具创建了一个宏,但是当我尝试在不同的工作簿中运行它时,代码的第一部分适用于不同的工作簿,而其他部分引用回原始工作表。我看到宏一直在激活特定窗口(“Vincent…”),我想知道如何将所选工作表定义为变量,从而使用该变量执行其余的激活 Range("F4:F14").Select Selection.Copy Windows("Combined Spreadsheet.xlsx").Activate Range("B"
Range("F4:F14").Select
Selection.Copy
Windows("Combined Spreadsheet.xlsx").Activate
Range("B" & Rows.Count).End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=True
Windows("VincentCAIN107_Intra1_VD1_Rudd.xlsx").Activate
Range("H4:H14").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Combined Spreadsheet.xlsx").Activate
Range("L" & Rows.Count).End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=True
Windows("VincentCAIN107_Intra1_VD1_Rudd.xlsx").Activate
Range("N4:N14").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Combined Spreadsheet.xlsx").Activate
Range("V" & Rows.Count).End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=True
Windows("VincentCAIN107_Intra1_VD1_Rudd.xlsx").Activate
Range("R4:R14").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Combined Spreadsheet.xlsx").Activate
Range("AF" & Rows.Count).End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
, Transpose:=True
Windows("VincentCAIN107_Intra1_VD1_Rudd.xlsx").Activate
Range("S4:S14").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Combined Spreadsheet.xlsx").Activate
Range("AP" & Rows.Count).End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=True _
, Transpose:=True
在宏的顶部声明一个字符串
DIM BookName As String
然后给它指定书名
BookName = "VincentCAIN107_Intra1_VD1_Rudd.xlsx"
然后您可以将其与Windows
方法一起使用
Windows(BookName).Activate
为了简化代码,请添加一个函数来处理给定正确参数的复制
Sub CopyCells(Book1 As String, Book2 As String, RngSrc As String, ColumnDest As String)
Windows(Book1).Activate
Range(RngSrc).Select
Selection.Copy
Windows(Book2).Activate
Range(ColumnDest & Rows.Count).End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial _
Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
End Sub
使用此函数将使源代码简化为
Sub CopyWorkbooks()
Dim Book1 As String
Dim Book2 As String
Book1 = "VincentCAIN107_Intra1_VD1_Rudd.xlsx"
Book2 = "Combined Spreadsheet.xlsx"
Call CopyCells(Book1, Book2, "F4:F14", "B")
Call CopyCells(Book1, Book2, "H4:H14", "L")
Call CopyCells(Book1, Book2, "N4:N14", "V")
Call CopyCells(Book1, Book2, "R4:R14", "AF")
Call CopyCells(Book1, Book2, "S4:S14", "AP")
End Sub
在宏的顶部声明一个字符串
DIM BookName As String
然后给它指定书名
BookName = "VincentCAIN107_Intra1_VD1_Rudd.xlsx"
然后您可以将其与Windows
方法一起使用
Windows(BookName).Activate
为了简化代码,请添加一个函数来处理给定正确参数的复制
Sub CopyCells(Book1 As String, Book2 As String, RngSrc As String, ColumnDest As String)
Windows(Book1).Activate
Range(RngSrc).Select
Selection.Copy
Windows(Book2).Activate
Range(ColumnDest & Rows.Count).End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial _
Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
End Sub
使用此函数将使源代码简化为
Sub CopyWorkbooks()
Dim Book1 As String
Dim Book2 As String
Book1 = "VincentCAIN107_Intra1_VD1_Rudd.xlsx"
Book2 = "Combined Spreadsheet.xlsx"
Call CopyCells(Book1, Book2, "F4:F14", "B")
Call CopyCells(Book1, Book2, "H4:H14", "L")
Call CopyCells(Book1, Book2, "N4:N14", "V")
Call CopyCells(Book1, Book2, "R4:R14", "AF")
Call CopyCells(Book1, Book2, "S4:S14", "AP")
End Sub
在宏的顶部声明一个字符串
DIM BookName As String
然后给它指定书名
BookName = "VincentCAIN107_Intra1_VD1_Rudd.xlsx"
然后您可以将其与Windows
方法一起使用
Windows(BookName).Activate
为了简化代码,请添加一个函数来处理给定正确参数的复制
Sub CopyCells(Book1 As String, Book2 As String, RngSrc As String, ColumnDest As String)
Windows(Book1).Activate
Range(RngSrc).Select
Selection.Copy
Windows(Book2).Activate
Range(ColumnDest & Rows.Count).End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial _
Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
End Sub
使用此函数将使源代码简化为
Sub CopyWorkbooks()
Dim Book1 As String
Dim Book2 As String
Book1 = "VincentCAIN107_Intra1_VD1_Rudd.xlsx"
Book2 = "Combined Spreadsheet.xlsx"
Call CopyCells(Book1, Book2, "F4:F14", "B")
Call CopyCells(Book1, Book2, "H4:H14", "L")
Call CopyCells(Book1, Book2, "N4:N14", "V")
Call CopyCells(Book1, Book2, "R4:R14", "AF")
Call CopyCells(Book1, Book2, "S4:S14", "AP")
End Sub
在宏的顶部声明一个字符串
DIM BookName As String
然后给它指定书名
BookName = "VincentCAIN107_Intra1_VD1_Rudd.xlsx"
然后您可以将其与Windows
方法一起使用
Windows(BookName).Activate
为了简化代码,请添加一个函数来处理给定正确参数的复制
Sub CopyCells(Book1 As String, Book2 As String, RngSrc As String, ColumnDest As String)
Windows(Book1).Activate
Range(RngSrc).Select
Selection.Copy
Windows(Book2).Activate
Range(ColumnDest & Rows.Count).End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial _
Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
End Sub
使用此函数将使源代码简化为
Sub CopyWorkbooks()
Dim Book1 As String
Dim Book2 As String
Book1 = "VincentCAIN107_Intra1_VD1_Rudd.xlsx"
Book2 = "Combined Spreadsheet.xlsx"
Call CopyCells(Book1, Book2, "F4:F14", "B")
Call CopyCells(Book1, Book2, "H4:H14", "L")
Call CopyCells(Book1, Book2, "N4:N14", "V")
Call CopyCells(Book1, Book2, "R4:R14", "AF")
Call CopyCells(Book1, Book2, "S4:S14", "AP")
End Sub
我想你可以稍微整理一下你的代码。以下是一个例子:
Sub JoinArray()
Dim master As Worksheet, source As Worksheet, copyCols() As Variant, pasteCols() As Variant, i As Integer
Set master = Workbooks("Combined Spreadsheet").Worksheets(1)
Set source = Workbooks("VincentCAIN107_Intra1_VD1_Rudd").Worksheets(1)
copyCols = Array("F", "H", "N", "R", "S")
pasteCols = Array("B", "L", "V", "AF", "AP")
For i = 0 To UBound(copyCols)
source.Range(copyCols(i) & "4:" & copyCols(i) & 14).Copy
master.Range(pasteCols(i) & master.Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Next i
End Sub
注:
我想你可以稍微整理一下你的代码。以下是一个例子:
Sub JoinArray()
Dim master As Worksheet, source As Worksheet, copyCols() As Variant, pasteCols() As Variant, i As Integer
Set master = Workbooks("Combined Spreadsheet").Worksheets(1)
Set source = Workbooks("VincentCAIN107_Intra1_VD1_Rudd").Worksheets(1)
copyCols = Array("F", "H", "N", "R", "S")
pasteCols = Array("B", "L", "V", "AF", "AP")
For i = 0 To UBound(copyCols)
source.Range(copyCols(i) & "4:" & copyCols(i) & 14).Copy
master.Range(pasteCols(i) & master.Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Next i
End Sub
注:
我想你可以稍微整理一下你的代码。以下是一个例子:
Sub JoinArray()
Dim master As Worksheet, source As Worksheet, copyCols() As Variant, pasteCols() As Variant, i As Integer
Set master = Workbooks("Combined Spreadsheet").Worksheets(1)
Set source = Workbooks("VincentCAIN107_Intra1_VD1_Rudd").Worksheets(1)
copyCols = Array("F", "H", "N", "R", "S")
pasteCols = Array("B", "L", "V", "AF", "AP")
For i = 0 To UBound(copyCols)
source.Range(copyCols(i) & "4:" & copyCols(i) & 14).Copy
master.Range(pasteCols(i) & master.Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Next i
End Sub
注:
我想你可以稍微整理一下你的代码。以下是一个例子:
Sub JoinArray()
Dim master As Worksheet, source As Worksheet, copyCols() As Variant, pasteCols() As Variant, i As Integer
Set master = Workbooks("Combined Spreadsheet").Worksheets(1)
Set source = Workbooks("VincentCAIN107_Intra1_VD1_Rudd").Worksheets(1)
copyCols = Array("F", "H", "N", "R", "S")
pasteCols = Array("B", "L", "V", "AF", "AP")
For i = 0 To UBound(copyCols)
source.Range(copyCols(i) & "4:" & copyCols(i) & 14).Copy
master.Range(pasteCols(i) & master.Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Next i
End Sub
注:
用于将变量设置为工作簿:(示例)
Option Explicit'这强制声明变量(,总是好的)
亚MySub
Dim Wb作为工作簿,MAIN Wb作为工作簿
设置MainWB=Workbooks(“Combined Spreadsheet.xlsx”)“假设它已打开
清楚
如果工作簿尚未打开,它将抛出一个错误
设置Wb=Workbooks(“WhateverName.xls”)以将变量设置为工作簿:(示例)
Option Explicit'这强制声明变量(,总是好的)
亚MySub
Dim Wb作为工作簿,MAIN Wb作为工作簿
设置MainWB=Workbooks(“Combined Spreadsheet.xlsx”)“假设它已打开
清楚
如果工作簿尚未打开,它将抛出一个错误
设置Wb=Workbooks(“WhateverName.xls”)以将变量设置为工作簿:(示例)
Option Explicit'这强制声明变量(,总是好的)
亚MySub
Dim Wb作为工作簿,MAIN Wb作为工作簿
设置MainWB=Workbooks(“Combined Spreadsheet.xlsx”)“假设它已打开
清楚
如果工作簿尚未打开,它将抛出一个错误
设置Wb=Workbooks(“WhateverName.xls”)以将变量设置为工作簿:(示例)
Option Explicit'这强制声明变量(,总是好的)
亚MySub
Dim Wb作为工作簿,MAIN Wb作为工作簿
设置MainWB=Workbooks(“Combined Spreadsheet.xlsx”)“假设它已打开
清楚
如果工作簿尚未打开,它将抛出一个错误
Set Wb=Workbooks(“WhateverName.xls”)'您好,我不太明白如何实现这段代码,sub copycell(book1..)是后来在sub copycell()中使用的函数吗?因此,两者都必须放在窗口中,这只是一个函数调用另一个函数。我已经重命名了其中一个以帮助解决任何混淆。您好,我真的不知道如何实现此代码,sub copycell(book1..)是后来在sub copycell()中使用的函数吗?因此,两者都必须放在窗口中,这只是一个函数调用另一个函数。我已经重命名了其中一个以帮助解决任何混淆。您好,我真的不知道如何实现此代码,sub copycell(book1..)是后来在sub copycell()中使用的函数吗?因此,两者都必须放在窗口中,这只是一个函数调用另一个函数。我已经重命名了其中一个以帮助解决任何混淆。您好,我真的不知道如何实现此代码,sub copycell(book1..)是后来在sub copycell()中使用的函数吗?因此,两者都必须放在窗口中,这只是一个函数调用另一个函数。我已经重新命名了其中一个,以帮助解决任何困惑。太好了!这几乎奏效了。最近我尝试了一种定义范围的方法,但我不确定如何使用粘贴功能。我想知道在这段代码中哪里可以实现特殊的粘贴选项?试着保留源.Range(copyCols(I)&“4:”©Cols(I)&14)。复制行,删除目的地:=…
代码,然后在下面添加新行:master.Range(pasteCols(I)&master.Rows.Count)。结束(xlUp)。偏移量(1,0).Paste特殊粘贴:=xlAll,操作:=xlNone,skipblank:=F