出産前後の痔にはご注意!

EXCEL VBA で VBAサンプルを参考にして、下記により、URLの内容を得ようとしていますが、できません。 どうも、URL画面の中に インプット用の記述があると、できなくなるのでは、と推測していますが、できるケースもあるようです。解決方法があるようでしたら、教えていただけますでしょうか? (Win7 64B EXCEL2010 IE11です。)'

Sub URL取得TEST()
On Error GoTo Er1
Dim StrUrl As String

StrUrl = InputBox("URLを指定", "URL入力", "http://www3.nhk.or.jp/nhkworld/") ' これは 読み込めます
StrUrl = InputBox("URLを指定", "URL入力", "http://uwl.weblio.jp/") ' これが読み込めません

Dim objIE As Object
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True
objIE.FullScreen = False
objIE.Top = 200
objIE.Left = 100
objIE.Width = 800
objIE.Height = 600

objIE.navigate StrUrl
While (objIE.readyState <> 3 And objIE.readyState <> 4) Or objIE.busy = True
DoEvents
Wend
DoEvents

Workbooks.Add
objIE.ExecWB 17, 0
objIE.ExecWB 12, 0
Sheets.Add
ActiveSheet.name = "Format テキスト"
Range("A1").Select
ActiveSheet.PasteSpecial Format:="テキスト"

objIE.ExecWB 17, 0
objIE.ExecWB 12, 0
Sheets.Add
ActiveSheet.name = "FormatHTML"
Range("A1").Select
ActiveSheet.PasteSpecial Format:="HTML" '別のURLでテキストOKでこれはだめというケースあり
'
objIE.Quit
Set objIE = Nothing
Exit Sub
'
Er1:
objIE.Quit
Set objIE = Nothing
End Sub

このQ&Aに関連する最新のQ&A

A 回答 (9件)

試してみて



objIE.navigate StrUrl
While (objIE.readyState <> 3 And objIE.readyState <> 4) Or objIE.busy = True
DoEvents
Wend
DoEvents

objIE.Document.body.Focus
    • good
    • 1

IE11と言う事で「拡張保護モード」が有効になってるのではないでしょうか。


無効にされるとか。

この回答への補足

「拡張保護モード」は 無効となっていました。
ほかの方の別方法でも、ある方はダメだったというように、PCの設定等で なにかにより、微妙な支障がでてくるということなのでしょうか
ありがとうございました。

補足日時:2013/12/28 05:46
    • good
    • 0

>単純に このままでは 不能なのでしょうか


>JavaScriptだから、何かの設定が必要とかがあるのでしょうか

確認してみましたが、示されてる「Weblio英単語帳」のページでは上手くいきますが。

この回答への補足

示していただいた内容を 

While (objIE.readyState <> 3 And objIE.readyState <> 4) Or objIE.busy = True
DoEvents
Wend
DoEvents

objIE.document.forms("login").Item("email").blur

Workbooks.Add

と修正して、試しましたが、Workbooks.Add へ いかずに Er1:エラーへ 移動します。
なにかの 原因・影響があるのでしょうか?

補足日時:2013/12/22 15:43
    • good
    • 0

ExecWBでなくても、


objIE.Document.body.createTextRange.execCommand "Copy"
で可能かも。

この回答への補足

ためしてみましたが、『「空欄」のテキストエリア(=ログインメールアドレスの欄)が選択されてしまうため  ---』という部分で、不能になっているようです。
なにもないページでは、できました。

補足日時:2013/12/22 07:36
    • good
    • 0

>objIE.document.forms("login").Item ("email"), Blur()


失礼。JavaScriptの構文なので()は余計でした。ついでに.のはずがカンマになってました。
objIE.document.forms("login").Item ("email").Blur

この回答への補足

単純に このままでは 不能なのでしょうか
JavaScriptだから、何かの設定が必要とかがあるのでしょうか

補足日時:2013/12/22 07:39
    • good
    • 0

#1です。

補足に対しまして・・・

例えば1個目のURLは、IEの通常操作でページを開くと、「ページそのもの」にフォーカスがある(と思われます)ので、そのままの状態ですべて選択(Ctrl+A)でコピペできますが、2個目のURLの場合、開いた時点で「空欄」のテキストエリア(=ログインメールアドレスの欄)が選択されてしまうため、空のテキストエリアから全て選択しようとしても、空ですので当然何も選択されません。
(これが例えばテキストエリアにデフォルト仕様で何か文字が入力されている場合、その文字列がコピーされエクセルに貼り付けられるかと思います)

