gpt4 book ai didi

vba - Workbooks.Open 返回与文件名不同的文件

转载 作者:行者123 更新时间:2023-12-02 00:39:04 25 4
gpt4 key购买 nike

我遇到了最奇怪的问题。前几天我在笔记本电脑上编写了以下代码,并且运行良好。现在,我正在桌面上测试它,但它停止工作了。

首先,这是我的代码

Dim oApp As Application
Dim oWb As Workbook

Set oApp = New Application
oApp.Visible = True
Set oWb = oApp.Workbooks.Open(Filename:="C:\myFile.xlsx", ReadOnly:=True)

debug.print oWb.name
'returns "SOLVER.XLAM"
' "SOLVER.XLAM" is not "myFile.xlsx'

debug.print oApp.Workbooks.Count
'returns 1

debug.print oApp.Workbooks(1).name
'returns "myFile.xlsx"

现在,我知道求解器是一个插件,并且在创建它时将其加载到新应用程序中......但是它如何执行此切换?我仍然可以获得正确的文件,但我不想冒险碰巧我的应用程序对象中只有 1 个文件(或者第一个文件是我加载的文件)

其他信息

我正在从 Excel 实例中调用执行此宏,并且希望打开一个单独的 Excel 实例,然后在该另一个实例中打开特定的工作簿 ("C:\myFile.xlsx")。

我遇到的关键问题是,当我打开另一个实例,然后添加工作簿并将其设置为我的 oWb 变量时...不知何故,当我稍后调用该 oWb 变量时,它指的是与我不同的东西已将其设置为。

'This is how it makes me feel:
Dim x As Integer
x = 5

Debug.Print x
' 12

最佳答案

我认为,如果您稍微改进一下代码以确保您完全按照您想要的方式进行操作,那就没问题了。由于不清楚您是从 Excel 还是其他 MS Office 应用程序中调用代码,所以我将其放在下面的子目录中。

如果在 Excel 中运行,请运行它:

Option Explicit

Sub insideXL()

Dim oWb As Workbook
Set oWb = Workbooks.Open("C:\myFile.xlsx", ReadOnly:=True)

Debug.Print oWb.Name
Debug.Print Workbooks.Count
Debug.Print Workbooks(1).Name

oWb.Close false

Set oWb = Nothing

End Sub

如果在另一个程序中运行,请运行此命令。我使用早期绑定(bind),但如果您愿意,您也可以使用后期绑定(bind):

Sub outsideXL()
'make sure Microsoft Excel X.X Object Library is checked in Tools > References

Dim oApp As Excel.Application
Set oApp = New Excel.Application

Dim oWb As Excel.Workbook
Set oWb = oApp.Workbooks.Open("C:\myFile.xlsx", ReadOnly:=True)

oApp.Visible = True

Debug.Print oWb.Name
Debug.Print Workbooks.Count
Debug.Print Workbooks(1).Name

oWb.Close = True
Set oWb = Nothing
Set oApp = Nothing

End Sub

关于vba - Workbooks.Open 返回与文件名不同的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13019981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com