需要代码帮助来从第二个工作簿中复制单元格(范围/整张纸)。
宏用于094-0 ..... macro.xlsm文件中,我需要将第一张纸(或至少范围A1:T10)从第二张文件复制到第一张文件中。然后关闭第二个文件而不保存更改。
我在激活wokrbook和粘贴数据时遇到问题。
Dim wbk As Workbook
Sheets.Add(after:=Sheets(Sheets.Count)).name = artikl & "_SK" & i 'it's OK
strSecondFile = "C:\…..\template_2003_XML.xml"
strFirstFile = "C:\…..\094-022605-00001_w_macro.xlsm"
Set wbk = Workbooks.Open(strSecondFile)
Range("A1:T350").Copy
Set wbk = Workbooks("094-022605-00001_w_macro").Activate
With wbk.Sheets(sheets.Count)
Range("A1").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
End With
Workbooks("template_2003_XML.xml").Close savechanges:=False
答案 0 :(得分:0)
您无需.Activate
仅设置没有它的工作簿。 •您可能会受益于阅读
How to avoid using Select in Excel VBA。
还要说明该范围是Range("A1:T350")
在哪个工作簿和工作表中。请注意,您两次Set wbk
到两个不同的工作簿。因此,您也应该使用两个不同的变量,例如wbkSource
和wbkDestination
。
您的with语句With wbk.Sheets(sheets.Count)
也是没有用的,除非您告诉您的范围起始.
应该使用tha with语句:.Range()
Sheets.Add(After:=Sheets(Sheets.Count)).Name = artikl & "_SK" & i 'it's OK
Dim SourceFilePath As String
SourceFilePath = "C:\…..\template_2003_XML.xml"
Dim DestinationFilePath As String
DestinationFilePath = "C:\…..\094-022605-00001_w_macro.xlsm"
Dim wbkSource As Workbook
Set wbkSource = Workbooks.Open(SourceFilePath)
Dim wbkDestination As Workbook
Set wbkDestination = ThisWorkbook 'Workbooks("094-022605-00001_w_macro")
wbkSource.Worksheets("source sheet").Range("A1:T350").Copy
With wbkDestination.Sheets(sheets.Count)
.Range("A1").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End With
wbkSource.Close SaveChanges:=False
我建议始终激活Option Explicit
:在VBA编辑器中,转到工具› 选项› Require Variable Declaration