
No.4ベストアンサー
- 回答日時:
マクロは動いているのですね。
それなら、安心とは言いたいところですが、私のところでは、そうした現象自体は再現できても、防止する方法は見つかりませんでした。今、改めて、Google検索で調べてみると、Google 自体は、最前面化するのは避けられない模様です。その時に、命令が働いているようです。サイトの中には、トンチンカンな解答もありました。
それで、Excel側が最小化されることについては、いくつかの組み合わせ防げるようですが、
ShowWindow(hWnd, SW_NORMAL) '最小化を防ぐ
これは、働かないようです。
registry で、設定を変えるという話もあるのですが、そこまでは、ここのサイトでは手を出さないようにしておきます。
どうやら Google Chrome 側で、特別な命令が働いているらしいです。
そのオプションはあるようですが、どうやら簡単ではないようです。
https://qiita.com/h1na/items/a4d96cdbe7c0db548a83
以下は単なるショートカットをExcel側からではなく、Windows から働かせるというものです。だから、状況に合わせてキーを送ることが可能です。ショートカットキーと少し違うのは、キーを戻す命令をしてあげないといけない、ということです。これらの組合わせで、最小化そのものは回避できるのではないかと思います。
vbKey*** とあるのは、VBA Editor画面で、F2 を押して、vbKey とすると一覧が出てきますから、それで見当がつくはずです。
残念ながら、今の段階では、確実な解決は見られませんでした。
'//前回の上書きしてください。(ThisWorkbook モジュール)
Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Const KEYEVENTF_KEYUP = &H2
Private Const VK_LWIN = &H5B
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
AppActivate Application.Caption, True 'Excel に対しては有効です。
keybd_event VK_LWIN, 0, 0, 0 ''Windows キー+↑キー
keybd_event vbKeyUp, 0, 0, 0
keybd_event VK_LWIN, 0, KEYEVENTF_KEYUP, 0
keybd_event vbKeyUp, 0, KEYEVENTF_KEYUP, 0
End Sub
'----------------------
目的は違うけれども、WinTop と同等のアプリを見つけました。
任意のウィンドウを常に最前面に表示することができる「WindowCatcher」v1.11
https://forest.watch.impress.co.jp/article/2004/ …
ですが、どうやら古すぎますね。
何かのためにはなるかと、ここに記録しておきます。
p.s.
>※関数の組み合わせなどまるで『油絵』を描く感覚に近いかと(ちなみにムサ美の油絵科でしたw)
マクロコードは、文章(和文)を書いている感覚と同じです。そこに、どのぐらいの自分の気持ちを込められるのか、というのが大事だと思っています。英文も、そのぐらいの気持をできればと思いますが、そこまで表現できません。
WindFallerさん
度々ありがとうございます
WindowCatcher試してみました
WinTopと同じく最小化は防げませんでした
そしてThisWorkbook モジュールですが
リンクをクリックした瞬間に最大化し
次の瞬間に最小化しました・・・
なかなかうまくいきませんねw
No.3
- 回答日時:
私は、少し勘違いをしていたのは、Excel 2000でしたね。
>拡張子は、xlsm やxlsb』聞き慣れないモノが…
だから、拡張子は、そのまま、xls で良かったのでした。
もう、Excel2000は過去のものですから、何があってもなくても、不思議ではなくなつています。
それでも、Workbook_SheetFollowHyperlink イベントはあったはずです。
/http://www.excel.studio-kazu.jp/kw/2007072302460 …
ここには、Excel2000以降有効とありますから、まず間違いなさそうです。
Excel2000は私が最初にExcelを本格的に始めた頃です。今となっては、さすがに、このマクロが動くかどうかも、確証できないのが歯がゆいところです。
思い当たる方法がまだあるのですが、経験的に、最初の取っ掛かりからつまづくとなると、目処も立っていないままに、次に移ると、だいたい次も駄目ということになるのが常なのです。
>貼り付けても機能していないのは拡張子を変えて保存していないせい
それはないのですが、そもそも「ファイル内にリンクを張っている」というのが、ハイパーリンクで外部にブラウザで飛ぶとは書かれていませんから、ハイパーリンクを使っていない可能性もあるわけで、最初のところから読み違えている可能性もあります。事実、私自身は、ハイパーリンクを使ったり使わなかったして、インターネット上のサイトを開いています。
マクロが働いているかどうかは、
MsgBox Time '←仮に入れてみます。そうしたら、反応が分かります。
hWnd = FindWindow("XLMAIN", vbNullString) '//この行の上に入れる
No.2
- 回答日時:
まず、話がそれてしまいますが、「Excelの神髄」で書かれている『アドイン』は、仮にVBAの1年以上の経験者でも、簡単に手が届くようなものではありません。
また、そのサイトの著者さん自身も、『アドイン』の経験が少ないようです。No.1で書いたもののVBAのスタイルの名称を、「イベント・ドリブン型」といいます。
今回は、個別のファイルに対してですから、登録の仕方は簡単で、VBAエディターを開きます。(Alt + F11)プロジェクトエクプローラ が出ていれば、その中から、ThisWorkbook という所をダブルクリツクします。出ていなければ、Ctrl + R (または、メニューの中の表示から、プロジェクトエクプローラを選び)、ThisWorkbook をクリックして、エディタ画面を出し、後は、Private Sub ~End Sub を貼り付ければよいのてす。
今回は、Private Declare というセンテンスと一緒に、書き込みさえすれば、ワークシート上のハイパーリンクをクリックした時に、同時にマクロが自動で働きます。ただ、思ったほどに期待には沿えないかもしれません。
最後に、拡張子は、xlsm やxlsb にしてあげないと、マクロを登録できません。もし、これを更に、拡張子に関係なく可動させたいとなると、少しややこしい手順が必要になってしまいます。
画像は、ThisWorkbook モジュールに貼り付けた所

