痔になりやすい生活習慣とは?

表題のとおり、WEB上の特定タグ要素の位置にマウスポインタを移動させることはできないでしょうか?要素は抽出できますが、要素と画面上の位置の把握ができるかどうかがわかっていません。
エクセルVBAから操作したいので、できればVBでなくVBAベースでご回答頂けると助かります。

具体的には、下記の質問に添付している画像にしめすTabをクリックしたいです。
本質問の背景は、下記質問でTabに関する要素を取出し、.Clickしても反応しないため、これを解決するために別の手段として本質問の内容でマウスポインタを移動し(api使用)、mouse_event によるクリックでこれを実現したいと考えている次第です。
このような事情ですので、本質問ではなく直接下記質問に対するご助言を頂いても構いません。むしろ助かります。

【VBA/HTML】IE画面内のページTabをクリックしたい
<https://oshiete.goo.ne.jp/qa/9622334.html>

質問者からの補足コメント

  • ちなみにですが、クリックしたい位置をあらかじめ調べてポインタを置くことはできます。
    ただ、PCが異なる場合、IEの表示サイズが異なる場合にも対応したいため要素の位置を取得したいです。

      補足日時:2017/02/27 23:59
  • あ、、お礼のコメントで呼び捨てしてしましました。。
    kumatti_1様です。失礼いたしました。

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/02/28 22:18

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

A 回答 (3件)

accLocationメソッドの第一引数、第二引数に座標値が入って来ます。



参考
---
Option Explicit

Private Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(0 To 7) As Byte
End Type

Private Declare PtrSafe _
Function IUnknown_QueryService Lib "shlwapi.dll" ( _
ByVal punk As IUnknown, _
guidService As GUID, _
riid As GUID, _
ppvOut As IAccessible _
) As Long

Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)


Sub hoge()

Dim IID_IAccessible As GUID

With IID_IAccessible
.Data1 = &H618736E0
.Data2 = &H3C3D
.Data3 = &H11CF
.Data4(0) = &H81
.Data4(1) = &HC
.Data4(2) = &H0
.Data4(3) = &HAA
.Data4(4) = &H0
.Data4(5) = &H38
.Data4(6) = &H9B
.Data4(7) = &H71
End With

Dim ie As Object
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.Navigate "https://www.google.co.jp/"

While ie.Busy Or ie.ReadyState <> 4
Sleep 1&
Wend

Dim e As Object
Set e = ie.Document.all("btnK")

Dim hr&
Dim acc As IAccessible
hr = IUnknown_QueryService(e, IID_IAccessible, IID_IAccessible, acc)

Dim a&, b&, c&, d&
acc.accLocation a, b, c, d

Debug.Print a, b



End Sub
この回答への補足あり
    • good
    • 0
この回答へのお礼

大変ありがとうございます。
やりたいこと、完璧にできました!!!!!!
本当に本当に感謝いたします。

この手の関数はイメージが全くできず、本当に難しいです。
ですが、このあたりを理解できればかなり操作がすらすらできるのだろうなと感じています。

この度は、所望の要素にポイントをおきクリックさせましたが、下記質問に示す<LI>リスト要素に対して行うことで実現できました。(<A>をやってみましたがTab位置にはポイントできませんでした)
また改めて、<LI>に対して.Clickで対応してみましたがやはり無反応でした。

このようなケースの場合はkumatti_1でも、マウス操作させる方法に頼ることはありますでしょうか?
それともまだまだやりようがあると思われますか?(どこまで追求するかにもよりますが)

【VBA/HTML】IE画面内のページTabをクリックしたい
<https://oshiete.goo.ne.jp/qa/9622334.html>

とにもかくにも、大満足です。https://oshiete.goo.ne.jp/qa/9653720.html#
本当に長い間お付き合いありがとうございます。
数日後に締切ます。もしよろしければ↑コメント頂けると嬉しいです。

お礼日時:2017/02/28 22:16

http://detail.chiebukuro.yahoo.co.jp/qa/question …
後はFireEventぐらいしか思い付きません。
    • good
    • 0
この回答へのお礼

ありがとうございます。
遅くなりまして申し訳ございません。
結局、この度最初に投稿頂いたsub hogeを利用させて頂きやりたいことを網羅できました。
大変感謝しております。

追伸:別途またファイルのダウンロードで困っていますのでこれから投稿致します。
もしよろしければご教授願います。

お礼日時:2017/03/20 02:56

上手く行った様で何よりです^^;



それで、IAccessibleが取得出来るなら、
acc.accDoDefaultAction 0&

