« Webクエリを使ってURLが存在するか確かめる | トップページ | あるあるエラー:Integer型 »

2011年6月11日 (土)

Openメソッドを使ってURLが存在するか確かめる

前の記事 『 Webクエリを使ってURLが存在するか確かめる 』で
できなかったこと、
URLが存在するか確かめるを違った方法でやってみます。

ExcelでExcel形式以外のファイルを開いたことは
あまりないのですが、
URLを指定してWeb上のファイルも開けます。

VBAでURLを指定してWeb上のファイルを開くコードはこうです。

Workbooks.Open Filename:="http://aaa.com/aaa.html"

普通にブックを開く要領です。
これを使ってURLの存在を確認する方法の流れは、
まずエラーを無視する状態にします。
それからURLを指定してWeb上のファイルを開きます。
そのURLが存在しないなら次のエラーになります。

実行時エラー'1004'

ファイル 'http://aaa.com/aaa.html' にアクセスできません。次のいずれかの理由が考えられます。

・ ファイル名またはパス名が存在しない可能性があります。
・ 開こうとしているファイルは、ほかのユーザーまたはプログラムによって開かれています。ほかのプ ログラムで開いている場合、ファイルを閉じた後、もう一度実行してください。
・ 保存しようとしているファイルと同じ名前のファイルが、既に読み取り専用のファイルとして保存さ れています。別の名前で保存してみてください。

このエラーになる原因はURLが存在しないだけでなく
インターネットにつながっていないなど
他にも理由があるかもしれません。

ここではインターネットに接続しているという前提で、
上記のエラーが発生したなら
URLが存在しないとしておきます。

コードはこちら

URLが存在するか確かめるコード:

Sub macro110611a()
'URLの存在を確認
    Dim URL As String
    URL = "http://aaa.com/aaa.html"
    On Error Resume Next
    Workbooks.Open Filename:=URL
   
    If Err <> 0 Then
        Debug.Print "ファイルにアクセスできません "
        GoTo Step0
    End If
    Debug.Print "ファイルを開きました"
    Workbooks(URL).Close SaveChanges:=False
Step0:
    On Error GoTo 0
   
End Sub

このコードを実行して

Debug.Print "ファイルにアクセスできません"

の箇所に行けばURLがない。

Debug.Print "ファイルを開きました"

の箇所に行けばURLがあるということです。

ファイルがあった場合は、
ファイルを開きますので少し時間が掛かります。
プロシージャを終える前に、そのファイルは閉じます。

ファイルの開閉に時間が掛かりすぎると思うので
大量のURLの存在確認には不向きです。

|

« Webクエリを使ってURLが存在するか確かめる | トップページ | あるあるエラー:Integer型 »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: Openメソッドを使ってURLが存在するか確かめる:

« Webクエリを使ってURLが存在するか確かめる | トップページ | あるあるエラー:Integer型 »