MS Access

AccessやExcelで作ったハイパーリンクではChromeブラウザ上のGmailの受信トレイを検索できんかった・・・がShellならできた

投稿日:2020年9月30日 更新日:

Accessのフォームにつくったボタンをクリックしたら、ハイパーリンクに変数がセットされ、その変数でGmailの受信トレイを検索する・・・・といった仕組みを作りたかった。

Private Sub cmdメール検索_Click()
Dim myTextValue As String, orderno As String, bikou As String
On Error Resume Next
orderno = Me.注文番号
bikou = Me.お名前等備考
myTextValue = "https://mail.google.com/mail/u/0/#search/" & orderno & "%23" & bikou '%23は空白を意味

'    NGだったパターン
'    Me.cmdメール検索.HyperlinkAddress = "" 
'    Me.cmdメール検索.HyperlinkAddress = myTextValue

'    OKだったパターン
Dim sApl
sApl = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" '// ブラウザのパス
Call Shell(sApl &; " " & myTextValue)
End Sub

WordPressのエディタがあほなせいで、アンパサン(&)やダブルクオーテーション(”)が変になっているが、読み替えて欲しい。済まない。

EdgeやFirefoxでは、HyperlinkAddressプロパティに変数をセットするだけで、思った通りに検索して、その結果を出してくれる(上記コードの「NGだったパターン」で成功する)。

しかしChromeでは、うまくいかない。
画面を見ていると、どうやらプログラムを実行後に、ChromeのURL欄に入力された#searchが##searchに置き換えられ、そのあと#inboxにリダイレクトされたうえで、#searchが消される。

念のため、Excelのセルに、VBAを使わずに「https://mail.google.com/mail/u/0/#search/354942-20200929%207010111」といった感じのリンクを付けてクリックしてみたが、やはり同じだった。この時点でVBA犯人説は消えた。

となると今回悪いのは、MSのアプリでもVBAでもない。Chromeだ。
しかし、Google検索しても、このトラブルの回避方法について誰も書いていない。

諦めかけたところで、下記の記事を見つけ、WindowsのShellを使うやり方を試してみた。

セルの値を好きなブラウザでGoogle検索する | Excel作業をVBAで効率化

結果、上記コードの「OKだったパターン」で成功。

意味が分からんので、もやもやはしているけど、Chromeの仕様かなんかだろうか。
これ以上調べてもわからんので、とりあえずは良しとしよ。

-MS Access

執筆者:

関連記事

no image

「3070 有効なフィールド名または式として認識できません」エラーで、困った

Accessで、クエリ単体での実行だとうまくいくのに、いざ、そのクエリをVBAコード内で実行すると、上記エラーが出る。 難問だった。 SQL文内でDISTINCTを使っているからかなーとか、LEFT …

no image

VBAで英字混じりの引数から数字のみを取り出す関数

たとえば、abcABC123456XYGという引数から、123456のみを取り出したい。 VBAの組み込み関数で、適当なのがありそうだけど、無いみたい。 カスタム関数を作るにも、これはという情報がググ …

no image

客先で動かしているAccessとFAXの連携システムが昨日から止まっている

これまでのWindowsXP+OutlookExpressであれば問題なかった。 しかし、OSはWindows7になってしまい、メールはWindowsLiveメールになってしまった。 そしてWindo …

no image

Office2013のSELFCERT.EXEの場所

さがして、やっと見つかった。 自分のPC環境の場合は、以下だった。 C:\Program Files (x86)\Microsoft Office\Office15 参考にしたブログによっては、C:\ …

no image

Accessで指定テーブル内を全文検索

今まで、特定のフィールド内でしか検索できないものだと思っていた・・・。 Accessのリボンの検索ボタンをクリックして表示されるダイアログボックス内の「探す場所」で特定のテーブル/クエリ/フォーム名か …