• 締切済み

EXCEL VBAでIEアクセスを行なうとアクセスが拒否されましたとなる

状況説明 EXCELのVBAで、EXCELのセルデータをWEBの入力フィールドへ書き込む処理を行ないたく奮闘中です。 ここで、おもわぬエラーに遭遇して困っていますのでお助けください 通常のページに書き込むときは、問題なく処理できるのに、フレーム構造のページに書き込もうとすると、「アクセスが拒否されました」とのエラーが返されて処理が実行できません。ググッて見たのですが、セキュリティ上の問題との回答が見受けられるのですが、実際問題としてフレーム構造のページへの書き込みは不可能なのでしょうか? ぜひ知恵をお貸しください、よろしくお願いします

みんなの回答

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

こんにちは。 実際問題として、 フレーム付きの場合は、その書き込む側のURLを正しく取っていない例が多いのですが、それは大丈夫なのですか? だいたい、書き込む側のフレーム内を、右クリックして、プロパティでURL を取って、コード側のURLを書き直します。しかし、フレームの構造によっては、出来ないものもあったように思います。

関連するQ&A

  • Excel vbaでのIE操作(フレーム)について

    ExcelのVBAでIEの操作を勉強しています。 その中でも、複数フレームの処理について勉強がしたいのですが、 良い本、良いサイトをご存知の方いらっしゃいませんでしょうか?

  • 初心者です!エクセルVBAで

    初心者です!エクセルVBAでアクセスのデーターを修正したいのですが。 初心者です!エクセルVBAでアクセスのデーターを修正したいのですが。 データーがテキスト型を空にするには rs!Field1 = "" でいけるのですが 数値型だとエラーが出てしまいます。 フィールドを空文字にしたいのですが・・・

  • Excel VBAによるIEの制御に関して

    Excel VBAで以下のようなフレーム構造を持つHTMLページを操作したいと考えています。 (実際はもっと複雑なページですが、簡略化して記載しています) <HTML> <HEAD> <TITLE>ようこそ ○○さん</TITLE> </HEAD> <FRAMESET id=frameset1 border=0 name=TotalFrame frameSpacing=0 rows=48,*,0,0 frameBorder=0> <FRAME name=header src="./Header/Header.aspx" noResize scrolling=no> <FRAMESET id=frameset2 border=0 frameSpacing=0 frameBorder=0 cols=144,*> <FRAMESET id=menuFrame border=0 name=menuFrame frameSpacing=0 rows=22,*,0 frameBorder=0> <FRAME id=option6 name=option6 src=""> <FRAME name=Contents src="./Menu/MenuFrame.aspx" noResize scrolling=no> <FRAME name=sub2 src="" height="0"> </FRAMESET> <FRAMESET border=0 name=mainFrame frameSpacing=0 rows=*,0> <FRAME name=main src="" scrolling=no> <FRAME name=sub src="" height="0"> </FRAMESET> </FRAMESET> <FRAME name=message src="" height="0"> <FRAME name=footer src="" height="0"> </FRAMESET></HTML> このWebページは、メニューフレームに「番号検索」「高度な書誌検索」などの各種メニューボタンがあり、これらメニューボタンをクリックすると、各メニューに対応した検索画面がメインフレームに表示されるというページ構成になっています。 このWebページを開いた時点(デフォルト)では、メインフレームは「高度な書誌検索」画面になっています。 そこで、 (1)メニューフレームの「番号検索」ボタンをクリックしてメインフレームを「番号検索」画面に変更し、続いて、 (2)メインフレームに表示された「番号検索」画面のテキストボックスに値を入力したいと考えています。 (1)メニューフレームの「番号検索」ボタンをクリックし、メインフレームを「番号検索」画面に変更する操作は以下のプロシージャで上手くいきました。    Dim IE As InternetExplorer, htdoc As HTMLDocument, htdoc_frame As HTMLDocument, htdoc_frame_frame As HTMLDocument, anchor As HTMLAnchorElement    Set IE = CreateObject("InternetExplorer.Application") IE.Visible IE.Navigate "http://www.○○○・・・(省略)・・・" Do While IE.Busy Or IE.ReadyState <> 4 DoEvents Loop Set htdoc = IE.Document Set htdoc_frame = htdoc.frames("Contents").Document Set htdoc_frame_frame = htdoc_frame.frames("header").Document For Each anchor In htdoc_frame_frame.getElementsByTagName("DIV") If anchor.ID = "G04" Then 'G04は「番号検索」ボタンに相当するID anchor.Click Exit For End If Next しかし、続く、(2)メインフレームに表示された番号検索画面のテキストボックスに値を入力する操作が、以下のプロシージャでは上手く行きません。 Set htdoc = IE.Document Set htdoc_frame = htdoc.frames("main").Document Set htdoc_frame_frame = htdoc_frame.frames("main").Document Dim txtAreaOutput As HTMLInputElement Set txtAreaOutput = htdoc_frame_frame.getElementsByName("TextBox1")(0) txtAreaOutput.Value = "VBAからの書き込み" 上記プロシージャを実行してもエラーは発生しないのですが、テキストボックスに"VBAからの書き込み"という値が入力されません。 自分でいろいろ調べてみたところ、どうも、(1)の操作で、見た目はメインフレームが「番号照会」画面に変化しているものの、内部的に?はメインフレームが「高度な書誌検索」画面のままであるのが原因のようです。 内部的にも、メインフレームを「高度な書誌検索」画面から「番号検索」画面に変化させるにはどうすれば良いのでしょうか? 非常に判り難い質問かと思いますが、何か判る方がいらっしゃいましたら、教えて頂けると幸いです。

  • セキュリティ警告 エクセルVBAでIE操作

    こんにちは。 エクセルVBAでIEを操作してます。 その際、あるサイトのページを表示させようとすると 「セキュリティで保護されたWebページコンテンツのみを表示しますか?」 という警告するウィンドウが開いて、マクロが止まってしまいます。 何か良い対策はないでしょうか? 例えば、 1.このウィンドウを出さないようにプログラムする 2.このウィンドウに「はい」と「いいえ」ボタンがあるので、ウィンドウが出たときには常に「はい」を押す ちなみに、VBAではなく、手動でWebページにアクセスした場合はセキュリティ警告は表示されません。 不足した情報があれば教えてください。WebページのURLは会員制サイトのためここには書けません。 以上です。よろしくお願いします。 -- エクセル2003

  • ExcelのVBAでAccess操作です

    タイトルの操作で、エクセルシートのセルのコード番号をアクセスの データベースのIDのフィールドから検索し、アクセスのその行を削除または、修正をしようとしています。 アクセスのIDのフィールドには重複するものは存在しません。 現在For~Nextで一行づつ見る方法まできましたが、レコード数が増えた場合かなりの時間がかかります。 エクセルのVBAの記述で TROW=検索範囲.Find(検索文字列,Lookat:=xlWhole).Row に換わる記述はどういうものがあるのでしょうか? エクセルのVBAで処理をしたいのですがよろしくお願いします。 また、For~Nextの記述の場合、変更しようとするとLockedがYesになっているため変更できない旨のメッセージが出ます。 アクセスのテーブルにロックがかかっている意味だと思うのですが、 Unprotectのような記述もあれば教えていただきたいと思います。 アクセスは全く初めてで壁にぶち当たっています。 どうぞ宜しくお願いします。

  • ExcelのVBAでCSVを読み込むと通貨になる

    Excel2010のVBAでCSVファイルを読み込んで処理させたいのですが、読み込んだデータをExcelが勝手に別のデータに変えてしまうので困っています。 例えば、123,456というデータは、フィールドにカンマがあるので、CSVでは"123,456"となりますが、これを以下のようなVBAのコードで読み込ませると、書式が通貨として扱われてしまって、データも123456になってしまいます。文字列として読み込まれていれば正しいデータとして読み込まれるように思うのですが、文字列として読み込ませる方法が分かりません。正しく元のデータ123,456のまま読み込ませるにはどうすればいいのでしょうか。 なお、CSVの各フィールドにカンマやダブルクォーテーションが混在していると、各フィールドに分割する処理が複雑でよく分からないので、下記のコードのようにExcelの機能でCSVを各フィールドに分割される方法で読み込ませたいです。 よろしくお願いします。 Workbooks.Open Filename:= "file.csv"

  • AccessのデータをExcelに貼り付け

    AccessのデータをフィルターしてExcelに貼り付けるには、AccessとExcelのどちらのVBAを使えば良いでしょうか。 前提:Accessに10フィールド100行くらいのデータがあり、Excelに氏名と日付を入力する欄がある。 処理:AccessのデータをExcelに入力した氏名と日付でフィルター(AND検索)→フィルターしたままExcelに貼り付け→そのデータをExcelの関数とVBAで処理(複雑な関数なのでAccessで処理できない)

  • エクセル2007VBAでUngroupができない

    エクセル2003で作ったvbaコード付きのファイルをエクセル2007で開いたときに Cells.Rows.Ungroup の部分がエラーになってしまいます。 エラー内容は 「実行時エラー1004 RangeクラスのUngroupメソッドが失敗しました」 です。 エクセル2003では問題なく動いていたのになぜ2007ではだめなのでしょうか? vba画面でデバッグしてもコンパイルエラーにはなりません。 アドバイスよろしくお願いします。

  • EXCEL VBAの OLEObjectについて

    EXCELでVBAを組んである処理をしているのですが、 EXCELのワークシート上にコントロールツールの OptionButtonをいくつか配置してあり、チェックのあるものを VBAのテーブルに入れて処理しようとしていますが、 ”実行時エラー1004 WorkSheetクラスのOLEObjectプロパティを取得できません。” というエラーが出てしまいます。 OLEObjectを使うのが初めてなので、初歩的なミスじゃないかと思います VBAの記述は以下のとおりです Sheets(ReferSheet).Select For i = 1 To 12 If Sheets(ReferSheet).OLEObjects("OptionButton" & i).Object.Value = True Then OpBt(i) = 1 End If Next どうかご指導お願いいたします。

  • ExcelからAccessのクエリを呼び出したい

    約20,000レコードほどのデータを一気にExcelのVBA上の選択SQLでEditとUpdateで処理しようと思ったのですが、一気に処理できるレコード数に制約があるようでエラーになりました。 Access内のクエリだとOKみたいですがExcelからAccessのクエリを呼び出す方法がわかりません。 どうしたらいいのでしょうか? よろしくお願いします。 バージョンは2002です。

専門家に質問してみよう