如何将单元格从template.xml(2003文件)复制到mydoc.xltm

时间:2019-05-02 06:17:52

标签: excel vba

需要代码帮助来从第二个工作簿中复制单元格(范围/整张纸)。

宏用于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

1 个答案:

答案 0 :(得分:0)

您无需.Activate仅设置没有它的工作簿。 •您可能会受益于阅读 How to avoid using Select in Excel VBA

还要说明该范围是Range("A1:T350")在哪个工作簿和工作表中。请注意,您两次Set wbk到两个不同的工作簿。因此,您也应该使用两个不同的变量,例如wbkSourcewbkDestination

您的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