• 締切済み

VBAでWebのデータを取得したい

MS OFFICEカテゴリに投稿後、一件の反応も無かったので旧質問は削除の上板換えします。本題はVBとVBAが異なることはを承知での質問です。 エクセルVBAで取引先のサイトにログインし、請求データをダウンロードしようとしています。 ログインから目的のページに移動/チェックボックス等の処理もできたので objIE.Document.all.Item("Command.csvFileDownload").Click とすれば「ファイルのダウンロード」ウィンドウがポップアップするかと思ったら、IEのセキュリティ保護にブロックされてしましました。 「マウスでクリックしたらちゃんとダウンロードできるのに?」と思うのですが、VBAでの操作は危険=ウィルス?と認識されて当然な気もします。 IEのセキュリティレベルを変更せずにVBAでダウンロードまですることはやはり無理なのでしょうか? 該当のタグは以下のとおりです。 <input type="image" name="Command.csvFileDownload" src="/img/hogehoge/btn_download.gif" onclick="noDblClickCheck=true;"onmouseover="this.src='/img/hogehoge/btn_download.gif'" onmouseout="this.src='/img/hogehoge/btn_download.gif'" alt="ダウンロード"> どうぞ宜しくお願いします。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんばんは。 こちらは、プログラミング・カテゴリですから、ちょっと乱暴な書き方だったかもしれませんが、同じような質問が、Office 側で出ていました。偶然に、こちらのやっていることと、シンクロしていたので、こちらの知っている話をほとんど書いていますから、読んでいただけると分かると思います。 http://oshiete1.goo.ne.jp/qa5446271.html 結論からすると、Office 側の方は、cgiスクリプトでセキュリティを設置した可能性があるので、お手上げしたわけですが、Sinogiさん側のほうは、手段はまだ残されていると思います。 IEオブジェクトを使う限りは、レジストリの変更もやむをえないというところだと思います。ただ、掲示板では、自主規制で書かないようにはしています。教えなくても、分かる人は自分で分かるからです。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

#2,#3の回答者です。 >>該当するプログラムで、使用中だけセキュリティを書き換えれば >で信頼済みサイトの更新ができればうれしいのですが、レジストリ操作はご遠慮したいです m(__)m もし、プログラマなら、そういうことは背に腹は変えられないと思いますが。それで、誰か別の人間がそれを悪用するとか、問題が起こる可能性があるならやめるしかありませんが、その程度のことはいいと思いますし、そういうツールは良く見かけます。それ以外に、キーボードマクロで対応するという方法もあります。 >objIE.Document.all.Item("Command.csvFileDownload").Click まあ、このようにIEに依存するから、そういうことになるのかもしれませんが。

Sinogi
質問者

お礼

