Windows7 + Excel2010 でデータ集計のマクロを組んでいます。
集計マクロのブックとは別にデータのブックがあるので、集計時にブックを開いて ADO で接続して必要なデータを持ってきています。
lang
1 Dim wbTest As Workbook 2 Dim cnWork As ADODB.Connection 3 4 Set wbTest = Workbooks.Open("data.xlsx", , False, , "password") 5 6 Set cnWork = New ADODB.Connection 7 cnWork.Provider = "MSDASQL" 8 cnWork.ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & "DBQ=" & wbTest.FullName & "; ReadOnly=false;" 9 cnWork.Open
としているのですが、起動している Excel のインスタンスが2つあるときに cnWork.Open が正しく動作しません。
先に起動している Excel インスタンスを使って cnWork.Open しようとするらしく、マクロブックが後から起動したほうの Excel で開いている場合だけ、Workbooks.Open でもう一つの(先に起動しているほうの)Excel でデータのブックを開こうとしてしまいます。
その結果、
・Workbooks.Open でデータブックが開く(これはマクロと同じExcel上で開きます)
・cnWork.Open でもう一つのExcelでブックを開こうとする
→ パスワードを渡していないので、「'data.xlsx'は保護されています」のパスワード入力ダイアログが出る
という状態になってしまうのですが、回避する方法はあるのでしょうか?

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/05/29 03:43