でもタブ要素をクリック出来そうな気がしますが。
    • good
    • 1

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

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

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

Q【VBA/HTML】IE画面内のページTabをクリックしたい

添付の画像に示す箇所のTabをクリックしたいです。
具体的HTMLの中身でいうと、下記HTMLソースにしめす●BBB●をクリックしたいです。
●BBB●に含まれる各タグの要素を取出しては.Clickをしましたが何も変化がないです。
取り出した各タグ要素は、<LI>、<SPAN>、<SPAN>、<EM>、<A>です。それぞれ独立に要素抽出して、.Clickを試みました。やり方としては、本要素が含む<DIV>又は<LI>から、さらに各種タグ要素を取り出してクリックしています。
(objIE.document.getElementsByTagName(tagname).Click)

何をすれば、クリックできるかヒントを頂きたいです。

----【HTML:タブが含まれるDIVタグ】----------------------------------------------------------------------------------------
<DIV class="x-tab-panel-header x-tab-panel-header-noborder x-unselectable x-tab-panel-header-plain" id=ext-gen151 style="WIDTH: 740px; MozUserSelect: none; KhtmlUserSelect: none" unselectable="on"><DIV class=x-tab-strip-wrap id=ext-gen154 style="WIDTH: 740px">

<UL class="x-tab-strip x-tab-strip-top" id=ext-gen156>

<LI class=" x-tab-strip-active" id=infoPageinfoPanelID__infoPage_myTab_object_changeNoticeDetailsTab _nodup="30815"><A class=x-tab-strip-close id=ext-gen159></A><A class=x-tab-right id=ext-gen160 href="#"><EM class=x-tab-left><SPAN class=x-tab-strip-inner><SPAN class="x-tab-strip-text ">●AAA●</SPAN></SPAN></EM></A></LI>

<LI id=infoPageinfoPanelID__infoPage_myTab_object_simplifiedImplementationPlanTab _nodup="30815"><A class=x-tab-strip-close id=ext-gen161></A><A class=x-tab-right id=ext-gen162 href="#"><EM class=x-tab-left><SPAN class=x-tab-strip-inner><SPAN class="x-tab-strip-text ">●BBB●</SPAN></SPAN></EM></A></LI>

<LI id=infoPageinfoPanelID__infoPage_myTab_object_changeNoticeProcessTab _nodup="30815"><A class=x-tab-strip-close id=ext-gen163></A><A class=x-tab-right id=ext-gen164 href="#"><EM class=x-tab-left><SPAN class=x-tab-strip-inner><SPAN class="x-tab-strip-text ">プロセス</SPAN></SPAN></EM></A></LI>

<LI id=infoPageinfoPanelID__infoPage_myTab_object_changeObjectsHistoryTab _nodup="30815"><A class=x-tab-strip-close id=ext-gen165></A><A class=x-tab-right id=ext-gen166 href="#"><EM class=x-tab-left><SPAN class=x-tab-strip-inner><SPAN class="x-tab-strip-text ">●CCC●</SPAN></SPAN></EM></A></LI>

<LI id=infoPageinfoPanelID__infoPage_myTab_sysnav_sysnavTab _nodup="30815"><A class=x-tab-strip-close id=ext-gen167></A><A class=x-tab-right id=ext-gen168 href="#"><EM class=x-tab-left><SPAN class=x-tab-strip-inner><SPAN class="x-tab-strip-text ">●DDD●</SPAN></SPAN></EM></A></LI>

<LI class=" x-tab-with-icon privateEditableTab" id=infoPageinfoPanelID__new_tab_action><A class=x-tab-strip-close id=ext-gen324></A><A class=x-tab-right id=ext-gen325 href="#"><EM class=x-tab-left><SPAN class=x-tab-strip-inner><SPAN class="x-tab-strip-text tab-add" qtip="XXXX "></SPAN></SPAN></EM></A></LI>

<LI class=x-tab-edge id=ext-gen157 _nodup="30815"><SPAN class=x-tab-strip-text></SPAN></LI>

<DIV class=x-clear id=ext-gen158></DIV>

<DIV class=x-dock-tab-drop-highlight id=ext-gen170 style="VISIBILITY: hidden"><IMG id=ext-gen171 style="POSITION: absolute" src="netmarkets/javascript/ext/dockPanel/pos.gif"></DIV></UL></DIV>

<DIV class=x-tab-strip-spacer id=ext-gen155></DIV></DIV>

