Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : 指定なし)
リボン非表示のリボンアイコン
投稿日時: 19/10/27 08:00:44
投稿者: emuancha

Excel2019です(バージョン選択に該当が無い)。
 
ThisWorkBookでリボンを非表示にした状態で,リボンを手操作で再表示するために,リボンのアイコンは表示出来ないでしょうか?
リボン表示のプロシージャをあらかじめ作成して置けば済む話ではあります。

回答
投稿日時: 19/10/27 09:04:24
投稿者: simple

リボンを再表示するためにリボンを表示する、うーむなにか哲学的な感じですね。
リボンの表示・非表示は CTRLを押しながらF1キーでトグル操作できますが、
これではまずいですか?
 
ちなみに「ThisWorkBookでリボンを非表示にした状態」というのがよくわからない。
VBE(エディター)の話なんですか? 
Thisworkbookという用語が出てくるのが意味不明です。

投稿日時: 19/10/27 10:11:17
投稿者: emuancha

補足します。この板はExcelVBAの板なのでVBAの事です。
ThisWorkBook云々はマクロブックオープン時の事です。
 
.xlsmの動作に不具合が起きているので対策案を検討中なのです。
 
XP上の97で作成し,7上の2010まで動作していた。この度PCを10に買い替えたが,エクセルがマルチウインドーからシングルに変わってしまった為に,ブック表示に不具合が生じている。動作は下記です。
1. ブックは三つ。マクロブックが一つにデータブックが二つ。それにフォームが一つ。
2. これまでは,マクロブック起動時に,エクセルウインドー内に二つのデータブックとフォームを表示する。当然リボンはウインドーに一つ表示され,各データブックには表示されない。マクロブックはアイコン化してある。
3. 現状は,各ブックがデスクトップ上に表示され,各ブックにもリボンも表示さる,(フォームはモーダルにならず,場合によっては隠れてしまう)。 
 
なので,データブック起動時にリボンは非表示にする。当然リボンのアイコンも消えているので,手操作でリボン表示する事が出来ない。リボンは非表示でもリボンアイコンを表示出来れば,手作業でリボン表示が出来る。リボンを非表示にする際,リボンアイコンは残せないかと言う事です。
 
ThisWorkBookで非表示にするとCTRL+F1は無効になるようです。
 
 

回答
投稿日時: 19/10/27 11:30:03
投稿者: simple

失礼しましたが、
ThisWorkbookというのは、コードのあるブックを指す言葉ですから、○○モジュールでとか、
「起動時のイベントプロシージャ」とか正確に言ってもらわないと、相手には通じにくいですよ。
 
回答ではなく恐縮ですが、確認させてください。
 
1. "リボンは非表示でもリボンアイコンを表示出来れば"とのこと、
    リボンが非表示なら、その上にあると思われるアイコンを表示することはできないと
    普通は思いますが、どこに表示したいのでしょうか。
   「リボンアイコン」と言う言葉に普通とは違う意味を持たせているんでしょうか。
    # 「クイックアクセスツールバー」の関係のことを指しているんだろうか。
 
2."ThisWorkBookでリボンを非表示にした"
   議論に関連するかもしれないので、皆さんにもわかるよう念のため、
   そのコードを示していただけますか?
 
3."エクセルがマルチウインドーからシングルに変わってしまった為に,
   ブック表示に不具合が生じている。"とのことですが、
   MDIからSDIに変更になって、各ブック毎にリボンが表示するのが通常になったわけですね。
   それを不具合と呼んでいるのですか?普通はそれは仕様と呼ぶわけですが。
   そのあたりはご存じなんですよね。
   "あなたにとって不都合なこと"と言う意味で「不具合」と呼んでいるのでしょうか?

投稿日時: 19/10/27 12:14:05
投稿者: emuancha

返答ありがとうございます。
 
> ThisWorkbookというのは、コードのあるブックを指す言葉ですから、○○モジュールでとか、
> 「起動時のイベントプロシージャ」とか正確に言ってもらわないと、相手には通じにくいですよ。
 
ThisWorkBookでリボンを非表示にした状態で・・・と言う文に含まれると思うのですが。
この板で回答・アドバイスする人には分かると思いました。
 
Private Sub Workbook_Open()に記述です。
  
> 1. "リボンは非表示でもリボンアイコンを表示出来れば"とのこと、
 
リボンのアイコンは非表示・非表示に関わらず,閉じるアイコンと最大化アイコンの横に
あるので,アイコンを表示出来ないかなぁと思った次第。
  
> 2."ThisWorkBookでリボンを非表示にした"
> 議論に関連するかもしれないので、皆さんにもわかるよう念のため、
> そのコードを示していただけますか?
 
Private Sub Workbook_Open()
Application.ExecuteExcel4Macro “SHOW.TOOLBAR(“”Ribbon””,False)”
End Sub
 
これだけを記述してブックを開くと二度とリボン表示が出来なくなるので,
標準モジュールに,逃げを書いて,CTRL+ でショートカット定義して置きます。
ショートカットをコード化して置くという手もあるでしょう。
 
Sub Auto_Open()
Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"
End Sub
 
Sub Auto_Close()
Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",True)"
End Sub
 
