プロが教えるわが家の防犯対策術!

VBからエクセルを起動する際、すでに開いているファイルは開かないようにしたく、検索をした結果
http://oshiete1.goo.ne.jp/kotaeru.php3?q=237618
の回答があり参考にしたのですが、うまくいきません。
はじめは
  Dim xlsApp As Excel.Application
  Dim xlsBook As Excel.Workbook
がうまくいかず悩んだのですが、「オブジェクト」-「参照設定」でエクセルを選択することによって解決しましたが、
  For Each xlsBook In xlsApp.Workbooks
    '見つかったらループを抜ける
    If StrComp(xlsBook.FullName, findBookPath, vbTextCompare) = 0 Then
    Exit For
   End If
  Next xlsBook
の部分で上手く引っ掛けることができません。
なにか設定が足りないのか?
どなたか分かる方がみえましたらよろしくお願いいたします。
では

A 回答 (2件)

FullNameで受け取るパスは絶対パスだったと思います。


findBookPathは絶対パスになっていますか?
それと、パスの最後等にスペース等が入っているとStrCompは-1を返すので注意してください。

上記の質問ですと、WorkbookをOpenする事は出来ているわけですよね。
そうすると、このぐらいしか思いつかないです。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。
初心者なのであまり難しいことは分かりませんが、
STOPで止めて確認したのですが、FullNameは”c:¥○○¥○○.xls”
となっており最後に空白は入っていません。
また、OPENはできる状態で、二重に起動してしまう問題です。
後、
  On Error Resume Next と
  On Error GoTo 0を外して、
エクセルを起動した状態で走らせて見ると
 Set xlsApp = GetObject("Excel.Application")
でエラーが出て止まります。xlsApp =notingです。
このあたりに問題がありそうな気がしてきました。もう少し調べてみます。
では

お礼日時:2002/04/30 11:21

Excel.Applicationはクラス名(?)です。



Set xlsApp = GetObject(, "Excel.Application")

第2引数になるのでこのようにしたらどうでしょう?
    • good
    • 0
この回答へのお礼

ありがとうございます。
早速やってみました。
そしたら、見事!2重に開かなくなりました。
ありがとうございます。
これでやっと先に進むことが出来ます。
感謝!感謝!

お礼日時:2002/04/30 13:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています