dポイントプレゼントキャンペーン実施中!

「エクセルファイルが開いていたら開かない」としたいです。

VB2010です。
--------------------------------------------------------------
Imports Microsoft.Office.Interop '参照設定済み

Module Module1

Sub ExcelOpen()
Dim ExcApp As Excel.Application
Dim book As Excel.Workbook
Dim MyPath As String

MyPath = "C:"
ExcApp = CreateObject("Excel.Application")
ExcApp.Visible = True
book = ExcApp.Workbooks.Open(MyPath & "\test.xlsm")
End Sub
End Module
--------------------------------------------------------------
で、ファイルを開くのですが、既にファイルが開いている場合は、2個開いてしまい、
最後に開いたファイルが読み取り専用になってしまいます。

IFで、開いているかどうかを取得して、
開いているのなら「既に開いています」として、ExitSubがしたいです。
ご協力よろしくお願いします。

A 回答 (2件)

VB2010で新たな「方法」があるかもしれませんが


古典的?な方法です。

花ちゃん さんの
指定のファイルが使用中かどうかを調べる (015)
http://hanatyan.sakura.ne.jp/vbhlp/excel03.htm
おしまいの方にあります。
Function モジュールに作りかえれば使い回しが出来ます。
    • good
    • 1
この回答へのお礼

ありがとうございます。

お礼日時:2012/11/03 18:54

こんにちは。



今、私の新しいパソコンには、VB.Net はインストールしていないので試せないのですが、二重起動の問題ですよね。いくつか方法はあると思うのですが、

ひとつの方法ですが、

ExcApp = CreateObject("Excel.Application")
このコードの前に、GetObject(, "Excel.Application")で、もし、オブジェクトが取れれば、メッセージを出すという方法があるはずです。

他は、WMIやWin32 APIで、取る方法もありますが、上記方法が、もっとも簡単だと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2012/11/03 18:54

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

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


このQ&Aを見た人がよく見るQ&A