私の知識が不足していたために汎用性のある解決法が思い付きませんでしたが、#3の方が回答されているように「objIE.Document.body.Focus」を追加することで基本的にどのURLでも貼り付けられるようになるかと思います。
(私も勉強になりました、ありがとうございます。。。)
#3の方の補足で「他のウェブページが開いていると~」とありましたが、少なくとも私の環境ではその状態でも問題無く動作しました。。
    • good
    • 0

直前の回答者ですけど



実行時に、ほかのウェブページを表示していると

下のコードを使ってもだめみたいです。

objIE.Document.body.Focus
    • good
    • 0

私も知らなかったので「html Focus 外す」でググりました。


objIE.navigate StrUrl
While (objIE.readyState <> 3 And objIE.readyState <> 4) Or objIE.busy = True
DoEvents
Wend
DoEvents
objIE.document.forms("login").Item ("email"), Blur()
「Weblio英単語帳~TOEICやTOEFLなどの勉強にも使える英語学習サービス~」で、
ログインメールアドレスのテキストボックスにフォーカスが当たってるのでそれを外すとか。

この回答への補足

Blur() のところで ストップしています
どんな DIM が 必要なのでしょうか
お教えください。

補足日時:2013/12/21 12:10
    • good
    • 0

対象のURLを開いた際にCtrl+Aを押してみて、ページ全体が選択されれば読み込めるページ、何も選択されなければ読み込まれないページかと思います。


開いた際に例えばテキストエリアにフォーカスが移動されてしまうようなページは(検索サイト系はそのような所が多そうですが)、そのままではページ全体の選択がされないため読み込まれなくなってしまうかと思います。

例えば質問文にある2個目のURLはTABを2回押してフォーカスをテキストエリアの外に出してやった後にExecWB 17, 0で選択できますので DoEvents の下あたりに

SendKeys "{tab}"
SendKeys "{tab}"

のような記述を追加してやればとりあえずこのケースでは解決できると思いますが、この方法ではURL毎に対処法を変えてやる必要がありそうなのであまり良い回答ではないかと思われます。。。
(例えば、YahooのトップページなどはTABを7回ぐらい押してやっとフォーカスが外れます)

もしかしたら他の方がもっと汎用性のある解決法を提示してくださるかもしれませんm(_ _)m

この回答への補足

『開いた際にCtrl+Aを押してみて』というのは、タイミングがあるのでしょうか?
どんな状態が 『ページ全体が選択される』『されない』なのかを 具体的に教えていただけますでしょうか?
下段の回答のほうは、うまくできました。

補足日時:2013/12/21 11:56
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

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

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

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

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から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起動済みのIEをハンドルから操作するには

既に起動済みのIEブラウザをWSH(VBS)などから、ハンドルを取得して
HTMLソース内のフォームに値をセット(Document forms elementなどで)
する事はできますでしょうか?
出来るとすれば、IEを捕まえて操作するには、どのようにすれば良い
でしょうか?

■補足
起動したIEは、自身のスクリプトからオブジェクトを生成したもの
では無く、ウインドウタイトルくらいしか解りません。

Aベストアンサー

とりあえず
Set ie = GetObject("", "InternetExplorer.Application")
Set ie = GetObject(, "InternetExplorer.Application")
のどちらかで取得できると思います。
Set ie = CreateObject("Shell.Application").Windows(0)
で取得する方法もあるらしいのですが、普通のフォルダもieとして認識してしまうため、純粋にieだけを取得する場合はチェックが必要だと思います。
取得したieでyahooで"おいしいラーメン"の検索結果の件数を表示します。
Sub sample()
Const READYSTATE_COMPLETE = 4
Dim ie As Object
Dim obj As Object
For Each obj In CreateObject("Shell.Application").Windows
If TypeName(obj.Document) = "HTMLDocument" Then
Set ie = obj
Exit For
End If
Next
If ie Is Nothing Then
MsgBox "ありません"
Exit Sub
End If
MsgBox "取得したieの情報" & vbCrLf & ie.LocationName & vbCrLf & ie.LocationURL & vbCrLf & TypeName(ie.Document)
ie.Navigate "www.yahoo.co.jp" 'yahooへ
Do While (ie.ReadyState <> READYSTATE_COMPLETE) Or ie.Busy: Loop '表示待ち
ie.Document.forms("sf1").elements("srchtxt").Value = "おいしいラーメン" '検索文字
ie.Document.forms("sf1").submit '検索
Do While (ie.ReadyState <> READYSTATE_COMPLETE) Or ie.Busy: Loop '表示待ち
If InStr(ie.Document.body.innertext, "に一致するウェブページは見つかりませんでした") > 0 Then
MsgBox "0件"
Else
MsgBox ie.Document.all("yschinfo").all(6).innertext & "件"
End If
Set ie = Nothing
End Sub