ご回答ありがとうございます。 >もし、プログラマなら、そういうことは背に腹は変えられないと思いますが 当方ITとは無縁の企業で、定例の事務作業を手抜きしようとしているだけの素人です。 なのでレジストリ云々といわれると、早々に尻尾を丸めてします(^^;; >まあ、このようにIEに依存するから、そういうことになるのかもしれませんが。 でWendy02様が言わんとされていることも理解できない私であれば「IE 信頼済みサイトの更新」はおとなしく手作業で処理するのが安全でしょうか・・・

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

補足: こちらのほうがよいですね。内容は古いけれどたぶん想像は付くと思います。 http://support.microsoft.com/kb/884429/ja Internet Explorer の Web コンテンツのゾーンでセキュリティレベルを設定する方法

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 >MS OFFICEカテゴリ  まあ、VBなら、別の方法もあるかと思いますが、Office 系では個別の問題は回答しにくいことが多いです。 >IEのセキュリティレベルを変更せずにVBAでダウンロードまですることはやはり無理なのでしょうか? Vista +IE7以上ですか? Vistaは、自分のPCでなかったので試さなかったのですが、IEオートメーションを使うなら、該当するプログラムで、使用中だけセキュリティを書き換えればよいと思います。あまり、プログラマとしてのマナーが良くありませんから、ソースコードは公開はしません。 その内容は、以下で公開されているはずですから、 http://support.microsoft.com/kb/833633/ja Internet Explorer のマイ コンピュータ ゾーンのセキュリティ設定を強化する方法 を参考にして、管理者特権でレジストリを操作すればよいと思います。

Sinogi
質問者

補足

ご回答いただきありがとうございます。 当方の環境はXPSP3 IE6 です。職場PCでバージョンアップの予定はありません。ちなみに、VBAを記述しているのはExcel2002です。 >該当するプログラムで、使用中だけセキュリティを書き換えれば で信頼済みサイトの更新ができればうれしいのですが、レジストリ操作はご遠慮したいです m(__)m

  • kuroizell
  • ベストアンサー率55% (95/170)
回答No.1

インターネットオプションの信頼できるサイトかローカルイントラネットに 該当サイトを登録してみてはいかがでしょうか? IE8だとクリップボードの取得ですらabout:blankを追加しておかないと動かず、参りました。

Sinogi
質問者

補足

早速のご回答ありがとうございます。 信頼できるサイトに登録したところ、目的のクリックができました。(^^) しかし、先々の応用/運用を考えると「なんとかコードで対応できないものか」とも思い続けています。 「手作業でできること」を「コードでする」と別判定されるのがなんとも・・・

関連するQ&A

  • VBAでIE操作

    三流君を見てもよくわからなかったので教えてください。 三菱東京UFJ銀行に自動でログインできるようにエクセルVBAで操作していますが パスワードを入れた後のログインがうまく出来ません。 objIE.document.Forms(0).submit だと、サイトが更新されてしまいます。 ソースは <td class="buttons"> <a href="javascript:void(0)" onClick="gotoPageFromAA011(); return false;" tabindex="3"><img src="https://directg.s.bk.mufg.jp/refresh/imgs/DIRECT_IMAGE/LOGINOUT/btn_login.gif" alt="ログイン" onmouseover="this.src='https://directg.s.bk.mufg.jp/refresh/imgs/DIRECT_IMAGE/LOGINOUT/btn_login_over.gif'" onmouseout="this.src='https://directg.s.bk.mufg.jp/refresh/imgs/DIRECT_IMAGE/LOGINOUT/btn_login.gif'"></a> なので、 objIE.document.all.gotoPageFromAA011(); return false;.Click とやりたいところですが、VBAではエラーになってしまいます。 どうすればログインできるのでしょうか? http://www.ken3.org/cgi-bin/group/vba_ie_form.asp#Input_button_Click を見てみましたが私がうまく出来てないのか出来ませんでした。 ご回答よろしくお願いします。

  • onmouseover、onmouseoutの仲間でonmouseclickみたいな

    GIFボタン三枚をあらかじめ用意し、 (1) 通常の状態から(btn0.gif)、 (2) マウスが乗るとボタンがテカり(btn1.gif)、 (3) クリックするとボタンがヘコむ(btn2.gif)、 (4) マウスが離れると通常の状態に戻る(btn0.gif)、 のような効果をつけたいと思うのですが (2) ができません。どう書いたらよいでしょうか。 <img src="./btn0.gif" onmouseover="this.src='btn1.gif'" onmouseout="this.src='btn.gif'"> CSSではhoverに相当するものだと思いますが、 思いつきでonmouseclickというのは違うようで。 よろしくお願い致します。

  • なぜだめなのか教えてください ie操作 vba

    vbaでログインする時、ログインボタンの名前がmember_left_btn01なので、 With objIE.document .all("mail_ad").Value = 登録アドレス .all("pass_wd").Value = PW .all("member_left_btn01").Click End With としたら、オブジェクトが必要ですというエラーになりました。 ログインしようとしているサイトは、 https://www2.seibu.jp/usrinfo/clubon/internet/member.htmlのサイトです。 ログインの部分のソースを見ると <input class="member_left_btn01" type="image" src="../images/btn_login.gif" border="0"/> となっておりますが、classはnameではないから、 .all("member_left_btn01").Click だとエラーになるのでしょうか? .all.submit でも .submit でもログインできません。 ご教授よろしくお願いします。

  • VBA WEB上の画像をクリック

    VBAでWEB上の画像にあるリンクをクリックしたいのですが、 うまくいきません。 WEB上のソースは下記の様になっています。 <a href="******" target="_top"><img src="/image/menu/5.png" border="0" alt="あああああ" onMouseOver="chgImg('/image/menu/4.png',this)" onMouseOut="chgImg('/image/menu/5.png',this)" ></a> この部分をクリックさせ、ページを移動させたいのですが、 どうすればいいでしょうか?

  • スワップイメージとロールオーバーの組み合わせで…

    上の画像をクリックした時に下の画像が切り替わるページを 作ったのですが、上の画像をmouseoverで切り替えるのではなく、 マウスを動かしてもクリックしたら下の画像と連動して上の画像も 切り替えることってできますか?? javascriptは初心者で、まったくわからずです(>-<) <SCRIPT LANGUAGE="JavaScript"> function doPic(imgName) { stepOn = ("" + imgName); document.step.src = stepOn; } </script> (中略) <a href="javascript:doPic('step1.gif');"><img src="img1.gif" name="img" border="0" onmouseover='this.src="r_img1.gif"' onmouseout='this.src="img1.gif"'></a> <a href="javascript:doPic('step2.gif');"><img src="img2.gif" name="img" border="0" onmouseover='this.src="r_img2.gif"' onmouseout='this.src="img2.gif"' ></a><br> <img name="step" src="step1.gif"> ↑こんな感じで作っております<(_ _)>

  • onMouseOver,onMouseOutを使用すると

    <img>のところに  onMouseOver="this.src='○○.gif'"  onMouseOut="this.src='○○.gif"  として、マウスを乗せたら画像が変わるようにしているのですが、ブラウザで見ると、 「セキュリティ保護のため、コンピューターにアクセスできるアクティブコンテンツは表示されないようInternet Explorerで制限されています。オプションを表示するにはここをクリックしてください」 という情報バーが出てしまいます。 これを出ないようにするにはどうしたらいいのでしょうか?

    • ベストアンサー
    • HTML
  • cssヘッダー画像の下に配置したい画像が重なります

    css勉強し始めた初心者なので、説明やソースなどめちゃくちゃだと思いますが、教えてください。 固定ヘッダー(常に画面の上にヘッダーがあるように)を作成し、その下に画像を配置したのですが、ヘッダーの下にその画像が入り込んでしまいました。ヘッダーの下に重ならず配置するにはどうすればよいでしょうか? よろしく御願いいたします。 body内に <div id="header"> <h1><a href="/" title="website"></a></h1> <img src="img/b01.gif" width="108" height="68" border="0" onmouseover="this.src='../ao/img/b01-.gif" onmouseout="this.src='../ao/img/b01.gif"> <img src="img/b02.gif" width="88" height="68" border="0" onmouseover="this.src='../ao/img/b02-.gif'" onmouseout="this.src='../ao/img/b02.gif'"> <img src="img/b03.gif" width="59" height="61" border="0" onmouseover="this.src='../ao/img/b03-.gif'" onmouseout="this.src='../ao/img/b03.gif'"> <img src="img/b04.gif" width="50" height="68" border="0" onmouseover="this.src='../ao/img/b04-.gif'" onmouseout="this.src='../ao/img/b04.gif'"> <img src="img/b05.gif" width="39" height="68" border="0" onmouseover="this.src='../ao/img/b05-.gif'" onmouseout="this.src='../ao/img/b05.gif'"> <img src="img/b06.gif" width="80" height="68" border="0" onmouseover="this.src='../ao/img/b06-.gif'" onmouseout="this.src='../ao/img/b06.gif'"> <img src="img/b07.gif" width="51" height="68" border="0" onmouseover="this.src='../ao/img/b07-.gif'" onmouseout="this.src='../ao/img/b07.gif'"> <img src="img/b08.gif" width="47" height="68" border="0" onmouseover="this.src='../ao/img/b08-.gif'" onmouseout="this.src='../ao/img/b08.gif'"> <img src="img/b09.gif" width="54" height="68" border="0" onmouseover="this.src='../ao/img/b09-.gif'" onmouseout="this.src='../ao/img/b09.gif'"> <img src="img/b10.gif" width="125" height="68" border="0" onmouseover="this.src='../ao/img/b10-.gif'" onmouseout="this.src='../ao/img/b10.gif'"> </div> <h2><img src="img/panichi.gif" alt="TOP" width="700" height="450" class="centering" /></h2>

    • ベストアンサー
    • HTML
  • cssファイルへリンクできないです。

    今回からCSSファイルでホームページを作り出している超初心者なので、 専門用語の使い方など間違っているかも分かりませんが知恵を貸してください。 Dreamweaverを使用して、上部に固定ヘッダーのソースをhtmlファイル内に打ち込んで作業をしてます。ヘッダーの下部分の作業をし始めてDreamweaverのデザイン部分の画面で、ヘッダー画像の下に載せる画像や文字が入り込んで隠れてしまうので、作業がしにくいです。 そのため固定ヘッダーデータをcssファイルにした方がいいのかなと思い、 リンクさせようとしたのですが反映されないです。リンクした方がいいのか、その他より効率がいい方法があるのか分からないのでよろしく御願いいたします。 htmlファイルには <body> <link rel="stylesheet" type="text/css" href="banner.css"> と入力してます。 cssファイルには <div id="header"> <img src="img/b01.gif" width="108" height="68" border="0" onmouseover="this.src='../house/img/b01-.gif" onmouseout="this.src='../house/img/b01.gif"> <img src="img/b02.gif" width="88" height="68" border="0" onmouseover="this.src='../house/img/b02-.gif'" onmouseout="this.src='../house/img/b02.gif'"> <img src="img/b03.gif" width="59" height="61" border="0" onmouseover="this.src='../house/img/b03-.gif'" onmouseout="this.src='../house/img/b03.gif'"> <img src="img/b04.gif" width="50" height="68" border="0" onmouseover="this.src='../house/img/b04-.gif'" onmouseout="this.src='../house/img/b04.gif'"> <img src="img/b05.gif" width="39" height="68" border="0" onmouseover="this.src='../house/img/b05-.gif'" onmouseout="this.src='../house/img/b05.gif'"> <img src="img/b06.gif" width="80" height="68" border="0" onmouseover="this.src='../house/img/b06-.gif'" onmouseout="this.src='../house/img/b06.gif'"> <img src="img/b07.gif" width="51" height="68" border="0" onmouseover="this.src='../house/img/b07-.gif'" onmouseout="this.src='../house/img/b07.gif'"> <img src="img/b08.gif" width="47" height="68" border="0" onmouseover="this.src='../house/img/b08-.gif'" onmouseout="this.src='../house/img/b08.gif'"> <img src="img/b09.gif" width="54" height="68" border="0" onmouseover="this.src='../house/img/b09-.gif'" onmouseout="this.src='../house/img/b09.gif'"> <img src="img/b10.gif" width="125" height="68" border="0" onmouseover="this.src='../house/img/b10-.gif'" onmouseout="this.src='../house/img/b10.gif'"> </div> と入力してます。 よろしく御願いいたします。

    • ベストアンサー
    • HTML
  • 文書オブジェクトについて???

    フォームボタンの画像を入れ替えたいのですが、 正しく動きません。何が悪いのでしょうか? 文字コードはEUC-JPを使っていますが、関係あるのでしょうか? <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <TITLE>Javascript</TITLE> <script type="text/javascript"> <!-- function btn_click(dat) { if(teban == 1){ document.forms['btn'].elements['btn1'].src = "./img/b.gif"; }else{ document.forms['btn'].elements['btn2'].src = "./img/d.gif"; } } --> </script> </HEAD> <BODY> フォームのボタンを使ってクリックすると画像が変わる  ようにしたい <form name="btn"> <input name="btn1" type="image" src="./img/a.gif" onClick="play_start(1); return false;"> <input name="btn2" type="image" src="./img/c.gif" onClick="play_start(2); return false;"> </form> </BODY> </HTML>

  • リファラを取得するためのCGI

    アクセスログを取るためのcgiをPerlで作っています。 例えば、 hogehoge.html というページのアクセスログを取るためにlog.cgiというスクリプトを用意します。 hogehoge.htmlからは、IMGタグを使用して、<IMG src="log.cgi">のようにcgiを呼び出しています。 log.cgiからは、ダミーのgifファイルを返します。 ここで、log.cgiでは訪問者のリファラを取得して記録するようにしていますが、この仕組みだとhogehoge.htmlがリファラとして記録されてしまいます。(hogehoge.htmlが呼び出したのだから、当然ですね) hogehoge.htmlへアクセスしたブラウザが持ってたリファラを取得するには、どのようにすればよいでしょうか? 今回はIMGタグでcgiを呼び出していますが、特に手段は選びません。 ちなみに、使用しているサーバーではSSIは使えません。

    • ベストアンサー
    • CGI

専門家に質問してみよう