9

企業の共有ポイント サイトで特定のファイル (doc/pdf) の存在を確認する必要がある Excel (2010) マクロを作成しようとしています。このファイルは Internet Explorer からアクセスできます (すべての権限がユーザーに付与されます)。そのファイルへの直接リンクがあります。開く必要はありません。そこにあるかどうかを確認するだけです。

これがローカル ファイルの場合は、Dir() を使用してファイルが存在するかどうかを確認します。ただし、これは URI では機能しません。

objHttp 経由で GET に基づくメソッドを試してみましたが、[タグ内] で「このページを表示する権限がありません」という Web ページしか応答がありませんでした。

これは何らかの方法で実行可能ですか?

4

2 に答える 2

4

これを試してみてください:

Function checkFile(URLStr As String) As Boolean
    Dim oHttpRequest As Object
    Set oHttpRequest = New MSXML2.XMLHTTP60
    With oHttpRequest
        .Open "GET", URLStr, False, [Username], [Password]
        .setRequestHeader "Cache-Control", "no-cache"
        .setRequestHeader "Pragma", "no-cache"
        .setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"
        .send
    End With
    If oHttpRequest.Status = 200 Then
        checkFile = True
    Else
        checkFile = False
    End If
End Function

URLStr「http://sharepoint/site/user.xlsx」のようなものにする必要があります。行にユーザー名/パスワードを入力.Openしてサイトに渡します。これは、任意の URI で機能するはずです (たとえば、.xlsx ファイルに対してテストしていました)。私の内部 SharePoint サイトでは、この関数を実行するために UN/PW を渡す必要がないことを指摘しておく必要があります。そのため、そのような場合は、.Open呼び出しからこれらのパラメーターを削除してください。また、すべてのヘッダーはおそらく必要ありませんが、リクエストに常に含まれているため、残しました。

于 2012-11-21T21:50:34.170 に答える
-1

これがあなたに役立つかどうかわかりませんか?しかし、私はあなたに私の考えを共有しています。そのためにhttpWebリクエストを使用できます。以下の例のように:

public void CheckWebFileExist()

{

try

{

    WebClient client = new WebClient();

    client.Credentials = CredentialCache.DefaultCredentials;



    // Create a request for the URL.         

    WebRequest request = WebRequest.Create("myAddress");



    // If required by the server, set the credentials.

    request.Credentials = CredentialCache.DefaultCredentials;



    // Get the response.

    HttpWebResponse response = (HttpWebResponse)request.GetResponse();



    //check response status

    if (string.Compare(response.StatusDescription, "OK", true) == 0)

    {

        //URL exists so that means file exists

    }

    else

    {

        //URL does not exist so that means file does not exist

    }      
}
catch (Exception error)

{

    //error catching

}
}

これがあなたに役立つかどうか教えてください。

于 2012-11-21T13:02:39.230 に答える