プロが教える店舗&オフィスのセキュリティ対策術

こんばんは、エクセル2010を使っていて、少し解らない事が有るので教えて頂けませんか?

以下の様なコードで、test.xlsmが開いてなかったら開く、開いていたらsheet1を選択するつもりでしたが上手く行きません。

Sub ボタン26_Click()

On Error Resume Next
If Workbooks("C:\Users\PC\Desktop\test.xlsm") Is Nothing Then
Workbooks.Open "C:\Users\PC\Desktop\test.xlsm"
End If
Sheets("sheet1").Select

End Sub

上記のコードでは、開いてなかったら開く、開いていると、開く確認が入ります。

正確には、どうやったら実現できるでしょうか。

詳しい方、教えて頂けませんでしょうか。

よろしくお願いいたします。

A 回答 (2件)

こんばんは。



これは、昔、私が考えたコードです。
一度、ステップマクロで動かしてみると、良くわかります。
ご参考までで、決して、標準スタイルのコードではありません。

もし、ツッコミを入れるとしたら、
ErrHandler:


  Set ws = Workbooks(fn)
  Resume Next
----------------------
ErrHandler:


Resume

にすれば良いのですが、そこまでは、無茶できませんでした。

'//
Sub Test1()
'No. 8980161
 Const mPATH As String = "C:\Users\PC\Desktop\test.xlsm"
 Dim fn As String
 Dim ws As Workbook
 fn = Dir(mPATH)
 If fn = "" Then Exit Sub
 On Error GoTo ErrHandler
 Set ws = Workbooks(fn)
 ws.Activate
 Worksheets("Sheet1").Select
 Exit Sub
ErrHandler:
 If Err.Number = 9 Then
  Workbooks.Open mPATH
  Set ws = Workbooks(fn)  '←本来は、下をResumeすれば、ここは無駄 
  Resume Next
 End If
End Sub
'///
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

マクロは色んなやり方が有って面白いですね、助かりました。

教えて頂きありがとうございました。

お礼日時:2015/05/17 18:41

こんばんは!


一例です。

Sub Sample1()
Dim k As Long, myFlg As Boolean
Dim myPath As String, fN As String
myPath = "C:\Users\PC\Desktop" & "\"
fN = "test.xlsx"
For k = 1 To Workbooks.Count
If Workbooks(k).Name = fN Then
myFlg = True
End If
Next k
If myFlg = False Then
Workbooks.Open myPath & fN
ActiveWorkbook.Worksheets("Sheet1").Activate
Else
Workbooks(fN).Worksheets("Sheet1").Activate
End If
End Sub

※ 少し無駄が多いコードかもしれませんが、
確実な方法にしてみました。m(_ _)m
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

ばっちり出来ました、ありがとうございます。

ちょっと私には難しいですが、少しずつ勉強しています、ありがとうございます。

お礼日時:2015/05/11 21:17

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