VBA では、財務データを取得するツールを作成するために WebQuery を活用しようとしています。
これと同様のコードで WebQuery を作成します。
url = "URL;http://my.url.com/"
With Worksheets("Sheet1").QueryTables.Add(Connection:=url, Destination:=Worksheets("Sheet1").Range("A1"))
.PostText = "Param1=Foo&Param2=Bar"
.Name = "My Query"
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlOverwriteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 1
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingNone
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
私が直面している問題は、my.url.comが基本認証のユーザーID とパスワードを必要とすることです。
このコードを単純に実行すると、ランタイム エラー 1004 が発生します。認証資格情報の入力を求めるプロンプトは表示されません。
しかし、Excel の [データ] リボンに移動して [Web から] を選択し、ミニ Web ブラウザーでhttp://my.url.com/にアクセスすると、ユーザー ID とパスワードの入力を求められます。
このウィンドウを閉じてから、何も変更せずに VBA コードを再実行すると、クエリが機能します。しかし、Excel を閉じて再実行すると、この非常に醜い手動認証手順を実行しない限り、再び失敗します。これらの資格情報を永続的に保存するように Internet Explorer に指示した場合でも.
この余分な手順を実行する必要がないように、基本認証を使用し てWebQueryをプログラムで認証するように VBA を取得するにはどうすればよいですか?
(編集: WebQuery がどのように開始されたかに関係なく、これ、またはこのプロンプトを強制的に発生させる設定が Excel 内にありますか?)
Windows 7 で Excel 2010 (32 ビット) を使用していますが、ターゲット ユーザーはさまざまな Excel バージョン (すべて Windows) を使用している可能性があります。