とりあえず
Set ie = GetObject("", "InternetExplorer.Application")
Set ie = GetObject(, "InternetExplorer.Application")
のどちらかで取得できると思います。
Set ie = CreateObject("Shell.Application").Windows(0)
で取得する方法もあるらしいのですが、普通のフォルダもieとして認識してしまうため、純粋にieだけを取得する場合はチェックが必要だと思います。
取得したieでyahooで"おいしいラーメン"の検索結果の件数を表示します。
Sub sample()
Const READYSTATE_COMPLETE = 4
Dim ie As Ob...続きを読む

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

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

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


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

Aベストアンサー

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

QExcel VBAでのIE操作でクリックができないボタンはあるのでしょうか

お世話になります。

Excel2016 32bit Windows10

IE自動操作に取り組んでいます。まだ勉強が足りず、ボタンのクリックができません(画像Gカレンダー保存ボタン)。
InputTypeでもaタグでもありません。idで取得はでき、roleがボタンでタブ選択もできるのに、VBAでクリックができません。
この手のボタンはVBA操作不可能なのでしょうか。初歩的な質問かもしれませんが、みなさまのお力添えを頂きたいです。

<div class="goog-inline-block goog-imageless-button" role="button" tabindex="0" style="user-select: none;">
<div class="goog-inline-block goog-imageless-button-outer-box">
<div class="goog-inline-block goog-imageless-button-inner-box"><div class="goog-imageless-button-pos">
<div class="goog-imageless-button-top-shadow"></div>
<div class="goog-imageless-button-content">保存</div>
</div>
</div>
</div>
</div>

お世話になります。

Excel2016 32bit Windows10

IE自動操作に取り組んでいます。まだ勉強が足りず、ボタンのクリックができません(画像Gカレンダー保存ボタン)。
InputTypeでもaタグでもありません。idで取得はでき、roleがボタンでタブ選択もできるのに、VBAでクリックができません。
この手のボタンはVBA操作不可能なのでしょうか。初歩的な質問かもしれませんが、みなさまのお力添えを頂きたいです。

<div class="goog-inline-block goog-imageless-button" role="button" tabindex="0" style="us...続きを読む

Aベストアンサー

こんにちは。

すみません。画像が、ものすごく小さかったのが災いしたのと、

「:jc.save_top」って、wrapper となっている所をみると、何かと組み合わさっていると思います。それをクリックされようとしていたので、なんだろうと考えしまいました。

>(画像Gカレンダー保存ボタン)

カレンダーの赤い「保存ボタン」をクリックですか?
質問の回答になっているのか、あまり確信がありません。

初歩の初歩としては、
<div class="goog-imageless-button-content" unselectable="on">保存</div>
ここから、

With objIE

Set buttons = .Document.getElementsByClassName("goog-imageless-button-content")
For Each n In buttons
   If n.innerText Like "保存*" Then ''= "保存" でもよい
    n.Click
    Exit For
   End If
Next n

End With

で、行けるのではないでしょうか。
もちろん、オブジェクト配列になっているはずですから、それで、何番目か探して、直接、buttons(9).Clickとしても行けるかとは思います。

質問と食い違っていたら、補足をつけてください。

それと、余談なのですが、Googleで、IEを使うのは抵抗ありませんか?フルに動かないと思います。かと言って、Google Chrome をVBAで扱う方法が、なぜか確立できていませんね。Selenium VBAを使うことにはなっているのですが、いろいろやってみて、どうやらバージョンが遅れていることに気が付きました。前から、ずっと遅れているようです。

こんにちは。

すみません。画像が、ものすごく小さかったのが災いしたのと、

