• ベストアンサー

エクセルVBAにて同行内複数URLの抽出

別枠で同系統の質問となってしまい申し訳ありません。 http://oshiete1.goo.ne.jp/qa5661746.html 上記でご教授頂いたサンプルを実行しましたところ 順調に動いていたのですが、 以下のように同じ行に複数の取得対象が存在するパターンになると 正常に取得できなくて困っています。 index.html内 <a href="http://www.test.co.jp">テスト1</a><img src="image.gif" alt="イメージ"></a><a href="http://www.test2.co.jp>テスト2</a>|<a href="http://www.test3.co.jp">テスト3</a> このように、同じ行に複数の記述がされている際 最後の物のみ取得してしまい(http://www.test3.co.jpが取得される) 前の物全て取得できない状態です。 全てを取得するようにするにはどのようにすればいいか、 すみませんがよろしくお願いします。 なお、ファイルを読み込んでファイル内容を別シートに出力し、 そこから抽出している形を取っています。

質問者が選んだベストアンサー

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.3

http://okwave.jp/qa/q5651487.html のコードをおためし下さい。 ハイパーリンクのURLは、match.submatches.Item(0)に取得できますので、 Debug.Print match.submatches.Item(0) などと改造してみてください。Accessで回答していますが、Excelでも動くと思います。 ご呈示の1行のファイルで試験したところ拾い出せました。 ただし、href="http://www.test2.co.jp>テスト2 のところはダブルクォーテーションが一個欠落していて誤動作しましたので修正して試験しました。

jialess7
質問者

お礼

申し訳ございません、動作しない部分を見直して行ったところ、 タイプミスが原因でした。 ペーストをしてしまうと形式すら身につかないと考え 手動で行っておりました。 試しましたところ、無事動作するようになりました。 お忙しいところありがとうございました。

jialess7
質問者

補足

非常に言葉足らずで大変申し訳ございません。 前回の条件として <a href="**">の**を取得したい、と記述したのは 【http://~】だけではなく 【/index.html】 などと言ったハイパーリンクではない物も取得したいからでした。 例文が悪く大変申し訳ございません。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.4

#3です。パターンをご覧になりましたか?何処にもhttp://は出て来ません。下記のデータで問題なく取得できました。(自分の手柄ではなく、Microsoftの受け売りですが) <a href="http://www.test.co.jp">テスト1</a><img src="image.gif" alt="イメージ"></a><a href="http://www.test2.co.jp">テスト2</a><a href="http://www.test3.co.jp">テスト4</a><a href="/test4.html">テスト4</a><a href="./test5/test5.html">テスト5</a>

jialess7
質問者

お礼

申し訳ございません、動作しない部分を見直して行ったところ、 タイプミスが原因でした。 ペーストをしてしまうと形式すら身につかないと考え 手動で行っておりました。 試しましたところ、無事動作するようになりました。 お忙しいところありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.2

[回答番号:No.1] の DOUGLAS_ です。 >取得した「テキスト(ソースコード)」をそのまま エクセル の ワークシート に貼り付け るよりも、最初から、当該 WEBページ を エクセル に読み込む方が手間が省けますか。。。 Sub TEST()  Dim HL As Hyperlink  Dim myURL As Variant  Dim i As Integer  Dim j As Integer  Workbooks.Open Filename:="http://oshiete1.goo.ne.jp/qa5661746.html"  j = ActiveSheet.Hyperlinks.Count  ReDim myURL(j - 1)  For Each HL In ActiveSheet.Hyperlinks   myURL(i) = HL.Address   i = i + 1  Next  ActiveWorkbook.Close SaveChanges:=False  Range("A1").Resize(j) = Application.WorksheetFunction.Transpose(myURL) End Sub

jialess7
質問者

お礼

お忙しい中ありがとうございました。 今後の参考にさせて頂きたいと思います。

jialess7
質問者

補足

申し訳ありません、条件が抜けておりました。 ソースコードはローカルに配置してあります。 D:\test\ソース 配下に格納しています。

全文を見る
すると、全ての回答が全文表示されます。
  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.1

