|
▼YU-TANG さん:
YU-TANGさん、こんばんは!
詳細な御説明ありがとうございます!
皆様プロフェッショナルな方々なので、ド素人な私はお話についていけずあたふたしてしまっていたので、コードを書いて頂けて本当にありがたかったです!
Dim strSql As String
sFile = "K:\外貨入出金比較\BANK BOOK 照合\Book1.xls"
sExcel2kExe = "C:\Program Files\Microsoft Office\Office\Excel.Exe"
Shell """" & sExcel2kExe & """ """ & sFile & """", vbNormalFocus
DoEvents
Set xlBook = GetObject(sFile)
Set xlApp = xlBook.Application
MsgBox xlApp.Version
で実行して、2000のワークシートへ書き込みができました!!!!
2000/2007双方を開けている状態でも試しましたが、問題なく処理ができました!
本当にありがとうございました!!
YU-TANGさんの優しさに感動です!
>こんばんは、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 と混同しないようにしてください。こちらは同期待ち
>したらダメですので)。
>
>上の説明で伝わりますか?
>それでは。
|
|