プロが教えるわが家の防犯対策術!

VBAからIEを操作し、サイトを閲覧する処理を作成しています。
質問はサイトを閲覧する処理の前にプロキシ設定を行い、サイト閲覧処理が終われば、プロキシ設定を無効に戻したいのですが、方法がわからないので、ご教授いただきたくm(_ _)m

A 回答 (1件)

VBA というか VSScript で検索すれば探しやすいと思います。


「VBScript IE プロキシ 設定」 とか
自身でやったことはないので具体的な方法はご自分で確認していただくことになりますが、ざっと見たところレジストリを操作するようですね。
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVBSでIEのプロキシ設定

VBSでIEのプロキシ設定がしたいのですが、可能でしょうか?
加えて詳細設定の、「次ではじまるアドレスにはプロキシを使用しない」という部分も設定したいです。
ノートPCのネットワーク設定をワンクリックでできるようにしたいのです。
教えてください。

Aベストアンサー

JavaScriptを使えば可能のようです。
書式はieakで入手する事が可能ですので、取得した後に書きこむプログラムを組めばよろしいかと思います。

参考になるURLをご覧になって研究してみてください。
http://www.atmarkit.co.jp/fwin2k/win2ktips/031autoproxy/autoproxy.html

あまり回答にはなっていませんが、ご自分で出来る範囲でやってみてください。

参考URL:http://www.microsoft.com/japan/ieak/

QWebページ中の javascript をVBAから実行するには

VBAで objIE を使用して Webページ中の javascript を実行したいのですが、
onclick="~~" の記述がないケースがあり困っております。
例えば以下のような記述です。

<a href="javascript:;" pnb="~~" scdaction="~~" bulkaction="~~" id="~~">~~</a>

onclick の記述がない上記のようなケースでは、javascript の呼び出しはどのようにすればよいのでしょうか?
不可能でしょうか?

Aベストアンサー

ここを読んでみればよいのですが、だらだらと文章が長いですね。^^;
http://www.ken3.org/vba/backno/vba170.html
この内容のまとめは、この後でします。もし、ダメだったら、こちらも読んでください。

>onclick="~~" の記述がないケースがあり困っております。

最初に、ストレートな回答ではありませんが、私の場合、いくつかの方法を試しています。

>a href="javascript:;" pnb="~~" scdaction="~~" bulkaction="~~" id="~~">~~</a>
この場合は、id がありますから、確実のオブジェクトとして取得できますから、まず最初に、ダメ元で、
id名.Click を一度試してみます。もしくは、この行の上部のコードのオブジェクトのClass名のオブジェクトのひとつから、ヒットさせようとします。

そこでダメなら、ということで、ken3の内容に入るのですが、この著者の結論(正解)は、

ご質問に沿って書くと
For i =0 To objIE.Document.links.Length -1
If objIE.Document.links(i).href ="javascript:;" Then '文字の比較は、大文字・小文字がある
   objIE.Document.Links(i).Click
End if
Next i

ということになっています。私は、このコードは少し古臭く感じます。

ここで、ken3 の所では、Testサイトを用意してくれているので、試してみましたが、ダイレクトでサイトがとれている限りは、やはり、

Testサイト:http://www.ken3.org/vba/test170f.html

 objIE.Navigate "javascript:xxxxx;"

が利くことが分かりました。ただし、実際は、ここで時間待ちをしなくてはならないでしょう。
解説は、フレームからですので、うまく行かなかったようです。

ここを読んでみればよいのですが、だらだらと文章が長いですね。^^;
http://www.ken3.org/vba/backno/vba170.html
この内容のまとめは、この後でします。もし、ダメだったら、こちらも読んでください。

>onclick="~~" の記述がないケースがあり困っております。

最初に、ストレートな回答ではありませんが、私の場合、いくつかの方法を試しています。

>a href="javascript:;" pnb="~~" scdaction="~~" bulkaction="~~" id="~~">~~</a>
この場合は、id がありますから、確実のオブジェクトとして取得できますか...続きを読む

QVBA オブジェクトが空かどうか判定する

皆様のお知恵を拝借させてください。

エクセルVBAでオブジェクトを入れる変数を定義し、その変数にオブジェクト
が入っているかどうか検査したいのですがどうしたらいいでしょうか。

例えば---
Dim a As Workbook
If a <> nothing then ←この部分が分からない。このままだとエラー。
処理
End if
---------
環境
エクセル2003
WinXPsp1

Aベストアンサー

もし、aが空だったら
If a Is Nothing Then 