添付の画像に示す箇所のTabをクリックしたいです。
具体的HTMLの中身でいうと、下記HTMLソースにしめす●BBB●をクリックしたいです。
●BBB●に含まれる各タグの要素を取出しては.Clickをしましたが何も変化がないです。
取り出した各タグ要素は、<LI>、<SPAN>、<SPAN>、<EM>、<A>です。それぞれ独立に要素抽出して、.Clickを試みました。やり方としては、本要素が含む<DIV>又は<LI>から、さらに各種タグ要素を取り出してクリックしています。
(objIE.document.getElementsByTagName(tagname).Click)

何をすれ...続きを読む

Aベストアンサー

画像から受ける印象としてはフレームが使われてそうですが、
取り敢えず、目的の要素を「マウスカーソル直下の要素を取得する」コードで、
親のWindowオブジェクトを返させて、そのDocumentがIE本体のDocumentと一致するなら、
フレームが使われていないと判断出来ます。

https://gist.github.com/kumatti1/452198b822eb590f4693

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 再帰について

こんばんは
再帰についておしえてください。
実行結果は120となります。
F8で動作を追っていくと
Sample_subに5を渡してn<=1になるとENDIFにうつり
その後、END funtionとEndifの間をいききしております。
どうして、こういう動作をするのでしょうか?
よろしくおねがいいたします。

Sub sample()
MsgBox sample_sub(5)
End Sub
Function sample_sub(ByVal n As Integer)
If n <= 1 Then
sample_sub = 1 'ここで再帰処理は終了します。
Else
sample_sub = n * sample_sub(n - 1) 'ここで自分自身を呼び出しています。
End If
End Function

Aベストアンサー

VBA の
Function名 = 戻り値
って書き方に惑わされていませんか?
> sample_sub(5)
で呼び出したときの sample_sub=〜 と、その中の
> sample_sub = n * sample_sub(n - 1) 'ここで自分自身を呼び出しています。
にある sample_sub(n - 1) で呼び出されたときの sample_sub=〜 とは、別なものになります。
「一つの変数sample_sub」 の値が変化しているわけではありません。
ステップ実行で見ると、プログラムの同じ行を指しているので「一つの変数sample_sub」 の値が変化している」様に見えてしまいますが、そうではないのです。


別の例を用意します。
sample_sub(5) で呼び出したのと、同じ動きをする関数 sample_sub_5 を作ります。

Function sample_sub_5()
If 5 <= 1 Then
sample_sub_5 = 1
Else
sample_sub_5 = 5 * sample_sub_4()
End If
End Function

同様に4〜1を用意します

Function sample_sub_4()
If 4 <= 1 Then
sample_sub_4 = 1
Else
sample_sub_4 = 4 * sample_sub_3()
End If
End Function

Function sample_sub_3()
If 3 <= 1 Then
sample_sub_3 = 1
Else
sample_sub_3 = 3 * sample_sub_2()
End If
End Function

Function sample_sub_2()
If 2 <= 1 Then
sample_sub_2 = 1
Else
sample_sub_2 = 2 * sample_sub_1()
End If
End Function

Function sample_sub_1()
If 1 <= 1 Then
sample_sub_1 = 1
Else
sample_sub_1 = 1 * sample_sub_0()
End If
End Function


この sample_sub_5() での動作は、 sample_sub(5) とまったく同じになります。

VBA の
Function名 = 戻り値
って書き方に惑わされていませんか?
> sample_sub(5)
で呼び出したときの sample_sub=〜 と、その中の
> sample_sub = n * sample_sub(n - 1) 'ここで自分自身を呼び出しています。
にある sample_sub(n - 1) で呼び出されたときの sample_sub=〜 とは、別なものになります。
「一つの変数sample_sub」 の値が変化しているわけではありません。
ステップ実行で見ると、プログラムの同じ行を指しているので「一つの変数sample_sub」 の値が変化している」様に見えてしまいますが、そ...続きを読む

Q【VBA】IF文 複数(ネスト)の時の処理について

こんにちは。
if文についておしえてください。
以下のようなマクロがあるとします。

変数 tensuuに-1をいれて実行すると①→②のように動作し「入力エラー」と表示されます。
tensuuに120を入れて実行すると①´→②´の順に動作し「入力エラー1」と表示されます。

どして、-1のときは入力エラー1にはいかず入力エラーにいくのでしょうか?
120のときは入力エラーにはいかず入力エラー1にいくのでしょうか?

動きがよくわかりません。
IF文とELSEはどういう紐づけがされているのでしょうか?