No.1
- 回答日時:
今の所、目的の通りにはいきません。
Google Chrome は、最初から常駐してしまっていますから、WinTopのツールのように、Excelを最前面に持ってくるのは、単純な方法ではうまくいかないのではないかと思います。Excel 2000をお使いということで、無理は承知だと思います。さて、私の案は、最小化のみを防ぐ方法ですが、ハイパーリンクを使った時に起動するプログラムです。
'//今のところでは、個別のThisWorkbook に登録してください。
Private Declare Function SetForegroundWindow Lib "user32.dll" (ByVal hWnd As Long) As Long
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function ShowWindow Lib "user32.dll" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
'Private Const SW_MAXIMIZE As Long = 3
'Private Const SW_MINIMIZE As Long = 6
Private Const SW_NORMAL As Long = 1
Private Sub Workbook_SheetFollowHyperlink(ByVal SH As Object, ByVal Target As Hyperlink)
Dim hWnd As Long
Dim ret As Long
hWnd = FindWindow("XLMAIN", vbNullString)
DoEvents
ret = ShowWindow(hWnd, SW_NORMAL) '最小化を防ぐ
ret = SetForegroundWindow(hWnd) '前面化-これは働いていない
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Vba UserFormを前面に出す方法を教えてください 1 2023/08/17 11:08
- その他(パソコン・スマホ・電化製品) CMD等でPC操作(excel開く等)を自動化させたい 1 2023/03/15 09:53
- Visual Basic(VBA) 起動中のアプリ、ソフトの取得 3 2022/12/28 11:13
- その他(Microsoft Office) OneDrive Personalについて 1 2022/08/02 18:25
- Excel(エクセル) Excelのウィンドウが少し小さく、ズレて立ち上がります 1 2022/06/27 16:25
- Excel(エクセル) iphonからone driveに保存してあるExcelを閲覧すると表示の仕方がちがうデータ 2 2022/12/21 13:51
- PowerPoint(パワーポイント) ExcelのグラフをPowerPointに貼り付けした際にデータテーブルの小数点以下を削除したいです 2 2023/02/28 19:46
- Visual Basic(VBA) Vba LongPtrについて教えてください 2 2022/08/19 11:14
- その他(データベース) Excel VBA 転記について 1 2022/04/20 16:55
- Excel(エクセル) Excelヘルプの原文を表示する最速の方法(手順)には? 1 2023/08/11 11:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで印刷する方法 エクセ...
-
Word2003と2007で、開いたとき...
-
VBAを一度起動するとずっと出て...
-
VBAで、VBProjectへのアクセス...
-
【マクロ】エラーが発生⇒実行時...
-
エクセルマクロが海外PCで開けない
-
【マクロ】宣言は、何のために...
-
コピーしたファイルのマクロを...
-
アクセスでファイルを開いたと...
-
Visual Basic Editorが起動しな...
-
エクセルで名前をつけて保存を...
-
エクセル2013vbaで、見えない名...
-
マクロを設定したのに、拡張子...
-
【マクロ】その時、その時で変...
-
マイクロソフトのオフィス2007...
-
エクセルの関数を使って、セル...
-
エクセルが最小化しないように...
-
エクセルでマクロでテキストデ...
-
個人用マクロブックにマクロを...
-
Excelでこの式の意味をおしえて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】宣言は、何のために...
-
VBAを一度起動するとずっと出て...
-
エクセル終了時の保存確認メッ...
-
コピーしたファイルのマクロを...
-
excelファイルに使われているVB...
-
別のパソコンでエクセルのマク...
-
マクロを消すマクロは不可能?
-
Excelマクロ ファイル名が変わ...
-
VBA マクロ実行時エラー’1004Ra...
-
アクセスでファイルを開いたと...
-
昨日まで動いていたエクセルの...
-
EXCEL マクロ クリップボードク...
-
Excelが勝手にシート移動してし...
-
excelでpersonal.xlsを常に開く...
-
excelが別プロセスで起動してし...
-
エクセルマクロ実行中に別ファ...
-
【マクロ】エラーが発生⇒実行時...
-
マクロを設定したのに、拡張子...
-
外部データを取り込むマクロ
-
エクセルマクロが海外PCで開けない
おすすめ情報
回答ありがとうございます
案を紹介して頂いたのですが…
これは『アドイン』というものでしょうか?
VBEもマクロを組んだり少々編集程度のレベルなので
このページに飛びましたが…理解するには時間かかりそう(笑)
↓
https://excel-ubara.com/excelvba4/EXCEL297.html
ご面倒をおかけ致しますが
もう少し初心者(小生)が操作する事前提で補足して頂ければ幸いですm(_ _)m
度々ご丁寧にご教授ありがとうございます
『拡張子は、xlsm やxlsb』聞き慣れないモノが…
ググってみたところExcel2007以降に採用されたようですね
OSは10使用のofficeは19年前と言う貧乏性(笑)
ただExcel機能は不便も感じないので使い続けています
貼り付けても機能していないのは拡張子を変えて保存していないせいなのでしょうね
それにしても
使い勝手が良いのに奥が深いソフトですよねExcelは…
ほんの少ししか知識無くても自己流でさまざまな表現が可能
※関数の組み合わせなど
まるで『油絵』を描く感覚に近いかと
(ちなみにムサ美の油絵科でしたw)
ちなみに二年前位の一時期 同じ作業していても
何故かブラウザとExcelが前後するだけで最小化しなかった時があった記憶なのですが
記憶違いなのかなぁ・・・
ありがとうございます
MsgBox Time足してテストしました
リンクをクリックしましたら
同じく最小化しました その際に『時刻』の表示が出ました
WindFallerさん
根気良く面倒みて頂いて
ありがとうございますm(_ _)m
現在 酒(笑)呑んでいるので内容を確認するほどの状態で無いのですが
ありがたい事を
感謝の意を…
明日 理解出来るか分かりませんが(笑)
今回
解決たとえ しなくても
WindFallerさんと やりとり出来た事は
確実に 私の人生の 1ページ
ありがとうございます