If〜Then〜Else

指定したブックの有無に応じて処理を分岐する。

サンプルファイルをダウンロード出来ます。

手順
注意・・・・ここで使用するファイルは、「請求書.xls」と「book1.xls」を使用します。
「book1.xls」から、「請求書.xls」の有無を調べます。
この場合、2つのファイルを同じフォルダに保存することを前提にしています。

1、現在開いているブック(book1.xls)のパスを調べます。・・>ActiveWorkbook.Path
パス名を変数mypathに格納します。
2、 ブックの有無を調べる。
請求書.xlsのブックが存在するかどうかを、「Dir」関数を使って調べます。
その結果を変数mymsgに格納します。

3、ブックの有無に応じて処理を振り分ける。
ブックが、存在しない場合、その旨のメッセージを表示し存在する場合は、その絶対パスを表示します。

1、 アクティブブックのパスを表示する方法

Sub パス表示()
Sub パス表示()
Dim mypath As String
mypath = ActiveWorkbook.Path
MsgBox mypath

End Sub
変数 「mypath」を文字列(string)で宣言します。
開いている(アクティブ)ブックのパスを取得し、「mypath」に格納します。
メッセージボックスにパスを表示します。

ActiveWorkbookの代わりにThisWorkbook プロパティを使うと、実行されているコードのあるブックが返されます。

2、 ブックの有無を調べる方法

Subブックの有無()
Sub ブックの有無()
Dim mypath As String
Dim mymsg As String

mypath = ActiveWorkbook.Path
mymsg = Dir(mypath & "\請求書.xls")
If mymsg = "" Then
MsgBox "指定のブックはありません"
Else
MsgBox mypath & "\" & mymsg

End If
End Sub
変数mypathを宣言します。
変数mymsgを宣言します。
ActiveWorkbookで、現在開いているブックの
Pathプロパティで、絶対パスを調べます。

Dir関数で、指定したブックがあるかをチェックし、存在しない場合は、
存在すれば
メッセージボックスに絶対パスを表示します。
<絶対パスの例>
C:\Document & Setting\デスクトップ\請求書.xls
構文
ActiveWorkbook.Path
開いてているブックのパス名を取得します

Dir(ファイル名,属性)
ファイル名:ファイル名を表す文字列を指定します。ドライブ名やフォルダ名を指定できます。

属性:ファイルの属性を指定します。
(属性とは、例えば「隠し・書込み禁止・読み取り専用」などがあります。)
※ファイル名・属性、いずれも省略可能です。
ブックがない場合は、長さ0の文字列「""]」を返します。

3、ブックの有無に応じて適切な処理を行う。

Sub ブックを開く()
Sub ブックを開く()
Dim mybook As String
mybook = ThisWorkbook.Path & "\" & "請求書.xls"
If Dir(mybook) = "" Then
MsgBox "請求書.xls がありません"
Exit Sub
End If
Workbooks.Open mybook

End Sub

変数「mybook」を宣言します。
アクティブブックのパスを取得し、そのパス+「見積書.xls」を変数「mybook」に代入します。


If もし変数「mybook」が、空白だったら、メッセージボックスを表示します。

それ以外だったら、Openメゾットを使用して、変数「mybook」の格納されたファイルを開きます。
Exit Subステートメント
Exit Subは、プロシージャを強制終了するためのステートメントです。