【发布时间】:2018-03-10 02:19:19
【问题描述】:
我正在尝试分配一个新的 Excel 工作表,该工作表被提示作为新的工作簿对象打开。我正在尝试下面的代码,但它不起作用
Option Explicit
Sub MoveGeneratedReport()
Dim newWbReport As Workbook
Dim MonthlyComplianceReport As Workbook
Set MonthlyComplianceReport = SelectWorkbook
End Sub
Private Function SelectWorkbook() As Workbook
Dim strFileToOpen As String
strFileToOpen = Application.GetOpenFilename(Title:="Select Compliancy Report for export", _
FileFilter:="Excel Files *.xls* (*.xls*),")
If strFileToOpen <> False Then '<---- Error Ocuring here
Workbooks.Open Filename:=strFileToOpen
End If
End Function
我收到了
“类型不匹配”
错误,但是如果我只运行函数 SelectWorkbook() 它可以正常工作并打开文档。
我的最终目标是打开文档,然后将其分配给 Workbook 对象。有什么建议可以解决这个错误吗?
编辑:
我也应该在这里澄清我的问题...如何通过提示将这个新打开的 Workbook 分配给 Workbook 对象,以便我的其余代码可以使用它?
编辑 2:
这似乎工作得很好
Option Explicit
Sub MoveGeneratedReport()
Dim newWbReport As Workbook
Dim MonthlyComplianceReport As Workbook
Set MonthlyComplianceReport = SelectWorkbook
Debug.Print MonthlyComplianceReport.Name
End Sub
Private Function SelectWorkbook() As Workbook
Dim strFileToOpen As String
strFileToOpen = Application.GetOpenFilename(Title:="Select Compliancy Report for export", _
FileFilter:="Excel Files *.xls* (*.xls*),")
If strFileToOpen <> "" Then
On Error GoTo ErrHandle
Set SelectWorkbook = Workbooks.Open(Filename:=strFileToOpen)
End If
Exit Function
ErrHandle:
If Err.Number <> 1004 Then
MsgBox "Error " & Str(Err.Number) & Chr(13) & _
"Error Line: " & Erl & Chr(13) & Chr(13) & _
Err.Description
End If
End Function
【问题讨论】: