質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

3回答

5303閲覧

ExcelVBAで、aタグのhref属性に"javascript:void(0)"とあるリンクをブラウザで表示させるには

umai29

総合スコア19

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2019/06/18 16:00

お世話になっております。

以前もこちら質問させていただいた者でして、前回の内容の続きとなるのですが、また不明な点が出てきましたので、質問させていただきます。

↓以前の質問
https://teratail.com/questions/195293#reply-289837

ExcelVBAにて、MicrosoftEdgeのブラウザにてWebスクレイピングするプログラムを作成中でして、
ブラウザを表示させ、表示先のプルダウンメニューやテキストボックスに値を入れ、[検索]ボタンを押下するというところまではできたのですが、

[検索]ボタンを押下すると、検索結果が表示され、そこにハイパーリンクが貼ってありまして、さらにそのリンク先をブラウザで表示するようにしたいのですが、そのタグを見ますと、

html

1<a s_content-b19="" href="javascript:void(0)" class="special=text">テキスト</a>

aタグのhrefに"javascript:void(0)"とあります。
ここが例えば、「http://~~~」のような形式であれば、それを指定することによって、ブラウザで表示できそうだとは思うのですが、javascriptとなりますと、どのような処理を行う必要があるのでしょうか。

ExcelVBAの中に、Javascriptを動かす処理を記述する必要があるのでしょうか。

素人で申し訳ありません。
詳しい方のご教示をお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

少なくとも一度 javascript:void(0) について検索してみましたか?

https://uxmilk.jp/47058

ページの中でどんな処理が実行されているのかは知りませんが、何らかのイベントハンドラで処理されていると思うので丸まんま同じ処理をしたいのであればJavaScriptの実行が必要になると思います。
JavaScriptのコードを丁寧に分析すればページ遷移に関するロジックも見つかるかもしれませんが、それに関してはご自身で頑張ってください。

投稿2019/06/18 16:10

mather

総合スコア6753

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

umai29

2019/06/24 13:28

返答が遅くなり、申し訳ありません。 ありがとうございます。 javascript:void(0)については検索してみたのですが有益な情報がつかめず…といったところで手詰まりでした。 詳しいサイトの情報提供ありがとうございます。 これを参考に、もう少し自分のほうでも調べたいと思います。 ありがとうございます。
guest

0

javascript void(0) とは
https://uxmilk.jp/47058

javascript void(0) を使って a タグの画面遷移を無効化する

次の例では、クリックすると別ウィンドウで window.open() の引数として指定したURLを開きますが、元のページは遷移せずにそのままです。

つまり、それを操作しようというのが意味がないことなのでは?

例えば、スーモのサイトでもjavascript void(0) を使用してる箇所があり、下記の感じで普通に動作しますが質問意図と逸れてたらごめんなさい。

'64ビット用Sleep関数
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
Sub Test_Click()
Dim objIE As InternetExplorer
Dim sh As Object
Set objIE = New InternetExplorer

objIE.Visible = True objIE.navigate "https://suumo.jp/?vos=op0014adwstw099000000zzz_01xmsyt111-xe_aud-414662347428:kwd-13279118830:cr-552805620393:sl-:adg-30983744560:dev-c:acc-6530195222:cam-385940440&gad_source=1&gclid=CjwKCAiAu9yqBhBmEiwAHTx5p0fIPkOAlIypSWO0WJp0SJhSTyspClsNfMx40SubqABwzDoigbC7_xoCKgoQAvD_BwE&gclsrc=aw.ds" On Error Resume Next Do While objIE.Busy DoEvents Sleep 200 Loop Sleep 2000 objIE.document.getElementsByClassName("areamenu-label1")(0).Click Sleep 1000

'テストなのでSleep多めに入れてます
End Sub

なので、ClassNameで"special=text”をClickして表示させてからその中にあるボタンなりをさらに押下する必要があるサイトではないんでしょうか
私も最初はjavascript void(0)をobjIE.Document.Script.setTimeoutで動かそうとしたことがあります(笑

投稿2023/11/18 05:38

tanakanonakata

総合スコア4

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

そのaタグをクリックすると該当ページへ遷移するということなら、それをクリックするようにすればどうだろか。

ID属性がないようなのでClass属性で特定して、

vba

1driver.FindElementByClass("special=text").Click

参考リンク
VBAのスクレイピングを簡単楽にしてくれるSelenium|VBA技術解説

投稿2019/06/19 01:26

編集2019/06/20 00:17
hatena19

総合スコア33620

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

umai29

2019/06/19 14:37

ご回答ありがとうございます。 参考リンクのサイトですが、私もそちらを拝見しまして、実践してみたのですが、Byについて変数が定義されていませんとエラーが起きることや、最後の.click();と記述すると(エディターはVBEなのですが)記法が違うということで赤字になります。 何か処理が足りないということなのでしょうか。 立て続けに申し訳ありませんが、もしお分かりでしたら、教えていただけるとありがたいです。
hatena19

2019/06/20 00:13

リンク先はJAVAのコードでしたね。VBAのものに回答を修正しておきました。
umai29

2019/06/24 13:36

返答が遅くなり、申し訳ありません。 FindElementByClassでやってみましたが、エラーは起きないものの、何も起こらないという状態になりました。 ちなみに、自分なりにも調べてはみたのですが、 https://teratail.com/questions/176664 こちらを参考に、aタグの中に、onclick=""があれば、.ExecuteScriptの引数としてそれを指定すればよいのかなと思ったのですが、 <a _content-b19="" href="javascript:void(0)" class="special=text">テキスト</a> こちらにはonclick属性がないというものでした…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問