>別枠で同系統の質問  リンク先は拝見いたしました。 >マクロを用いてテキスト(ソースコード)よりURLを取得したい とのことですが、「テキスト(ソースコード)」はどこに書いていらっしゃるのでしょうか? >全てを取得するようにするにはどのようにすればいいか  結果オーライになりますが、取得した「テキスト(ソースコード)」をそのまま エクセル の ワークシート に貼り付けて、下記のコードを実行なさってみてください。 Sub TEST()  Dim HL As Hyperlink  Dim myURL As Variant  Dim i As Integer  Dim j As Integer  j = ActiveSheet.Hyperlinks.Count  ReDim myURL(j - 1)  For Each HL In ActiveSheet.Hyperlinks   myURL(i) = HL.Address   i = i + 1  Next  Sheets.Add Type:="ワークシート"  Range("A1").Resize(j) = Application.WorksheetFunction.Transpose(myURL)  ActiveSheet.Next.Select  Application.DisplayAlerts = False  ActiveSheet.Delete  Application.DisplayAlerts = True End Sub

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルVBAにてURLの抽出

    エクセルVBAのマクロを用いてテキスト(ソースコード)よりURLを取得したいと考えています。 <a href="**"> 左記の「**」を取得し、エクセル上に 一覧として出力するものを想定しています。 なお、ソース上にhrefのコードは複数存在するので、 それら全てを出力したいのです。 以下が出力希望例になります。 <a href="http://www.test.co.jp"> <script type="text/javascript"> <a href="http://www.test2.co.jp"> 出力結果 http://www.test.co.jp http://www.test2.co.jp 諸事情があり、テキストを読み込んでエクセル上に取得する形式でお願いしたいです。 すみませんが、よろしくお願いします。

  • 複数URLへのサーフタグ

    指定された複数のURLに自動サーフ(リンク)できるタグはないのでしょうか? この手のタグは良く使われますよね? href=<a"http://blogranking.fc2.com/in.php?id=*****"target="_blank"><img src="http://blog67.fc2.com/c_01.gif " target="_blank" </a> よろしくお願い申し上げます。

  • これは相対URLなんですか?

    HTMLを少しかじっている者です。 仕事の関係で、とあるサイトのデータをローカル上に落として、ローカル上で動くようにしているのですが・・・・ サイトのソースを見た所、画像のファイル名のURLの書き方が以下のようになっています。 <img src="/image/gazou.gif"> 私は以下のような書き方しか知らないのですが、 <img src="gazou.gif"> <img src="image/gazou.gif"> <img src="../image/gazou.gif"> <img src="/image/gazou.gif">この書き方も相対パスの書き方なんですか? 本当に、少しだけHTMLをかじっているだけなので、もしかしたら基本的な事なのかも知れませんが、みなさまどうか、教えてください。

    • ベストアンサー
    • HTML
  • 外部 .js で動かないものが出てきてしまいました

    外部 .js への移行に伴い、動かないものがあります。エラは「未定義の変数です: rollover」、および「スクリプトで呼び出しているソースが見つかりません。」。 test.html、test.js、および画像はすべて同じディレクトリに置いています。 (test.js) window.onload = function loadImage() { var rollover = new Array(3); for (var i = 0; i < 3 ; i++) { rollover[i] = new Image(); } rollover[0].src = "image-1-x.gif"; rollover[1].src = "image-2-x.gif"; rollover[2].src = "image-3-x.gif"; } または function loadImage() { var rollover = new Array(3); for (var i = 0; i < 3 ; i++) { rollover[i] = new Image(); } rollover[0].src = "image-1-x.gif"; rollover[1].src = "image-2-x.gif"; rollover[2].src = "image-3-x.gif"; } window.onload = loadImage; (test.html) <html> <head> <script type="text/javascript" src="test.js"></script> </head> <body> <a onmouseover="image-1.src=rollover[0].src; return true;" onmouseout="image-1.src='image-1-y.gif'; return true;" href="page-1.htm"><img name="image-1" src="image-1-y.gif" alt="Page 1"></img></a> <a onmouseover="image-2.src=rollover[1].src; return true;" onmouseout="image-2.src='image-2-y.gif'; return true;" href="page-2.htm"><img name="image-2" src="image-2-y.gif" alt="Page 2"></img></a> <a onmouseover="image-3.src=rollover[2].src; return true;" onmouseout="image-3.src='image-3-y.gif'; return true;" href="page-3.htm"><img name="image-3" src="image-3-y.gif" alt="Page 3"></img></a> </body> </html>

  • 画像をそのままの大きさで新規窓に切り出したい

    全て必ず同じ大きさ(100x100px)で、同じような柄の画像が複数あります。 <a href="1.gif"><img src="1.gif" alt="画像1"></a> <a href="2.gif"><img src="2.gif" alt="画像2"></a> <a href="3.gif"><img src="3.gif" alt="画像3"></a> それぞれをクリックすると、各画像を新規ウィンドウ(サブ窓)に切り出して表示し、 並べて比較できるようにするための効率よい方法についてご教示ください。 具体的にコードで示していただけると大変ありがたいです。 (サブ窓が複数あっても見分けがつくよう、サブ窓のタイトル=alt文字列にセットしたいです)

  • 文字列を抜き出して置換

    《../img.jpg》 と言う文字列を <a href="../img.jpg"><img src="../img.jpg"></a> と言う具合に置き換えて書き出したいのですが、 $text="テスト文章《img.jpg》<br>テスト文章《test.gif》"; $test01=(strpos($text, "《")+2); $test02=(strpos($text, "》")-$test01); $test03=substr($text,$test01,$test02); $test04="<a href=\"".$test03."\"><img src=\"".$test03."\"></a>"; $test_txt=str_replace($test03,$test04,$text); これだと、 「テスト文章<a href="img.jpg"><img src="img.jpg"></a><br>テスト文章《test.gif》」 となってしまい、《../img.jpg》が複数個ある場合の処理がうまく出来ず困っています。 ループ処理すればいいのでしょうけど、どのような方法が適切なのか分かりません。 また、これ以外の方法「preg_match()」などで、いい方法がありましたら、ご教授よろしくお願いします。

    • ベストアンサー
    • PHP
  • php正規表現 相対パス→絶対パス

    下記のようにhtml内の相対パスの箇所を、 全て絶対パスに置換えるにはどう記述したらよいでしょうか? ご伝授いただけたら幸いです。 <a href="/test/jp/danny.pdf" target="_blank"> <img src="/cmn/img/text.gif">   ↓↓   ↓↓ <a href="http://testsaite.co.jp/test/jp/dammy.pdf" target="_blank"> <img src="http://testsaite.co.jp/cmn/img/text.gif">

    • ベストアンサー
    • PHP
  • 複数の画像を連動してロールオーバーさせたいのですが

    宜しくお願い致します。 現在WEBショップを運営しているのですが、 「商品一覧ページ」から「商品詳細ページ」へリンクする画像が3つあり、 現在、それぞれの画像は個別にはロールオーバーするのですが、 3つの画像のどこにポインタを当てても、3つの画像全てが連動してロールオーバーするようにするにはどうすれば良いのでしょうか? (3つの画像のリンク先は全て同じです) どなたかご存知な方がいらっしゃいましたらご教授頂けると幸いです。 宜しくお願い致します。 <td><p><A href="リンク先(1)" ><img src="img/商品名_1.gif" alt="" onmouseover="this.src='img/商品名_2.gif'" onmouseout="this.src='img/商品名_1.gif'" width="133" height="28" /></A></p> <p><A href="リンク先(1)" ><img src="img/詳細ページ_1.gif" alt="" onmouseover="this.src='img/詳細ページ_2.gif'" onmouseout="this.src='img/詳細ページ_1.gif'" width="133" height="18" /></A></p>

    • ベストアンサー
    • HTML
  • <A href= と<IMG srcの使い分け

    <A href= と<IMG srcの使い分けについて伺いたいのですが 一応は以下のようになっていると思っておりますが、 基準がどこにあるのでしょうか? <A href=の対象について <A href="mailto:○○○○○○">   アドレス <A href="○○○○○○.html">  URL等 <A href="image.pdf" target="_blank">  PDF等を開かせる <IMG src=の対象について <IMG src="○○○.gif"等の様に、画像の拡張子になっている。

    • ベストアンサー
    • HTML
  • ドロップダウンメニューの方法を教えてください

    ■ドロップダウンメニューでサブメニューが横並びで出るようにしたいと思っています。 HTMLは下記のように記述しています。どのようにJavascriptを記述すると良いのか教えてください。よろしくお願いします。 【html】 <div id="menuber"> <a href="#"><IMG src="test/m1.gif" width="101" height="20" border="0" align="left"></a> <div class="hiddenmenus"> <span id="sub"> <a href="#"><IMG src="test/sub1.gif" width="101" height="20" border="0" align="left"></a> <a href="#"><IMG src="test/sub2.gif" width="101" height="20" border="0" align="left"></a> <a href="#"><IMG src="test/sub3.gif" width="101" height="20" border="0" align="left"></a> <a href="#"><IMG src="test/sub4.gif" width="101" height="20" border="0" align="left"></a> </span> </div> </div> 【CSS】 .hiddenmenus {position:absolute; top: 20px; left: 0px;} #sub1 { visibility: hidden; }