• ベストアンサー

AccessでVBAを使って

AccessでVBAを使ってやりたいことがあります。 あらかじめExcelで作成したHTMLファイルを作ります。 ファイルの内容は「Click」という文字列にハイパーリンクが仕掛けてあります。 やりたいことは、自動的にHTMLファイルを開いて、 Clickの文字列を完全一致で探し出して、 そのハイパーリンクをクリックしたいのです。 どなたかご回答をよろしくお願いいたします。

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

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

#1です。AccessからExcelを起動して制御したいという事なんでしょうか。そちらは他の方からのご回答をお待ち下さい。 敢えて、#1に沿った解を呈示させていただきます。Excelを相手にしているより快速だと思います(たぶん) Sub test() Dim FSO As Object, TextFile As Object, objSh As Object, regEx As Object Dim Matches As Variant, match As Variant Dim buf As String Set FSO = CreateObject("Scripting.FileSystemObject") Set TextFile = FSO.OpenTextFile("C:\book1.htm") buf = TextFile.ReadAll Set TextFile = Nothing Set FSO = Nothing Set regEx = CreateObject("VBScript.RegExp") Set objSh = CreateObject("Shell.Application") With regEx .MultiLine = True ' http://msdn.microsoft.com/ja-jp/library/ms235225.aspx .pattern = "<A[^>]*?HREF\s*=\s*""([^""]+)""[^>]*?>([\s\S]*?)<\/A>" .IgnoreCase = True .Global = True Set Matches = .Execute(buf) End With For Each match In Matches If match.submatches.Item(1) = "click" Then objSh.ShellExecute match.submatches.Item(0) End If Next match Set regEx = Nothing Set objSh = Nothing End Sub

maimai24
質問者

お礼

ありがとうございます!これがやりたかったんです。 軽くてとても助かりました。 ちなみにhtmlで保存する意味ですが、 既にWebページ形式で保存しているドキュメントで 形式が変えられないものに対して新しくやりたいことだった為です。

その他の回答 (2)

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

#1です。エクセル版も作ってしまいました。意外と短くて済みました。コメントアウトしてあるところはおまけです。でも、この場合、htmlで保存する意味は? Sub test() Dim objEx As Object Dim wbk As Object, sh As Object, hlink As Object Set objEx = CreateObject("Excel.Application") objEx.Visible = True Set wbk = objEx.Workbooks.Open("C:\book1.htm") For Each sh In wbk.worksheets For Each hlink In sh.usedrange.hyperlinks If hlink.TextToDisplay = "click" Then hlink.Follow Next hlink Next sh ' objEx.DisplayAlerts = False ' wbk.Close ' objEx.DisplayAlerts = True ' objEx.Quit ' Set objEx = Nothing End Sub

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

IEを起動して制御するなんて解もあるかもしれませんが、単にテキストファイルとして開いて、href="hoge.html"とかの文字列を探して(何を探せば良いかは質問者様が一番お分かりだと思いますので)、URLなり、ファイル名なりを抽出し、それに適したアプリケーションで開けば良いと思いますが、いかがでしょうか。下記コードで、ファイルだけでなく、URLも開けました。ご参考まで。 Sub Test() Dim objSh As Object Const myPath As String = "http://okwave.jp/qa/q5651487.html" With CreateObject("Shell.Application") .ShellExecute myPath End With End Sub

maimai24
質問者

補足

ご回答ありがとうございます。 私の説明不足でしたので補足致します。 実際には探す文字列(セル)はClick以外にも多数あり、 かつ、そのリンク先は全て違うURLになっているため、 完全一致した文字列(セル)にしかけてあるハイパーリンクをクリックしたいのです。 また方法を教えて頂ければ幸いです。 よろしくお願いします。

関連するQ&A