もし、aが空じゃなかったら
If Not a Is Nothing Then

Qプロクシーを経由してwebbrowserに表示させるには?

■VBのバージョン : VB.NET2003

お世話になります。
プロクシーの使い方がよくわかりません。
helpでproxyといれて検索してみたのですが
webBrowserを使ったサンプルがなく困っています。
このヤフーのページを表示させるまえにプロクシーを経由して
表示させるにはどのようにすればよいでしょうか?

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
AxWebBrowser1.Navigate2("http://www.yahoo.co.jp")

End Sub

Aベストアンサー

http://www.sfdata.jp/ML/menu.php?ml=VB-ML
ここですよ^^

フリーのメルアドでは、登録できないのであしからずです。

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

QVBAからIEを操作する時のウィンドウの選択の仕方がわかりません

VBAで、webページを操作するマクロを組んでいます。
具体的な手順としては、セルの商品番号をweb上の検索ボックスに入力して、別ウィンドウで開いた情報を「すべて選択」「コピー」してexcellの別シートに「貼り付け」までを行うものなのですが、
別ウィンドウで開いたページに対して、Sendkeysを行うにはどうやったらいいのでしょうか。
仮に、入力ページをA、結果ページをBとしたとき、Aに対しての入力とBページの表示までは出来ているのですが、Bページに対しての操作が出来ません。

ちなみに、事情があってwebクエリはあえて使っていません。
どなたか、いい解決方法・プロシージャをご存知でしたらよろしくお願いします。

Aベストアンサー

こんにちは。KenKen_SP です。

検索フォーム経由ではなく、検索結果のページをコードで直接開けないですか?
例えば、教えてGooなら

http://oshiete1.goo.ne.jp/kotaeru.php3?q=


URL の後ろに ? マークがあります。この記号以下は CGI に渡すパラメータです。
q= の後ろに質問番号が入りますので、予め質問番号が分かっている場合は、
この URL に質問番号を連結してやれば、直接開くことができます。

仮に、質問番号が A1 セルに入っているなら

IE.Navigate "http://oshiete1.goo.ne.jp/kotaeru.php3?q=" & Range("A1").Value

みたいなコードで検索結果ページを開くことができると思います。同様に、商品番号
を渡すパラメータがあるはずですから、探して見て下さい。CGI にパラメータを渡す
方法が Get でも Post の場合でも検索フォームの HTML ソースを見れば分かります。

取り合えず、一度検索フォームの HTML ソースを見てみましょう。

これが可能なら、コードで IE オブジェクトを作り、直接検索結果のページを開くこ
とができますので、IE のウインドウハンドルやウインドウタイトルは簡単に取得
できます。

簡単な例です。A1 セルの値を Google で検索し、結果を A5 セルに貼り付けます。


Option Explicit

Private Declare Function SetForegroundWindow Lib "user32.dll" ( _
  ByVal hWnd As Long _
) As Long
  
Sub Sample()

  Dim IE   As Object
  Dim strURL As String
  Dim lngRet As Long
  
  Const READYSTATE_COMPLETE = &H4
  
  strURL = "http://www.google.com/search?hl=ja&lr=lang_ja&ie=Shift_JIS&q="
  strURL = strURL & Range("A1").Value
   
  Set IE = CreateObject("InternetExplorer.application")
  IE.Visible = True
  IE.navigate strURL
  Do
    DoEvents
  Loop Until Not IE.Busy And IE.readyState = READYSTATE_COMPLETE
  
  ' IE のウインドウをアクティブにする
  lngRet = SetForegroundWindow(IE.hWnd)
  If lngRet <> 0 Then
    ' アクティブにできたらキー送信して結果をコピー
    SendKeys "^a", True
    SendKeys "^c", True
    ' 貼り付け
    Range("A5").Select
    ActiveSheet.Paste
  End If
  Set IE = Nothing

End Sub

どうしても検索フォームを経由し、新しい IE を開く必要がある場合は、
参考 URL 先の記事が参考になると思います。

参考 URL: http://www.ken3.org/cgi-bin/group/vba_ie.asp

ちなみに、SendKeys を使わない方法としては、IE.Document.body.innerHTML
で HTML ソースは取得し、クリップボードに転送してからペースト、、

というのでも良いかもしれません。

では。

こんにちは。KenKen_SP です。

検索フォーム経由ではなく、検索結果のページをコードで直接開けないですか?
例えば、教えてGooなら

http://oshiete1.goo.ne.jp/kotaeru.php3?q=


