Vba Excel在运行“复制/粘贴数据”宏后使数据源工作簿保持打开状态

Vba Excel在运行“复制/粘贴数据”宏后使数据源工作簿保持打开状态,vba,excel,Vba,Excel,我对VBA非常非常陌生。 我正试图通过一个宏自动复制8个动态“个人”工作簿中的数据,并粘贴到一个主工作簿中,所有主工作簿都在8个选项卡上分层,因为各个团队成员将不断更新这些单独的工作簿 下面的宏运行正常,但excel随后会将数据源工作簿保持打开状态,因此无法处理8个单独的文件 运行micro后,我可以添加什么代码来告诉excel自动关闭数据源文件?在end sub不工作之前的代码末尾添加“工作簿”(“C:\Users\MIRAR\Desktop\AD HOC\DEMO FILE-WIP\SHAR

我对VBA非常非常陌生。 我正试图通过一个宏自动复制8个动态“个人”工作簿中的数据,并粘贴到一个主工作簿中,所有主工作簿都在8个选项卡上分层,因为各个团队成员将不断更新这些单独的工作簿

下面的宏运行正常,但excel随后会将数据源工作簿保持打开状态,因此无法处理8个单独的文件

运行micro后,我可以添加什么代码来告诉excel自动关闭数据源文件?在end sub不工作之前的代码末尾添加“工作簿”(“C:\Users\MIRAR\Desktop\AD HOC\DEMO FILE-WIP\SHARNY.xlsx”).Close”,并发出错误9

下面的代码是从1选项卡上的8个工作簿中的1个中复制过去的数据

非常感谢

Sub CopyingRange()
Workbooks.Open "C:\Users\MIRAR\Desktop\AD HOC\DEMO FILE - WIP\SHARNY.xlsx"

Dim CopyFromBook As Workbook
Dim CopyToWbk As Workbook
Dim ShToCopy As Worksheet

Set CopyFromBook = Workbooks("SHARNY.xlsx")
Set ShToCopy = CopyFromBook.Worksheets("Sheet1")
Set CopyToWbk = Workbooks("Consolidated Tracker File.xlsx")

Workbooks("C:\Users\MIRAR\Desktop\AD HOC\DEMO FILE - WIP\SHARNY.xlsx").Close 

End Sub
简言之,答案是:

工作簿(“SHARNY.xlsx”)。关闭

更好的答案是使用直接指向工作簿的变量:

Sub CopyingRange()
    Dim CopyFromBook As Workbook
    Dim CopyToWbk As Workbook
    Dim ShToCopy As Worksheet

    Set CopyFromBook = Workbooks.Open("C:\Users\MIRAR\Desktop\AD HOC\DEMO FILE - WIP\SHARNY.xlsx")
    Set ShToCopy = CopyFromBook.Worksheets("Sheet1")
    Set CopyToWbk = Workbooks("Consolidated Tracker File.xlsx")

    CopyFromBook.Close
End Sub

将其分配给工作簿变量并使用该变量关闭(或任何其他操作)


我们采取了完全相同的路线,但我在(更新的)答案中缩进了代码:谢谢帮助!我使用了@Excelosaurus的答案,这与你的答案相匹配!我给你们投票,不是因为缩进,而是因为你们也给出了“简短”的答案DBTW-看看你的个人资料,我想你一定是我的老朋友了-我开始使用垃圾-80大约是在我开始工作编程的一年后。我当时9岁:TRS80问世时是D9?那就意味着我有十年的时间在你身上,所以一定要尊重你的长辈!!它面世的时候我才21岁(查看维基百科的发布日期),这也意味着它是在我开始编程3年后发布的。非常感谢!成功了!!!!我直接指向变量,而不是根据您建议的“更好”路线/实践指向实际工作簿。刚刚学到了一些新东西!
Sub CopyingRange()

Dim CopyFromBook As Workbook
Dim CopyToWbk As Workbook
Dim ShToCopy As Worksheet

Set CopyFromBook = Workbooks.Open("C:\Users\MIRAR\Desktop\AD HOC\DEMO FILE - WIP\SHARNY.xlsx")
Set ShToCopy = CopyFromBook.Worksheets("Sheet1")
Set CopyToWbk = Workbooks("Consolidated Tracker File.xlsx")

CopyFromBook.Close

End Sub