> 3."エクセルがマルチウインドーからシングルに変わってしまった為に,
> ブック表示に不具合が生じている。"とのことですが、
> MDIからSDIに変更になって、各ブック毎にリボンが表示するのが通常になったわけですね。
> それを不具合と呼んでいるのですか?普通はそれは仕様と呼ぶわけですが。
> そのあたりはご存じなんですよね。
> "あなたにとって不都合なこと"と言う意味で「不具合」と呼んでいるのでしょうか?
 
上位互換性を無視しての仕様変更はユーザーを馬鹿にしているように感じます。
MDIベースでプログラムしているのだから,プラットフォームの基礎が変われば不具合が出るでしょう。
それを容認せよと言う考えですか? プラットフォームを大きく変えるなら,せめて互換モードで2016以前のVBAも動作するようにすべきなのでは?
 
とは言え,どうにもならないので,SDIに合わせて対策を検討中なのです。

回答
投稿日時: 19/10/27 12:33:59
投稿者: simple

回答ありがとうございました。
 
「リボンアイコン」というのは、ウインドウ右上の
「リボンの表示オプション」のアイコンのことでしたか。
これもそう言って頂かないと解りにくい表現でした。
どうも回答資格が無いようですので、私はこの辺で失礼します。

回答
投稿日時: 19/10/27 16:47:59
投稿者: チオチモリン

 ↓ でしょうか?
 
Application.CommandBars.ExecuteMso "HideRibbon"
 

投稿日時: 19/10/27 18:56:48
投稿者: emuancha

ありがとうございます。一つのヒントになります。私自身,Excel2019に替わったばかりで,まだまだ調査不足です。色々試して見ます。

回答
投稿日時: 19/10/27 21:47:43
投稿者: チオチモリン

希望の所作ではありませんでしたか?
 
Private Sub Workbook_Open()
    Application.CommandBars.ExecuteMso "HideRibbon"
End Sub
 
もしかして
 
>Private Sub Workbook_Open()
>Application.ExecuteExcel4Macro “SHOW.TOOLBAR(“”Ribbon””,False)”
>End Sub
のコードも生きているとか?

投稿日時: 19/10/28 06:13:54
投稿者: emuancha

やりたいことは,リボンを非表示にするが,リボンの表示オプションアイコンは残したい。
チオチモリンの環境では,そのようになりますか?
 

投稿日時: 19/10/28 06:44:59
投稿者: emuancha

チオチモリンさんの環境で以下を,ThisWorkBookに入れて実行すると
どうなりますか? リボン表示オプションのアイコンは残りますか?
 
Private Sub Workbook_Open()
    Application.CommandBars.ExecuteMso "HideRibbon"
MsgBox "abc"
    With Application
        .WindowState = xlNormal
        .Top = 30
        .Left = 30
    End With
    With ActiveWindow
        .Height = 320
        .Width = 760
    End With
End Sub
 
 

回答
投稿日時: 19/10/28 10:28:04
投稿者: チオチモリン

そういうことなら
 
Private Sub Workbook_Open()
    With Application.CommandBars
        If .GetPressedMso("MinimizeRibbon") = False Then .ExecuteMso "MinimizeRibbon"
    End With
MsgBox "abc"
    With Application
        .WindowState = xlNormal
        .Top = 30
        .Left = 30
    End With
    With ActiveWindow
        .Height = 320
        .Width = 760
    End With
End Sub
 
とりあえず↑位で妥協する可能性が高いかなあ(1 タブの表示行は今後の課題として保留、2 修正ため
には必要と考えたり)

投稿日時: 19/10/28 11:18:04
投稿者: emuancha

チオチモリンさん,アドバイスありがとうございます。
 
まぁ,どこかで妥協は必要でしょう。
ただ,手操作では,リボンを非表示すると,ウインドーは最大化されるが,リボン表示のオプションアイコンは出ているので,設定したウインドーサイズでも同じことは出来る筈ですね。調査する事が多すぎて,この件に手が回りません。

回答
投稿日時: 19/10/28 12:55:13
投稿者: チオチモリン

>手操作では,リボンを非表示すると,ウインドーは最大化されるが,リボン表示のオプションアイコンは出ている
これは
>Application.CommandBars.ExecuteMso "HideRibbon"
でも同じですよね。
 
すると
>設定したウインドーサイズでも同じことは出来る筈ですね。
とは、なんのことでしょう?

投稿日時: 19/10/28 15:12:41
投稿者: emuancha

ウインドーが最大化されたままなら同じですが,その次にサイズを小さくした時点で当該アイコンは消えます。ウインドーサイズを替えても当該アイコンを表示したい訳です。

回答
投稿日時: 19/10/28 15:25:49
投稿者: チオチモリン

バージョンの違いでしょうか。当方では
リボンを非表示のまま
>その次にサイズを小さく
できません。
ウィンドウノーマル表示になれば、自動的に「タブの表示」に変わってしまいます。(Win7(64),365(4))
 
その現象は再現できないのでお役にたてそうにありません。
同一環境の方のレスをお待ちください。

投稿日時: 19/10/29 06:26:51
投稿者: emuancha

対策は何とかできそうです。
アドバイス頂いたみなさん,ありがとうございました。取り合えず,解決済みとし,閉じます。