URL の後ろに ? マークがあります。この記号以下は CGI に渡すパラメータです。
q= の後ろに質問番号が入りますので、予め質問番号が分かっている場合は、
この URL に質問番号を連結してやれば、直接開くことができます。

仮に、質問番号が A1 セルに入っているなら

IE.Navigate "http://oshiete1.goo.ne.jp/kot...続きを読む

Qレジストリの値獲得について

レジストリの値をExcelVBAの変数に代入したいと思ってます。
レジストリエディタにての階層は、
「HKEY_CURRENT_USER」→「Software」→「Autodesk」→「AutoCAD LT」
→「R2000」→「ACLT-1:411」→「FixedProfile」→「General」
(名前)P1、(種類)REG_SZ、(データ)1,1

このとき(名前)を探して(データ)を変数に代入したいと考えています。
ソースとしては、どんな感じになりますでしょうか?
知恵をかして頂ければと思っています。
又、レジストリを参照する際の注意点と言いますか、一歩間違えば
とんでしまうと聞いた事ありますので、アドバイスしてありましたら
教えて頂ければと思っています。
よろしくお願いします。
-------------------------------------------------------
Excel2000、AutoCAD LT2000、WindowsXPの環境で行います。

Aベストアンサー

読むだけでしたら、問題はないと思います。

下記2.が参考になると思います。
vb6で書かれていますが、もっていなければmodule1.basをノートパッドなどで開くことで、コードを見ることができると思います。

レジストリを読むのに必要な部分は、
Function GetReg の部分とそこで使われている三つのapi、
RegOpenKey,RegQueryValueEx,RegCloseKey
です。

フォームのほうから GetReg関数を呼んでいてその引数は
If GetReg(HKEY_CURRENT_USER, "Control Panel\desktop", "ScreenSaveActive") = 0 then
となっています。

(自身→自信 失礼しました)

参考URL:http://www.vbstation.net/sample/0217.htm

QEXCEL VBA でIEを制御して、INPUT type=file で出るダイアログに入力できませんか?

EXCEL VBA から、objIEオブジェクトを使って、IEを制御して、WEBページを制御するプログラムを作っています。
※通販サイトのモール内管理の自動化プログラムです。

その際、操作対象のページに、INPUT type=file でファイルを入力するブロックがあります。
ここに自動でファイルを入れたいのですが、INPUT type=file を表示するボタンに対し .clickを入れるとそこでVBAが停止してしまいます。

そのモールそのものは、色々な制約があるので、公開できませんが、抜き出したのが

http://royal-e.heteml.jp/js_test/input_test.htm

になります。

objIEオブジェクトで INPUT type=file に希望のファイル名を入力することは出来るでしょうか?

方法をご存知の方がいらしたら、教えてください。

Aベストアンサー

何度もすみません、下記コードをVBAで実行した所正常にアップロード出来ました
ファイル名のテキストボックスにフォーカスが移り、sendkeysでファイル名が自動入力されて
アップロードボタンが自動押下されました
ファイル選択ダイアログは表示させずに済みました
但し当方の環境はXP+IE6+EXCEL2002ですのでIE7の場合動くかは不明ですが。

Private Sub input_txt()
 Dim objIE As Object
 Const READYSTATE_COMPLETE As Long = 4 'IEオブジェクト状態(4=読み込み完了)

 Set objIE = CreateObject("InternetExplorer.application")
 objIE.Visible = True
 objIE.Navigate "http://*****"

 While objIE.ReadyState <> READYSTATE_COMPLETE
  While objIE.Busy = True
   DoEvents
  Wend
 Wend

 objIE.Document.Forms("****").Item("****").Select
 Application.SendKeys "C:\Documents and Settings\****.ext", True
 objIE.Document.Forms("****").Item("****").Click 'アップロードボタン押下
End Sub

何度もすみません、下記コードをVBAで実行した所正常にアップロード出来ました
ファイル名のテキストボックスにフォーカスが移り、sendkeysでファイル名が自動入力されて
アップロードボタンが自動押下されました
ファイル選択ダイアログは表示させずに済みました
但し当方の環境はXP+IE6+EXCEL2002ですのでIE7の場合動くかは不明ですが。

Private Sub input_txt()
 Dim objIE As Object
 Const READYSTATE_COMPLETE As Long = 4 'IEオブジェクト状態(4=読み込み完了)
...続きを読む

QvbaでIEの名前を付けて保存(A)をしたい

VBA で IEの通知バー を操作したいです。
SendKeys で 通知バーの 保存(S) はできたのですが、
保存(s)の右隣の ▼ をクリックするとでてくる、 名前を付けて保存(A) の方法がわかりません。

