|
こんばんは、YU-TANG です。
> 本日2000/2007の双方のバージョンのエクセルを開けている状態で再度試したらダメでした・・・。
やはりそうでしたか。
> (ちなみに、Workbooks.の前にはxlappをつけて実行していました。スミマセン。)
了解です。
できれば実際のコードのまま転記していただけるとありがたいです。
> もう一度YU-TANG さんと小僧さんにご回答いただいた内容を含めていろいろ試してみます!
ご苦労様です。
ちょっと自分の説明が伝わりにくかったようなので、改めて説明して
みますが。
もともと 10959 でこう書きました。
> 先に新規ブックをどっかに作ってしまって、そいつを Shell で Excel 2000 に
> 開かせたら、GetObject で Excel 2000 のインスタンスを取れませんかね。
箇条書きにすると、こういう意味です。
1. 先に新規ブックをどこかに作っておく
2. 1 のファイルを Shell で Excel 2000 に開かせる
3. GetObject で 2 のインスタンスを取得する(混在環境がないので実際に取れるかどうかは知らない)
この通りのコードはまだ書かれていないようなので、あるいはコードを
書いて提示しないと伝わらないのかもしれません。
こんな感じです(ベタ打ちです)。
' 1. 先に新規ブックをどこかに作っておく
sFile = "K:\外貨入出金比較\BANK BOOK 照合\Book1.xls"
' 2. 1 のファイルを Shell で Excel 2000 に開かせる
sExcel2kExe = "C:\Program Files\Microsoft Office\Office\Excel.Exe"
Shell """" & sExcel2kExe & """ """ & sFile & """", vbNormalFocus
DoEvents ' 念のため
' 3. GetObject で 2 のインスタンスを取得する
Set xlBook = GetObject(sFile)
Set xlApp = xlBook.Application
MsgBox xlApp.Version ' 9.0 だったら Excel 2000
注意点としては、2 で Excel 2000 を起動しても ROT に登録される
前に 3 に進んでしまうと、GetObject が既存のインスタンスを取得
せずに Excel 2007 で新たに開きに行く可能性があります。その場合
は 2 と 3 のあいだでちょっと時間稼ぎする必要があるかもしれ
ません(10979 と混同しないようにしてください。こちらは同期待ち
したらダメですので)。
上の説明で伝わりますか?
それでは。
|
|