「:jc.save_top」って、wrapper となっている所をみると、何かと組み合わさっていると思います。それをクリックされようとしていたので、なんだろうと考えしまいました。

>(画像Gカレンダー保存ボタン)

カレンダーの赤い「保存ボタン」をクリックですか?
質問の回答になっているのか、あまり確信がありません。

初歩の初歩としては、
<div class="goog-imageless-button-content" unselectable="on">保存</div>
ここから、

Wit...続きを読む

QINPUTにnameがない場合のsubmit

<FORM ACTION="login.asp" METHOD="POST">
USER ID:<INPUT TYPE="text" NAME="userid" SIZE="12"><br>
パスワード:<INPUT TYPE="password" NAME="pass" SIZE="12"><br>
<INPUT TYPE="submit" NAME="btn01" VALUE="ログイン">
<INPUT TYPE="reset" VALUE="クリア">
</FORM>

上記のHTMLに対して、VBAで操作する場合、
データセットした後

objIE.document.all.btn01.Click 'クリックメソッドを実行

で、submit出来るかと思います。

今、VBAで自動ログインしたいサイトが

<INPUT TYPE="submit" VALUE="ログイン">

のような感じで、nameの属性がありません。
こういうときは、VBAではどうすればログインできるのでしょうか。

初歩的な質問ですみませんが、わかる方教えてください。

<FORM ACTION="login.asp" METHOD="POST">
USER ID:<INPUT TYPE="text" NAME="userid" SIZE="12"><br>
パスワード:<INPUT TYPE="password" NAME="pass" SIZE="12"><br>
<INPUT TYPE="submit" NAME="btn01" VALUE="ログイン">
<INPUT TYPE="reset" VALUE="クリア">
</FORM>

上記のHTMLに対して、VBAで操作する場合、
データセットした後

objIE.document.all.btn01.Click 'クリックメソッドを実行

で、submit出来るかと思います。

今、VBAで自動ログインしたいサイトが

<INPUT TYPE="submit" VALUE="ログイン...続きを読む

Aベストアンサー

objIE.document.forms(0).elements(2).click
または
objIE.document.getElementsByTagName("INPUT")(2).click

Qvba ie操作 ボタンを押したい(2)

https://ca.omc-card.co.jp/member/omcplus_login.html
のサイトにログインしたいのですが、ログインボタンが押せません。

ソースは、
**********************************************************************************
<FORM action="../member/xt_mem_top_login.asp" method="post" name="form1"><input type="hidden" name="sid" value=""><input type="hidden" name="pw" value=""> 
   ~~~省略~~~
<TABLE border="0" cellspacing="0" cellpadding="5" class="tab_button_bottom15">
<TR>
<TD><A href="javascript:checkInput(document.form1);"><IMG src="../img/button/login.gif" alt="ログイン" width="160" height="35" border="0"></A></TD>
</TR>
</TABLE>
</FORM>
**********************************************************************************
です。

---------------------------------------------------------------------------------
Sub test()
Dim objIE As InternetExplorer

Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
objIE.Navigate "https://ca.omc-card.co.jp/member/omcplus_login.html"

Do While objIE.Busy = True Or objIE.ReadyState <> 4
DoEvents
Loop

objIE.Document.forms(0).Item("sid_input").Value = "×××"
objIE.Document.forms(0).Item("pw_input").Value = "×××"

Do While objIE.Busy = True Or objIE.ReadyState <> 4
DoEvents
Loop

'objIE.Document.forms(1).submit 'エラーになる
objIE.Document.all.Item("document.form1").Click 'エラーになる
objIE.Document.forms(0).getElementsByTagName("input")(0).Click 'エラーにならないけどクリックもされない。
objIE.Document.forms(0).getElementsByTagName("input")(1).Click 'エラーにならないけどクリックもされない。
objIE.Document.forms(0).getElementsByTagName("document.form1")(1).Click 'エラーになる
objIE.Document.forms(1).getElementsByTagName("input")(1).Click 'エラーになる

Set objIE = Nothing
End Sub
---------------------------------------------------------------------------------

テキストにIDとPWを入れるところまでは出来たのですが、
ログインボタンを押すことができません。

すいませんがご教授ご回答よろしくお願いしますm( )m

https://ca.omc-card.co.jp/member/omcplus_login.html
のサイトにログインしたいのですが、ログインボタンが押せません。