よろしくおねがいいたします。
   
Sub t()
tensuu = -1
If tensuu >= 0 Then '①
If tensuu <= 100 Then '①´
If tensuu >= 80 Then
MsgBox "合格"
Else
MsgBox "不合格"
End If
Else
MsgBox "入力エラー1" '②´
End If
Else
MsgBox "入力エラー" '②
End If
End Sub

こんにちは。
if文についておしえてください。
以下のようなマクロがあるとします。

変数 tensuuに-1をいれて実行すると①→②のように動作し「入力エラー」と表示されます。
tensuuに120を入れて実行すると①´→②´の順に動作し「入力エラー1」と表示されます。

どして、-1のときは入力エラー1にはいかず入力エラーにいくのでしょうか?
120のときは入力エラーにはいかず入力エラー1にいくのでしょうか?

動きがよくわかりません。
IF文とELSEはどういう紐づけがされているのでしょうか?

よろし...続きを読む

Aベストアンサー

If 〜 Then 〜 Else 〜 End If
で1セットです。

ネスト(入れ子)になったIF文というのは、 Then 〜 とか Else 〜 の〜の部分にIf文がくるものです。
ですから、外のIfを越えてしまうことはありません。
よって、一番内側から見ていけば、構造がはっきりします。


一番内側から見ます。

If tensuu >= 80 Then
MsgBox "合格"
Else
MsgBox "不合格"
End If

が1セットです。
これを 「文1」とすると元のプログラムは

If tensuu >= 0 Then '①
If tensuu <= 100 Then '①´
「文1」
Else
MsgBox "入力エラー1" '②´
End If
Else
MsgBox "入力エラー" '②
End If

となります。この状態で「一番内側」を見ると

If tensuu <= 100 Then '①´
「文1」
Else
MsgBox "入力エラー1" '②´
End If
です。これを「文2」とすると

If tensuu >= 0 Then '①
「文2」
Else
MsgBox "入力エラー" '②
End If


余談ですが
この例の場合、外側2つは、判定内容と処理とが離れてしまい、見辛いのは確かです。
if 条件 Then A Else B は if not条件 Then B Else A と同じ、ということから、Thenでの処理とElseでの処理を入れかえれば、
条件の直ぐ下の処理が来るので、見易さが格段によくなります。

If tensuu < 0 Then '① ' tensuu<0 は not (tensuu>=0)と同じ
MsgBox "入力エラー" '②
ElseIf tensuu > 100 Then '①´
MsgBox "入力エラー1" '②´
ElseIf tensuu >= 80 Then
MsgBox "合格"
Else
MsgBox "不合格"
End If ' ElseIfで継いでいるので、ネストにはなっていない

If 〜 Then 〜 Else 〜 End If
で1セットです。

ネスト(入れ子)になったIF文というのは、 Then 〜 とか Else 〜 の〜の部分にIf文がくるものです。
ですから、外のIfを越えてしまうことはありません。
よって、一番内側から見ていけば、構造がはっきりします。


一番内側から見ます。

If tensuu >= 80 Then
MsgBox "合格"
Else
MsgBox "不合格"
End If

が1セットです。
これを 「文1」とすると元のプログラムは

If tensuu >= 0 Then '①
If tensuu <= 100 Then '①´
「文1」
Else
MsgBox "入力エラー1" '②´
...続きを読む

QVBAでIEの操作→サブウインドウを操作するには

以下の「oya.html」「ko.html」があります。
それを、VBAで「oya.html」を開き、「子ウインドウを開く」リンクをクリックさせて、開いた「ko.html」の「子ウィンドウを閉じる」リンクをクリックさせたいのだがどうすればよろしいでしょうか?
---------VBA ↓---------------------------------------------
Private Sub CommandButton1_Click()
Dim objIE As Object 'Object型
'IEのオブジェクトを作る
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True
objIE.Navigate "file:///C:/oya.html"'「oya.html」を開く
'----表示待ち↓--------
Do While objIE.Busy
 DoEvents
Loop
Do While objIE.document.ReadyState <> "complete"
DoEvents
Loop
'----表示待ち↑----------
For Each linkitem In objIE.document.all.tags("A") 'Aタグ
If linkitem.innerText = "子ウインドウを開く" Then
linkitem.Click
End If
Next
'----表示待ち↓--------
Do While objIE.Busy
DoEvents
Loop
Do While objIE.document.ReadyState <> "complete"
DoEvents
Loop
'----表示待ち↑----------
  For Each linkitem In objIE.document.all.tags("A") 'Aタグ
