アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります
Excel2000のファイル内にリンクを張っており
そこからGoogle Chromeを起動するとExcelが最小化してしまいます
alt+tabでExcelを表示させる事は簡単なのですが

出来れば最小化されない設定方法があれば作業が楽になると思いネットで検索したのですが

なかなか見つからないので

WinTopと言うソフトで最前面に表示出来ると言うので試しましたが
最小化は防げませんでした

宜しくお願いします

質問者からの補足コメント

  • 回答ありがとうございます

    案を紹介して頂いたのですが…
    これは『アドイン』というものでしょうか?
    VBEもマクロを組んだり少々編集程度のレベルなので
    このページに飛びましたが…理解するには時間かかりそう(笑)

    https://excel-ubara.com/excelvba4/EXCEL297.html

    ご面倒をおかけ致しますが
    もう少し初心者(小生)が操作する事前提で補足して頂ければ幸いですm(_ _)m

    No.1の回答に寄せられた補足コメントです。 補足日時:2019/04/11 16:42
  • うれしい

    度々ご丁寧にご教授ありがとうございます
    『拡張子は、xlsm やxlsb』聞き慣れないモノが…
    ググってみたところExcel2007以降に採用されたようですね
    OSは10使用のofficeは19年前と言う貧乏性(笑)
    ただExcel機能は不便も感じないので使い続けています

    貼り付けても機能していないのは拡張子を変えて保存していないせいなのでしょうね

    それにしても
    使い勝手が良いのに奥が深いソフトですよねExcelは…
    ほんの少ししか知識無くても自己流でさまざまな表現が可能
    ※関数の組み合わせなど
    まるで『油絵』を描く感覚に近いかと
    (ちなみにムサ美の油絵科でしたw)

    ちなみに二年前位の一時期 同じ作業していても
    何故かブラウザとExcelが前後するだけで最小化しなかった時があった記憶なのですが

    記憶違いなのかなぁ・・・

    No.2の回答に寄せられた補足コメントです。 補足日時:2019/04/11 19:25
  • ありがとうございます

    MsgBox Time足してテストしました

    リンクをクリックしましたら
    同じく最小化しました その際に『時刻』の表示が出ました

    No.3の回答に寄せられた補足コメントです。 補足日時:2019/04/13 18:42
  • WindFallerさん

    根気良く面倒みて頂いて
    ありがとうございますm(_ _)m

    現在 酒(笑)呑んでいるので内容を確認するほどの状態で無いのですが

    ありがたい事を
    感謝の意を…

    明日 理解出来るか分かりませんが(笑)

    今回
    解決たとえ しなくても



    WindFallerさんと やりとり出来た事は
    確実に 私の人生の 1ページ

    ありがとうございます

    No.4の回答に寄せられた補足コメントです。 補足日時:2019/04/14 22:06

A 回答 (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)

マクロコードは、文章(和文)を書いている感覚と同じです。そこに、どのぐらいの自分の気持ちを込められるのか、というのが大事だと思っています。英文も、そのぐらいの気持をできればと思いますが、そこまで表現できません。
この回答への補足あり
    • good
    • 1
この回答へのお礼

WindFallerさん
度々ありがとうございます

WindowCatcher試してみました
WinTopと同じく最小化は防げませんでした

そしてThisWorkbook モジュールですが
リンクをクリックした瞬間に最大化し
次の瞬間に最小化しました・・・

なかなかうまくいきませんねw

お礼日時:2019/04/15 13:00

私は、少し勘違いをしていたのは、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)  '//この行の上に入れる
この回答への補足あり
    • good
    • 0

まず、話がそれてしまいますが、「Excelの神髄」で書かれている『アドイン』は、仮にVBAの1年以上の経験者でも、簡単に手が届くようなものではありません。

また、そのサイトの著者さん自身も、『アドイン』の経験が少ないようです。

No.1で書いたもののVBAのスタイルの名称を、「イベント・ドリブン型」といいます。

今回は、個別のファイルに対してですから、登録の仕方は簡単で、VBAエディターを開きます。(Alt + F11)プロジェクトエクプローラ が出ていれば、その中から、ThisWorkbook という所をダブルクリツクします。出ていなければ、Ctrl + R (または、メニューの中の表示から、プロジェクトエクプローラを選び)、ThisWorkbook をクリックして、エディタ画面を出し、後は、Private Sub ~End Sub  を貼り付ければよいのてす。

今回は、Private Declare というセンテンスと一緒に、書き込みさえすれば、ワークシート上のハイパーリンクをクリックした時に、同時にマクロが自動で働きます。ただ、思ったほどに期待には沿えないかもしれません。

最後に、拡張子は、xlsm やxlsb にしてあげないと、マクロを登録できません。もし、これを更に、拡張子に関係なく可動させたいとなると、少しややこしい手順が必要になってしまいます。

画像は、ThisWorkbook モジュールに貼り付けた所
「エクセルが最小化しないようにしたいのです」の回答画像2
この回答への補足あり
    • good
    • 0

今の所、目的の通りにはいきません。

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
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!