Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


775 / 13645 ツリー ←次へ | 前へ→

【78382】Iframe内のリンクを指定出来ない 16/8/6(土) 17:15 質問[未読]
【78383】Re:Iframe内のリンクを指定出来ない γ 16/8/7(日) 11:15 発言[未読]
【78384】Re:Iframe内のリンクを指定出来ない 16/8/7(日) 12:03 発言[未読]
【78385】Re:Iframe内のリンクを指定出来ない γ 16/8/7(日) 12:26 発言[未読]
【78386】Re:Iframe内のリンクを指定出来ない 16/8/7(日) 13:45 発言[未読]
【78390】Re:Iframe内のリンクを指定出来ない γ 16/8/7(日) 17:37 発言[未読]
【78396】Re:Iframe内のリンクを指定出来ない γ 16/8/8(月) 20:41 発言[未読]
【78387】ソースコードの残骸その1 16/8/7(日) 14:00 発言[未読]
【78388】ソースコード残骸その2 16/8/7(日) 14:04 発言[未読]
【78389】ソースコードその3 16/8/7(日) 14:09 発言[未読]

【78382】Iframe内のリンクを指定出来ない
質問    - 16/8/6(土) 17:15 -

引用なし
パスワード
   初めて質問させていただきます。

VBAにて、IEの操作は何となくわかったレベルで、
IEのリンクもクリックできるように組めましたが
IFRAME内のリンクが操作できません。
自分なりにいろいろやって、何が試して何が試せていないか
訳がわからなくなってます。
こんな私にどなたかアドバイスを下さい。

【78383】Re:Iframe内のリンクを指定出来ない
発言  γ  - 16/8/7(日) 11:15 -

引用なし
パスワード
   ▼や さん:
>IEのリンクもクリックできるように組めましたが
>IFRAME内のリンクが操作できません。

>自分なりにいろいろやって、何が試して何が試せていないか
>訳がわからなくなってます。

そう言われても困ります。
いろいろうやったのなら、現状のコードを示して、
どこがうまくいかない、ということでヘルプを求めてはどうでしょうか。

具体的には、
・対象となるサイトのURL
・現在トライされているコード
を示してみてはどうですか?
コメントがもらえるかもしれません。

【78384】Re:Iframe内のリンクを指定出来ない
発言    - 16/8/7(日) 12:03 -

引用なし
パスワード
   >そう言われても困ります。
>いろいろうやったのなら、現状のコードを示して、
>どこがうまくいかない、ということでヘルプを求めてはどうでしょうか。

ですよね〜(苦笑) ▼γ さん:

実際のURLは公開できないデータが含まれていますので抜粋で
下記のようなソースです。

<html>
<head>***</head>
<body>
<iframe name="search" src="アドレスです">
</iframe>
</body>
</html>

iframe内のアドレス内容
<html>
<head>***</head>
<body>

</body>
</html>

【78385】Re:Iframe内のリンクを指定出来ない
発言  γ  - 16/8/7(日) 12:26 -

引用なし
パスワード
   ありがとうございます。
それで、いま手元にあるコードは?

また、「vba ie インラインフレーム」などとして
情報を探しているのでしょうか?

【78386】Re:Iframe内のリンクを指定出来ない
発言    - 16/8/7(日) 13:45 -

引用なし
パスワード
   >それで、いま手元にあるコードは?

嗚呼、先ほどのソースの中身が一部消えている(汗)
iframe内のアドレスのbodyの中に<a>タグがあります。
そのタグを選択したいんです。で、
ここに、質問を書き込みさせていただいた後に
次のような記述を発見

------------------
iframe src="***"
のように、ソースHTMLファイルが指定されている場合、
アクセスが拒否されるようです。
-------------------

だから、出来ないんでしょうか?

とりあえず、いろいろ試したコードの残骸を
以下に記載しておきたかったのですが、
ERROR:本文に禁止語句が含まれています。
とでて、何がダメなのか‥。
コピペで貼り付けたからどこで引っかかっているのかわかりません。
コードの残骸は、そのうち再チャレンジします。


【78387】ソースコードの残骸その1
発言    - 16/8/7(日) 14:00 -

引用なし
パスワード
   Dim objIFRAME As Object
Set objIFRAME = Doc.getElementsByTagName("iframe")

Debug.Print TypeName(objIFRAME(0))

Dim oHTMLIFrame As HTMLFrameBase

Dim n As Integer
For n = 0 To objIFRAME.Length - 1
  Set oHTMLIFrame = objIFRAME(n)
Next n
  
' ヤ〇〇〇をクリック
  For Each o In CreateObject("Shell.Application").Windows
    If TypeName(o.document) = "HTMLDocument" Then
      If InStr(o.document.Title, "検索条件設定") > 0 Then
        Set Ie = o
        Set Doc = Ie.document
        Exit For
      End If
    End If
  Next o

【78388】ソースコード残骸その2
発言    - 16/8/7(日) 14:04 -

引用なし
パスワード
   Set Doc = objIE.document

Set objFrame = Doc.frames("search").document

Dim i As Long

For i = 0 To Doc.Links.Length - 1
Debug.Print Doc.Links(i).href
Next i

  For Each o In Doc.getElementsByTagName("a") ' ***ヤ〇〇〇 id=m***
    If o = "javascript:chgFrameUrl('./***')" Then
      o.Click
      Exit For
    End If
  Next o

  Set o = objIE.document.getElementById("m***")
  o.Click

【78389】ソースコードその3
発言    - 16/8/7(日) 14:09 -

引用なし
パスワード
   もう少し残骸があるんですが、
ここのボードの禁止コードに引っかかるようで
載せられません。
とりあえず、アップ出来る範囲で残骸を載せておきました。
私の頭と同じで、スパゲッティになってますが‥。(笑)

【78390】Re:Iframe内のリンクを指定出来ない
発言  γ  - 16/8/7(日) 17:37 -

引用なし
パスワード
   このページの最初に、
「迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。」
と記載されています。

皆さん、ht tp://・・・・ などと、ダミーでスペースを入れたりして
工夫されているようです。

【78396】Re:Iframe内のリンクを指定出来ない
発言  γ  - 16/8/8(月) 20:41 -

引用なし
パスワード
   ご存じだと思いますが、VBAからIEを操作する関係は、
↓のサイトが有用です。
ht tp://www.ken3.org/cgi-bin/group/vba_ie.asp

frame関連は下記です。
ht tp://www.ken3.org/cgi-bin/group/vba_ie_frame.asp
ここらあたりを勉強されたらいかがでしょうか。

これだけだと何ですから、上記をもとにリンク先取得のコードを
書いてみました。

# あなたの場合にうまくいくかは不明です。
# こちらでテストした限りはOKでしたが、サイトにより色々な作り方がありますので。

-----------
Sub ie_frame()
  
  Dim objIE  As InternetExplorer  'IEオブジェクト参照用

  Set objIE = CreateObject("InternetExplorer.application")
  objIE.Visible = True

  objIE.Navigate "ht tp://・・・・" ' 対象となるサイトページ

  '表示終了まで待つ
  Do While objIE.Busy = True
    DoEvents
  Loop

  Dim objFRAME As FramesCollection
  Set objFRAME = objIE.Document.frames 'フレームの代入

  Debug.Print "フレームの数は" & objFRAME.Length

  'ドキュメントオブジェクトの代入
  Dim objDOC  As HTMLDocument   'HTMLドキュメント
  Set objDOC = objFRAME(0).Document 'フレームのドキュメントをセット

  Debug.Print objDOC.Links(0).href 'リンク先のurlを出力

End Sub

775 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free