如何使用Excel VBA从使用文件浏览器select的工作簿中复制工作表?

我试图创造我认为应该是一个非常简单的macros。 我每天处理同样的报告,每天早上更新。 也就是说,对于我来说,能够在昨天的工作簿中获得与某个早晨的新数据相一致的数据真是太好了。

基本上,我想要做的就是使用文件浏览器将工作表从另一个工作簿(带有昨天的报告的工作表)复制到我的活动工作簿(带有今天的报告的工作簿)中。

Application.GetOpenFilename方法打开一个像我想要的文件浏览器,但我不知道如何使用它返回的目录string复制到我想要的工作表中。

这是我一直在使用的代码:

Sub Macro5() Dim todayWBName As String Dim yesterdayWB As Workbook Set todayWB = ActiveWorkbook todayWBName = todayWB.Name 'open file from last business day yesterdayWBName = Application.GetOpenFilename( _ Title:="Select backorder file from last business day", _ MultiSelect:=False) If yesterdayWBName = False Then Exit Sub Else End If Workbooks.Open yesterdayWBName Set yesterdayWB = ActiveWorkbook todayWB.Activate 'copy in yesterday's info yesterdayWB(1).Copy After:=todayWB.Sheets(1) yesterdayWB.Close Sheets("Sheet 1 (2)").Name = "YesterdayResolution" Sheets(1).Activate End Sub 

如果有人能告诉我我在这里做错了什么,我真的很感激。

提前致谢。

尝试这个。 使用GetOpenFileName的string结果并将其直接传递给Workbooks.Open方法,将返回值作为分配给yesterdayWB对象的对象(工作簿)处理。

另外,你有一个错误:

 yesterdayWB(1).Copy After:=todayWB.Sheets(1) 

工作簿对象不是可自定义的,你的意思(我认为)是yesterdayWB.Worksheets(1).Copy ...

 Sub Macro5() Dim yesterdayWB As Workbook Dim yesterdayWBName As String Dim todayWB As Workbook Set todayWB = ActiveWorkbook 'open file from last business day yesterdayWBName = Application.GetOpenFilename( _ Title:="Select backorder file from last business day", _ MultiSelect:=False) If yesterdayWBName = False Then Exit Sub End If Set yesterdayWB = Workbooks.Open(yesterdayWBName) 'copy in yesterday's info yesterdayWB.Worksheets(1).Copy After:=todayWB.Sheets(1) yesterdayWB.Close ' the sheet you copied is at index "2" because you put it after Sheets(1) todayWB.Sheets(2).Name = "YesterdayResolution" todayWB.Sheets(1).Activate End Sub