どのようなキーをおくればよいのでしょうか。


他の質問をみると、SendKeysではなく ○○がよいですよ みたいな内容しか見つからず、
回答をみつけることができなくて困っておりますのでよろしくお願いいたします。

Aベストアンサー

VBAでインターネット上のファイルをダウンロードする方法をまとめてみました。 | 初心者備忘録
http://www.ka-net.org/blog/?p=4855
とか。

QIEのダウンロード通知バーのVBA制御(保存他)

以前投稿された表題の質問をマネしてVBAから通知バーの制御を試みたらエラーになりました。
原因がわからず困っています。どこに問題があるか教えて頂けないでしょうか?
http://okwave.jp/qa/q8121989.html
■実行エラー91
「オブジェクト変数またはWithブロック変数が設定されていません」
■エラー停止箇所
Set InvokePattern = Button.GetCurrentPattern(UIA_InvokePatternId)
■補足
・参照設定はしています。
・下記2点に示すようにお尻の数字を削除しています。(他のエラーがでてしまうため)
  Dim o As IUIAutomation2→IUIAutomation
  Set o = New CUIAutomation8→CUIAutomation

---【http://okwave.jp/qa/q8121989.html】------------------------------------------------------
Option Explicit
'参照設定 UIAutomationClient
'C:\Windows\System32\UIAutomationCore.dll
Private Declare PtrSafe Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As LongPtr, ByVal hWnd2 As LongPtr, ByVal lpsz1 As String, ByVal lpsz2 As String) As LongPtr

Sub hoge2()

Const url As String = ""
Dim ie As Object
Set ie = CreateObject("Shell.Application").Windows.findwindowSW(url, Empty, 1, 0, 1)
If ie Is Nothing Then Exit Sub

Dim o As IUIAutomation2
Dim e As IUIAutomationElement
Set o = New CUIAutomation8
Dim h As LongPtr

h = ie.Hwnd
h = FindWindowEx(h, 0, "Frame Notification Bar", vbNullString)
If h = 0 Then Exit Sub
Set e = o.ElementFromHandle(ByVal h)

Dim iCnd As IUIAutomationCondition
Set iCnd = o.CreatePropertyCondition(UIA_NamePropertyId, "保存")

Dim Button As IUIAutomationElement
Set Button = e.FindFirst(TreeScope_Subtree, iCnd)

Dim InvokePattern As IUIAutomationInvokePattern
Set InvokePattern = Button.GetCurrentPattern(UIA_InvokePatternId)
InvokePattern.Invoke

DoEvents
Set iCnd = o.CreatePropertyCondition(UIA_NamePropertyId, "通知バーのテキスト")
Dim iElemFound As IUIAutomationElement
Set iElemFound = e.FindFirst(TreeScope_Subtree, iCnd)
Dim iValuePattern As IUIAutomationValuePattern
Set iValuePattern = iElemFound.GetCurrentPattern(UIA_ValuePatternId)

Do
DoEvents
If iValuePattern.CurrentValue Like "*のダウンロードが完了しました。*" Then
Set iCnd = o.CreatePropertyCondition(UIA_NamePropertyId, "閉じる")
Set iElemFound = e.FindFirst(TreeScope_Subtree, iCnd)
Set InvokePattern = iElemFound.GetCurrentPattern(UIA_InvokePatternId)
InvokePattern.Invoke
Exit Do
End If
Loop

End Sub

以前投稿された表題の質問をマネしてVBAから通知バーの制御を試みたらエラーになりました。
原因がわからず困っています。どこに問題があるか教えて頂けないでしょうか?
http://okwave.jp/qa/q8121989.html
■実行エラー91
「オブジェクト変数またはWithブロック変数が設定されていません」
■エラー停止箇所
Set InvokePattern = Button.GetCurrentPattern(UIA_InvokePatternId)
■補足
・参照設定はしています。
・下記2点に示すようにお尻の数字を削除しています。(他のエラーがでてしまうため)
...続きを読む

Aベストアンサー

そのコードは通知バーが完全に表示されている状態での実行を期待しています。
なので、ループで参照がセット出来るまで、待ち合わせてみるとか。

Dim Button As IUIAutomationElement
Dim InvokePattern As IUIAutomationInvokePattern

While Not InvokePattern Is Nothing
DoEvents
Set Button = e.FindFirst(TreeScope_Subtree, iCnd)
Set InvokePattern = Button.GetCurrentPattern(UIA_InvokePatternId)
Wend
InvokePattern.Invoke


人気Q&Aランキング