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の仕様かなんかだろうか。
これ以上調べてもわからんので、とりあえずは良しとしよ。