编辑: 经过大量帮助并且不知道发生了什么,它使用不同的打开方法工作(请参阅下面的@JohnMuggin的帮助) - 所以我取消注释我的原始代码,突然它工作了。
我只发现了另一个Workbook.Open("file")不返回任何内容的实例(链接到 Q)。然而,他们的问题是因为调用Workbook.Open("file")了用户定义的函数(据我理解)。在这里,我在 a 中调用它Sub,但遇到了同样的问题并且找不到解决方案。我使用的是 Excel 2013。
Private Sub CommandButton2_Click()
'Set variables
Dim wb As Workbook 'Workbook to open
Dim wbR As Worksheet 'This is the raw data on the new workbook
Dim wsL As Worksheet 'Worksheet in current file
Dim myFile As String 'File to open
Dim FilePicker As FileDialog
'Set light chain hit worksheet
Set wsL = ThisWorkbook.Worksheets(3)
'Optimizes Speed
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
'Retrieve Target Folder Path From User
Set FilePicker = Application.FileDialog(msoFileDialogFilePicker)
'Opens folder-picking window
With FilePicker
.Title = "Select a file."
.AllowMultiSelect = False
If .Show = True Then
myFile = .SelectedItems(1)
Else: GoTo NextCode
End If
End With
'If folder is not selected
NextCode:
myFile = myFile
If myFile = "" Then GoTo ResetSettings
'Set variable equal to opened workbook
Set wb = Workbooks.Open(myFile)
Run Code Online (Sandbox Code Playgroud)
宏继续,但最后一行Set wb = Workbooks.Open(myFile)设置wb为Nothing。wb直到我在代码中进一步调用之前,这不会产生任何错误。
较早的一行Set wsL = ThisWorkbook.Worksheets(3)也设置wsL为Nothing。
我已使用调试器检查了每一行和值,并确定了myFile正确的路径、文件名和扩展名。
如果您打开了一份工作簿副本(在不同的文件夹中),其名称与您的 VBA 尝试打开的工作簿名称相同,则该工作簿将自动失败。ActiveWorkbook 解决方案似乎可以工作 - 因为您已经至少打开了一本工作簿 - 并且该工作簿处于活动状态 - 但它不是您想象的那样。
我想这可能是一个常见的错误 - 因为在开发 VBA 项目时,您可能会打开目标工作簿的副本来检查列号等。
| 归档时间: |
|
| 查看次数: |
14400 次 |
| 最近记录: |