[[20150424160153]] 『特定のブックが開いているか確認』(穂乃果) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『特定のブックが開いているか確認』(穂乃果)

初めまして。

特定のブックが開いているかどうか確認し、開いていていたらユーザーフォームを開き、データを抽出するなどの作業を始める。開いていなければ、その特定のブックを開いて、開いていた場合と同じ作業を始める。というコードを記述したいです。

Private Sub CommandButton1_Click()
Dim myChkBook As Workbook

    On Error GoTo ErrHdl
    Set myChkBook = Workbooks("data.xlsx")

    MsgBox "開かれています。"
    UserForm1.Show vbModeless
    Set 抽出先 = Workbooks("抽出先.xlsm").WorkSheets("Sheet1")

    ……
  ……

ErrHdl:

    MsgBox "開かれていません。"
  Workbooks.Open "\\×××\data.xlsx"
    UserForm1.Show vbModeless
    Set 抽出先 = Workbooks("抽出先.xlsm").WorkSheets("Sheet1")

    ……
  ……

End Sub

今、このようなコードを記述しています。開かれていない場合はうまくいくのですが、開かれている場合、何故か開かれていない場合のルートも辿ってしまいます。なので、dataブックは既に開かれているのに、「既に開かれています。開きますか?」とポップアップが出てきてしまいます。どのようにすれば治りますでしょうか。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 ErrHdl: 
 の前に
 Exit Sub
 を入れるということか?
(ねむねむ) 2015/04/24(金) 16:25

こんにちは

    On Error Resume Next
    Set myChkBook = Workbooks("data.xlsx")
    If myChkBook Is Nothing Then
        Set myChkBook = Workbooks.Open("\\×××\data.xlsx")
    End If
    On Error GoTo 0
    '処理

とするか、ErrHdl: の前で Exit Sub するかです。

同じ処理を二度書くのは無駄です。

(ウッシ) 2015/04/24(金) 16:26


素早い回答をありがとうございます!理想通りの結果が得ることが出来ました!

もう一つ質問させていただきたいことがあるのですが、開かれていない場合の、ブックをオープンするときに、ファイルが保護されていますよというポップアップと、このブックにはほかのデータソースへのリンクが〜というポップアップが出てきます。毎回、読み取り専用とOKボタンを押しているのですが、これは出ないようにすることは可能でしょうか。
ネットで調べてみるとリンクを更新しない方法はあったのですが、このdataブックはサーバ上にあり、そこから取ってきていて、このファイルは管理者が定期的に更新をしているので最新のデータでないとうまくいかないこともあると思います……。
(穂乃果) 2015/04/24(金) 16:44


こんにちは

Workbooks.Open のパラメーターで色々指定出来ます。

(ウッシ) 2015/04/24(金) 16:53


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.