7

Excel 2007 では、リボンを右クリックして [リボンを最小化] を選択し、最小化します。

私が試してみました

Application.ExecuteExcel4Macro("show.toolbar(\"ribbon\",false)");

リボン全体を非表示にしますが、リボン全体を非表示にしたくありません。

私も試してみました

 Application.SendKeys("^{F1}", true);

ただし、正しく動作しない場合があるため、信頼性は高くありません。

ここに画像の説明を入力

C# VSTO コードを使用してそれを行う方法はありますか?

私は機能についてたくさん読みましたが、toggleribbon()それを使用する方法を見つけることができませんでした.

編集: リボンが既に最小化されているかどうかを実際に確認する方法があります。私が使った

    Office.CommandBars cbs = null;
    cbs = Application.CommandBars;
    foreach (Office.CommandBar cb in cbs)
    {
       if (cb.Name == "Ribbon")
       {

         if (cb.Height > 90)
         {
            this.Application.ActiveWindow.Activate(); 
            //to get focus on current workbook so that sendkeys will work
            Application.SendKeys("^{F1}", true);
          }

        }
    }
4

1 に答える 1

1

SendKeys CTRL+F1動作しますが、実行のタイミングの問題のようです。実際の問題は、リボンが実際にいつ Excel に読み込まれて動作がトリガーされるかがわからないことです。

このコードは私にとっては確実に機能するように見えましたが、実際にはアドインの読み込み速度に依存しています。必要に応じて利用することもできThread.Sleep()ます。

 private void ThisAddIn_Startup(object sender, System.EventArgs e)
 {
   Task.Factory.StartNew(() => {
       //Thread.Sleep(1000); // optional
       Application.SendKeys("^{F1}");
   }, TaskCreationOptions.AttachedToParent);
 }

リボンの読み込みタイミングに関する関連する MSDN フォーラムの投稿を参照してください

于 2012-09-20T19:28:12.147 に答える