If linkitem.innerText = "子ウィンドウを閉じる" Then
linkitem.Click
End If
Next
End Sub
---------------↑-------------------------------------------
--------oya.html ↓-----------------------------------------
<html>
<head><script>
function showModal(){
var value = showModalDialog('ko.html');
}
</script></head>
<TITLE>親ウィンドウ</TITLE>
<body>
<a href="javascript://" onclick="showModal()">子ウインドウを開く</a><br>
</body>
</html>
-----------------↑-----------------------------------------
--------ko.html ↓--------------------------------------------
<html>
<TITLE>子ウィンドウ</TITLE>
<body>
<a href="#" onClick="window.close(); return false;">子ウィンドウを閉じる</a><br>
</body>
</html>
------------------↑-----------------------------------------

以下の「oya.html」「ko.html」があります。
それを、VBAで「oya.html」を開き、「子ウインドウを開く」リンクをクリックさせて、開いた「ko.html」の「子ウィンドウを閉じる」リンクをクリックさせたいのだがどうすればよろしいでしょうか?
---------VBA ↓---------------------------------------------
Private Sub CommandButton1_Click()
Dim objIE As Object 'Object型
'IEのオブジェクトを作る
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = Tru...続きを読む

Aベストアンサー

状況を理解しました。
子ウィンドウを、showModalDialog で開いている為に、子ウィンドウを閉じるまで Excel に制御が返ってこないワケですね。
VBA で制御できるレベルではなさそうです。一応参考 URL を添付しておきますが。。。

http://www.usefullcode.net/2006/12/ieihtmldocument2.html
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200509/05090016.txt

QVBAでfor文の中で、continueしたい

お世話になります。
VBAのfor文の中で、ある条件に合致したら、for の先頭に戻りたいのですが、
方法が分かりません。

VB.net 等の「 Continue For」に当たるものは、VBAに
ないのでしょうか?

何卒宜しくお願いします。

Aベストアンサー

Continue For は昔の VB6 までに物には実装されていませんね VB6 使いの私は知らなかった

for の先頭に戻りたいのではなく、 Next の直前に飛びたいのですよね?
幸いにも VBA には Goto ステートメントがありますので

Sub Sample1()
For i = 1 To 10
If 意除外条件 Then GoTo Next_no_mae

通常の総理

Next_no_mae:

Next i

End Sub

じゃダメですか?
これなら For の直後に飛ぶ事も可能ですが

もしくはこれぐらいしか対処方法はないのでは?
Sub Sample2()

For i = 1 To 10
If 除外条件 Then
Else
通常の総理
End If
Next i

End Sub

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...続きを読む

QVBAの天才来てください

二次関数の解を求めるプログラムを作成するのが目的です。

平方根はsqr関数を使うのが条件です。

ax^2+bx +cが基本式になり

(A,3)がaに(B,3)がbに(C,3)がcになるようにして考えます。

でた2解を(A,6)(B,6)に表示します。

もし虚数解なら(A,6)に「解なし」と表示するようにして、重解の場合は(A,6)にだけ表示されるように

プログラミングを作成する。という内容です。

何時間考えてもできないので助けてください。

Aベストアンサー

No.2続き
goto分使うの止めよう

Sub WK()
Dim A As Variant
Dim B As Variant
Dim C As Variant
Dim D As Variant
Dim Sh1 As Worksheet
Set Sh1 = Worksheets("Sheet1")

A = Sh1.Range("A3").Value
B = Sh1.Range("B3").Value
C = Sh1.Range("C3").Value
D = B * B - 4 * A * C
If D < 0 Then
Sh1.Range("A6").Value = "解なし"
ElseIf D = 0 Then
Sh1.Range("A6").Value = (-1 * B + Sqr(D)) / (2 * A)
Else
Sh1.Range("A6").Value = (-1 * B - Sqr(D)) / (2 * A)
Sh1.Range("B6").Value = (-1 * B + Sqr(D)) / (2 * A)
End If

Application.StatusBar = False
End Sub

No.2続き
goto分使うの止めよう

Sub WK()
Dim A As Variant
Dim B As Variant
Dim C As Variant
Dim D As Variant
Dim Sh1 As Worksheet
Set Sh1 = Worksheets("Sheet1")