ソースは、
**********************************************************************************
<FORM action="../member/xt_mem_top_login.asp" method="post" name="form1"><input type="hidden" name="sid" value=""><input type="hidden" name="pw" value=""> 
   ~~~省略~~~
<TABLE border="0" cellspacing="0" cellpadding="...続きを読む

Aベストアンサー

 「ログイン」と表示されたボタンの html コード には
<A href="javascript:checkInput(document.form1);"><IMG src="../img/button/login.gif" alt="ログイン" width="160" height="35" border="0"></A>
と書かれています。

 この html ソース は、簡単にいうと
<A href="リンク先URL"><IMG src="画像のURL"></A>
という構造で「画像をクリックするとリンク先のページが開く」ということを意味しています。

 ここの場合は、実際には「javascript:~~」というページはなく、「login.gif」という画像をクリックすると「checkInput(document.form1);」という「javascript」が働くというコードになります。

 従って、WEBページ自体の html 構造やブラウザ等のセキュリティの関係で受け付けてもらえない場合もありますが。。。

objIE.navigate "javascript:checkInput(document.form1);"

でもイケマス。

 「ログイン」と表示されたボタンの html コード には
<A href="javascript:checkInput(document.form1);"><IMG src="../img/button/login.gif" alt="ログイン" width="160" height="35" border="0"></A>
と書かれています。

 この html ソース は、簡単にいうと
<A href="リンク先URL"><IMG src="画像のURL"></A>
という構造で「画像をクリックするとリンク先のページが開く」ということを意味しています。

 ここの場合は、実際には「javascript:~~」というページはなく、「login.gif」という画像を...続きを読む

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

QWEBページからのメッセージをVBAで

いつもお世話になっております。
エクセルVBAでIE制御についてです。
環境はWIN7、IE 9or11とエクセル2010です。

あるページのリンクをクリックすると、
WEBからのメッセージというダイアログボックスが出てきて、
続行しますか? はい いいえ を聞かれます。

その「はい」をVBAで押したいのですが、
sendkeysメソッドで押そうとしてもうまくいきません。

以下に記載したサイトのOKボタンを押すと出てくるものです。
http://kamicha1.web.fc2.com/Excel/Test20090726.html


以下が書いたコードです。


Declare Sub Sleep Lib "KERNEL32" (ByVal dwMilliseconds As Long)


Sub test()

Dim ie As Object

Set ie = CreateObject("InternetExplorer.Application")

ie.Visible = True
ie.navigate "http://kamicha1.web.fc2.com/Excel/Test20090726.html"
      
Do While ie.Busy Or ie.readyState < 4
DoEvents
Loop

ie.document.getElementsByClassName("bt2")(0).Click '-ここで止まる

Sleep 2000

SendKeys "{Enter}"

End Sub

ステップ実行していくと、ここで止まると書いた所で、
IE上にダイアログは表示されるのですが、
それ以上ステップ実行ができなくなってしまいます。

ダイアログを自分でOKかキャンセルで消すと続きが動くようになります。
その間はVBEはビジー状態となり操作できません。

そのためそれ以降のsendkeysメソッドに
たどり着けない状況かと思われます。

いろいろ調べたところIE8以降はダイアログボックスは
IEから出ているのではなくOS?から出ているとの事でした。

上記のサイトはHTML本体にjavaスクリプトが記載されており、
それをVBAから操作すればどうにかOKボタンが押せるらしいのですが、
自分が操作したいページにはそれらしき記載がありませんでした。

対象のアンカータグは
<a herl=URL 中略 data-comfirm=続行しますか? >
のような感じで記載がありました。

完全に煮詰まっております。
自動でOKをクリックするかEnterキーでOKを押すでも構いません。
どうかご教授お願いいたします。

いつもお世話になっております。
エクセルVBAでIE制御についてです。
環境はWIN7、IE 9or11とエクセル2010です。

あるページのリンクをクリックすると、
WEBからのメッセージというダイアログボックスが出てきて、
続行しますか? はい いいえ を聞かれます。

その「はい」をVBAで押したいのですが、
sendkeysメソッドで押そうとしてもうまくいきません。

以下に記載したサイトのOKボタンを押すと出てくるものです。
http://kamicha1.web.fc2.com/Excel/Test20090726.html


以下が書いたコードです。


Dec...続きを読む

Aベストアンサー

ご参考
https://gist.github.com/kumatti1/4028479

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


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング