VBA将特定图纸复制到现有书本

VBA将特定图纸复制到现有书本,vba,excel,spreadsheet,copying,Vba,Excel,Spreadsheet,Copying,这里的任务有两个方面(第一部分已经起作用了)。 任务1:将从组合框中选择的工作表复制到新文档中。 任务2:从原始文档复制特定工作表,并将其添加到上面创建的新文档中 到目前为止,我已经做到了:(但第二个任务不起作用) 我希望你们当中的一位聪明人能告诉我我做错了什么:)我想我知道你遇到的问题。(可能)如果您正在使用excel的新实例,则需要保存它,然后重新打开它。它一定与对象模型有关。不久前我不得不这么做。下面是我使用的代码片段 Set appXL = New Excel.application a

这里的任务有两个方面(第一部分已经起作用了)。
任务1:将从组合框中选择的工作表复制到新文档中。
任务2:从原始文档复制特定工作表,并将其添加到上面创建的新文档中

到目前为止,我已经做到了:(但第二个任务不起作用)


我希望你们当中的一位聪明人能告诉我我做错了什么:)

我想我知道你遇到的问题。(可能)如果您正在使用excel的新实例,则需要保存它,然后重新打开它。它一定与对象模型有关。不久前我不得不这么做。下面是我使用的代码片段

Set appXL = New Excel.application
appXL.Workbooks.Add
Set wbThat = appXL.ActiveWorkbook
wbThat.application.DisplayAlerts = False
wbThat.SaveAs Filename:=strFilePath & "\" & strFileName

'This code needed to allow the copy function to work
wbThat.Close savechanges:=True
Set wbThat = Nothing
Set wbThat = application.Workbooks.Open(strFilePath & "\" & strFileName)
appXL.Quit
Set appXL = Nothing

'Copy Help page from this workbook to the report
wbThis.Sheets("Help").Copy after:=wbThat.Sheets(wbThat.Sheets.Count)

我想我知道你遇到的问题。(可能)如果您正在使用excel的新实例,则需要保存它,然后重新打开它。它一定与对象模型有关。不久前我不得不这么做。下面是我使用的代码片段

Set appXL = New Excel.application
appXL.Workbooks.Add
Set wbThat = appXL.ActiveWorkbook
wbThat.application.DisplayAlerts = False
wbThat.SaveAs Filename:=strFilePath & "\" & strFileName

'This code needed to allow the copy function to work
wbThat.Close savechanges:=True
Set wbThat = Nothing
Set wbThat = application.Workbooks.Open(strFilePath & "\" & strFileName)
appXL.Quit
Set appXL = Nothing

'Copy Help page from this workbook to the report
wbThis.Sheets("Help").Copy after:=wbThat.Sheets(wbThat.Sheets.Count)

你好,杰克-谢谢(我知道耽搁了,对不起,被其他工作分散了注意力)。再次回到这个主题,我正在努力让您的代码思想在我的特定场景中发挥作用。我决定回溯并尝试一种不同的方法,改用数组。我得到了一些更好的进展。现在我得到了一个运行时错误438,“对象不支持此属性或方法”-它创建新书,并移动从下拉列表中选择的工作表,以及支持文档工作表,但无论我如何指定数组,它总是将文档工作表放在第一位,我认为造成问题的原因是当它在单元格(3,2)中查询单元格数据时(它指定了文件名的第一部分),因为ZON-DOCS工作表在新书中是第一个,这些单元格中没有数据。它就这样倒下了。有什么建议吗?哈,或者没有,只是通过手动将一些数据插入引用的单元格来测试这个理论。没有乐趣。
使用ActiveWorkbook.Sheets(数组((Sheet1.CmbSheet.Value),“ZON-DOCS”)。复制ActiveWorkbook.SaveAs uu“C:\temp\”和.Cells(3,2)。文本和格式(Now(),“DD-MM-YY”)&“.xlsm”,xlOpenXMLWorkbookMacroEnabled,错误结束
你好,杰克-谢谢(我知道耽搁了,对不起,被其他工作分散了注意力)。再次回到这个主题,我正在努力让您的代码思想在我的特定场景中发挥作用。我决定回溯并尝试一种不同的方法,改用数组。我得到了一些更好的进展。现在我得到了一个运行时错误438,“对象不支持此属性或方法”-它创建新书,并移动从下拉列表中选择的工作表,以及支持文档工作表,但无论我如何指定数组,它总是将文档工作表放在第一位,我认为造成问题的原因是当它在单元格(3,2)中查询单元格数据时(它指定了文件名的第一部分),因为ZON-DOCS工作表在新书中是第一个,这些单元格中没有数据。它就这样倒下了。有什么建议吗?哈,或者没有,只是通过手动将一些数据插入引用的单元格来测试这个理论。没有乐趣。
使用ActiveWorkbook.Sheets(数组((Sheet1.CmbSheet.Value),“ZON-DOCS”)。复制ActiveWorkbook.SaveAs uu“C:\temp\”和.Cells(3,2)。文本和格式(Now(),“DD-MM-YY”)&“.xlsm”,xlOpenXMLWorkbookMacroEnabled,以
Sub Full_Extract()

Dim wbkOriginal As Workbook
Set wbkOriginal = ActiveWorkbook

'sets site and engineer details into the estate page that is being extracted
Worksheets(Sheet1.CmbSheet.Value).Range("B3").Value = Worksheets("front page").Range("E6")
Worksheets(Sheet1.CmbSheet.Value).Range("D3").Value = Worksheets("front page").Range("N6")
Worksheets(Sheet1.CmbSheet.Value).Range("F3").Value = Worksheets("front page").Range("K6")
Worksheets(Sheet1.CmbSheet.Value).Range("B4").Value = Worksheets("front page").Range("F8")
Worksheets(Sheet1.CmbSheet.Value).Range("D4").Value = Worksheets("front page").Range("K8")

' copies sheet name from combo box into new document, saves it with site name and current date
' into C:\Temp\ folder for ease of access

    With ActiveWorkbook.Sheets(Array((Sheet1.CmbSheet.Value), "Z-MISC"))
            .Copy
            ActiveWorkbook.SaveAs _
            "C:\temp\" _
            & ActiveWorkbook.Sheets(Sheet1.CmbSheet.Value).Cells(3, 2).Text _
            & " " _
            & Format(Now(), "DD-MM-YY") _
            & ".xlsm", _
            xlOpenXMLWorkbookMacroEnabled, , , , False
        End With

'code to close the original workbook to prevent accidental changes etc
Application.DisplayAlerts = False
wbkOriginal.Close
Application.DisplayAlerts = True
End Sub