A = Sh1.Range("A3").Value
B = Sh1.Range("B3").Value
C = Sh1.Range("C3").Value
D = B * B - 4 * A * C
If D < 0 Then
Sh1.Range("A6").Value = "解なし"
ElseIf D = 0 Then
Sh1.Range("A6").Value = (-1 * B + Sqr(D)) / (2 * A)
Else
Sh1.Range("A6").Value = (-1 * B - Sqr(D)) / (2 * A)
Sh1.Range("B6").Value = (-1 * B + Sqr(D)) ...続きを読む

QVBAのIE自動制御について

添付写真のように、URLリストがあります。
そのURLにアクセスして、横のセルにアクセスしたURLを入力したいです。

意図としてはそのURLが存在するかを確認したいためです。
ステータスコードでは区別がつかず・・・リストにあるURLとエラーページのURLが異なる為、
二つを比較すればそのURLが存在するか判断できると思いまして。。

教えてください。お願いします!

Aベストアンサー

#4でダメでしたので、まったく別な方法を試みていますが、やはりうまく行っていません。
お急ぎのところ大変に申し訳ありません。こちらは、もう手立てがほとんど見つかりませんので、どうもスルーして下さってかまいません。トライ&エラーにするにしても、時間がかかりすぎました。

もし、信頼できる所というと、「VBレスキュー花ちゃん」なら、良いかもしれません。
私の回答は、一般的な内容で。それ自体はそんなに問題ないはずなのに、中国系サイトでは失敗するようです。

×>Final URL を知る必要なんてないと思いますから、Invalid URL だけでよいかと思います。

これが間違いだったのです。Final URL を知るというプログラムですが、それを待つのに非常に手間が掛かりすぎます。インターネット検索で、この種のものもあるようです。ただ、中国向けではありません。

実際、IE を手で開いたようにマニュアル調で試みても、URLの供給が早すぎて、ぜんぶ同じようにダメになってしまいます。それと、気がついたのは、サーバーから返ってくるコード(ステータスバーに出る文字)が、特殊な文字コードのようで、それでエラーを起こすようでもあります。せめて漢字でも出れば分かりました。

なお、こちらは、開いている限りは、これからもその都度報告を入れさせていただきます。現在は、ObjIE から、イベントを取り、相手サイトからURLをリターンしてきた時に、エラーなどが返っていないか、また、URLが正しく返ってきているか調べるという方法です。

#4でダメでしたので、まったく別な方法を試みていますが、やはりうまく行っていません。
お急ぎのところ大変に申し訳ありません。こちらは、もう手立てがほとんど見つかりませんので、どうもスルーして下さってかまいません。トライ&エラーにするにしても、時間がかかりすぎました。

もし、信頼できる所というと、「VBレスキュー花ちゃん」なら、良いかもしれません。
私の回答は、一般的な内容で。それ自体はそんなに問題ないはずなのに、中国系サイトでは失敗するようです。

×>Final URL を知る必要なんてない...続きを読む

QVBAで3の倍数の乱数を取得する

excelのVBAのことなのですが
3の倍数で整数で乱数を取得する方法がわかりません。

これがどうしてもわからなくて困ってます。
教えてください。

Aベストアンサー

60~198のの範囲の3の倍数の乱数を発生させ、A1からA1000のセルにその値を書き込んでいます。
200は3の倍数にならないので198を上限にしています。
MyRandを呼び出すと60から198の範囲の3の倍数の乱数を返します。
(あなたが実際に使うのは、MyRandだけです)
上限を201にしたいなら、66を67に変えてください。
MyRandを呼び出す前にRandomizeを1回実行してください。そうしないと毎回同じ結果が返ります。
---------------------------------
Option Explicit
Public Sub 乱数作成()
Dim i As Long
Dim r As Long
'乱数を作成しA列へ格納する(1000回分)
Randomize
For i = 1 To 1000
r = MyRand()
Cells(i, 1).Value = r
Next
End Sub

'60から198の範囲内の3の倍数の乱数を生成する。
Public Function MyRand() As Long
MyRand = Int((66 - 20 + 1) * Rnd + 20) * 3
End Function

60~198のの範囲の3の倍数の乱数を発生させ、A1からA1000のセルにその値を書き込んでいます。
200は3の倍数にならないので198を上限にしています。
MyRandを呼び出すと60から198の範囲の3の倍数の乱数を返します。
(あなたが実際に使うのは、MyRandだけです)
上限を201にしたいなら、66を67に変えてください。
MyRandを呼び出す前にRandomizeを1回実行してください。そうしないと毎回同じ結果が返ります。
---------------------------------
Option Explicit
Public Sub 乱数作成()
Dim i As Long
...続きを読む


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

人気Q&Aランキング