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

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

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

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

Q&A

解決済

3回答

4040閲覧

【エクセル初歩的質問】

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

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

0グッド

0クリップ

投稿2017/06/08 06:25

Excel 2016 を使っております。
C列とD列にそれぞれ100行ほど、URLが入力されております。

HYPER LINKになっていて、クリックするとChrome(既定のブラウザ)が起ち上がり、そのページが表示されます。

ここからが問題です。
C列とD列のページを比較したいと思っております。
①Chromeのウインドウを2つ起ち上げて、C列のURLをクリックした場合は左のウインドウで開き、D列の場合は右のウインドウで開くということはできますでしょうか?
②C列のURLをクリックした場合はChromeで開き、D列の場合はFIRE FOXで開くということはできますでしょうか?

それぞれ1行目から100行目まで順番に比較していきますので、ウインドウが分かれている方がやりやすいと思ったので質問させていただきました。(タブの切り替えをしなくて済むため。)

ちなみに作業環境はデュアルモニターのため、一枚でエクセルを開き、もう一枚でブラウザを2つ開こうと考えております。

①か②の方法どちらでも構いませんので、方法が分かる方がおりましたらご教授ください。
①か②と言いましたが、自分で思いついたのがその二つだっただけなので、③があれば教えて頂けるとたすかります。VBAは初心者レベルであれば、理解できると思います。

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

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

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

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

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

guest

回答3

0

ベストアンサー

現状のハイパーリンクを利用して、って線で解決策を探りましたが完全にはできませんでした。
とりあえず一情報として投稿しておきます。

Worksheet_FollowHyperlinkイベントで処理します。
ハイパーリンクをクリックした際、上記イベントが実行されます。
以下のような感じで書いておくと、列ごとに処理が可能になります。

VBA

1Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) 2 If Target.Parent.Column = 5 Then 3 Shell """C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"" --new-window " & Target.TextToDisplay 4 ElseIf Target.Parent.Column = 6 Then 5 Shell """C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"" --new-window " & Target.TextToDisplay 6 Else 7 End If 8End Sub

chromeのパスはご自分の環境にあわせてください。
またchromeの起動オプションに--new-windowがあり、これを指定すると毎回新しいウィンドウを作成します。
ただ質問にあるように、C列は左、D列は右、のような制御はできそうもありませんでした。
またshell関数の引数をchromeではなくFireFoxなどに変更すれば、ブラウザを切り替えられます。

あと上記処理を行う際、Excel上のハイパーリンクの設定を変更しておく必要があります。
表示文字列はそのままで、リンク先をこのドキュメント内でセル参照をA1や自セルを指すようにしてください。
そうしないと二重にリンク先が開いてしまいます。

投稿2017/06/08 07:20

ttyp03

総合スコア16998

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

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

退会済みユーザー

退会済みユーザー

2017/06/08 10:42

Shell関数を使えばいいのですね! 非常に参考になりました。
退会済みユーザー

退会済みユーザー

2017/06/08 10:46

最終的には以下のようなマクロになりました。 Sub HYPERLINK() Dim exe1 As String Dim exe2 As String Dim url1 As String Dim url2 As String Dim r As Long exe1 = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" exe2 = "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" r = Selection.Row url1 = Cells(r, "C").Value url2 = Cells(r, "D").Value Shell exe1 & " " & url1, vbNormalFocus Shell exe2 & " " & url2, vbNormalFocus End Sub マクロボタンを作成して、該当行を選択した状態でマクロ実行をすると、C列とD列のページがそれぞれのブラウザで開くというものです。
guest

0


手動でやってもあまり手間は変わらなそうですが。
Chromeで2タブ開いてタブをドラッグしてウインドウを分けて、Windowsの機能でウインドウを左右に並べるのでは駄目ですか?


Shell関数で出来ます。

VBA

1Shell "C:\Program Files (x86)\Mozilla Firefox\firefox.exe https://teratail.com"

投稿2017/06/08 07:03

workaholist

総合スコア559

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

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

退会済みユーザー

退会済みユーザー

2017/06/08 10:42

ご回答ありがとうございます。 やはり①は難しいようですね。
guest

0

HYPER LINK では難しいかと。

①②はわからないので、③ になりますが、
VBAで IE を操作する方法でなら、下記のリンク先が参考になると思います。

リンクを新しいウィンドウで開いて操作する - VBAによるIE自動制御

投稿2017/06/08 06:50

hatena19

総合スコア33715

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

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

退会済みユーザー

退会済みユーザー

2017/06/08 10:43

ご回答ありがとうございます。 参考にさせて頂きます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問