私は最も奇妙な問題を抱えています。先日、ラップトップで以下のコードを書いていましたが、うまくいきました。現在、デスクトップでテストしていますが、動作しなくなりました。
まず、ここに私のコードがあります
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"
これで、ソルバーはアドインであり、作成時に新しいアプリケーションに読み込まれることがわかりました...しかし、この切り替えをどのように実行しますか? 私はまだ正しいファイルに到達できますが、Application オブジェクトにファイルが 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