none
Excel2010-VBA 画像「図の書式設定」のリセット RRS feed

  • 質問

  • ワークシートに張付けた画像に次の設定をしたのですがリセット方法が解りません。
    With ActiveSheet.Shapes(1)
        .AutoShapeType = msoShapeRoundedRectangle   '角丸四角形
    End With
    その他の書式設定も色々としてあります。
    課題:画像に設定した書式設定をVBAで全てリセットしたい。

    試行:リボンの[書式]⇒[調整]⇒[図のリセット]⇒「図のリセット」でなら全てリセットできている様です。
    同様の事をマクロで行いたいのですが、マクロ記録ができません…!?
    止むを得ず当該画像をマウス右クリックした時に表示される「図の書式設定」で手動にて気の付くところ全てをリセットしました。が、画像四隅の面取りが残ります…!?
    マクロ記録したコードを整理し次のマクロを実行しましたが「角丸四角形」がリセットできません。
    何が不足しているのでしょうか、又は他の気の利いたコードが有るのでしょうか、ご教授宜しくお願い致します。

    図の書式設定をリセットする - Win7(Excel2010) Macro
    Sub TestMacro1()
        ActiveSheet.Shapes.Range(Array("Picture 1")).Select
        With Selection.ShapeRange
            .Fill.Visible = msoFalse    '…塗りつぶし
            .Line.Visible = msoFalse    '…線の色
            .Shadow.Visible = msoFalse  '…影
            .Reflection.Type = msoReflectionTypeNone '…反射
            .Glow.Radius = 0            '…光沢とぼかし
            .ThreeD.Visible = msoFalse  '…3D書式
            .LockAspectRatio = msoTrue  '…縦横比固定
            .ScaleHeight 1!, msoTrue    '…元のサイズに戻す
            .ScaleWidth 1!, msoTrue     '…〃
        End With
    End Sub
    以上

    2015年1月23日 13:06

回答

  • こんにちは。

    > 試行:リボンの[書式]⇒[調整]⇒[図のリセット]⇒「図のリセット」でなら全てリセットできている様です。

    下記のようにExecuteMsoメソッドで任意のコントロールを実行することができます。

    Option Explicit
    
    Public Sub Sample1()
      '[図のリセット]が有効な場合のみ実行
      With Application.CommandBars
        If .GetEnabledMso("PictureReset") = True Then .ExecuteMso "PictureReset"
      End With
    End Sub
    
    Public Sub Sample2()
      '[図とサイズのリセット]が有効な場合のみ実行
      With Application.CommandBars
        If .GetEnabledMso("PictureResetAndSize") = True Then .ExecuteMso "PictureResetAndSize"
      End With
    End Sub

    引数のidMso(コントロールのID)の一覧表は下記Webページで紹介しているリンク先からダウンロードすることができます。

    ・Office製品のコントロール IDリスト
    http://curah.microsoft.com/33208/office%E8%A3%BD%E5%93%81%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB-id%E3%83%AA%E3%82%B9%E3%83%88
    • 回答としてマーク sakuraxx 2015年1月27日 16:32
    2015年1月25日 10:22
  • こんにちは。

    > リボンの[書式]⇒[サイズ]⇒[トリミング]▼の…塗りつぶし(L)

    私が上で挙げたコードと同様のコードで実行できるかと思います。
    違うのは引数で渡すIDですが、上で紹介したコントロールIDリストで探しても良いですし、下記ページで紹介しているように、クイック アクセス ツール バーを使って調べることもできます。

    ・マクロで実行したいコマンドのIDを調べる簡単な方法
    http://www.ka-net.org/blog/?p=4438
    • 回答としてマーク sakuraxx 2015年1月27日 16:33
    2015年1月27日 0:39
  • きぬあさ様、何時も大変お世話になっております。
    掲題の件、クイックアクセスツールバーからコントロールIDを読み取ってみました。
    これを使って試行してみました…成功。ご教授有難うございました。
    -------------------------------------------
    トリミング PictureCrop
    塗りつぶし PictureFillCrop
    枠に合わせる PictureFitCrop
    図の変更 PictureChange
    図をファイルから挿入 PictureInsertFromFile
    -------------------------------------------


    sakuraxx

    • 回答としてマーク sakuraxx 2015年1月27日 16:31
    2015年1月27日 16:31

すべての返信

  • リセットをVBAで一発で行う方法は見当たらないですね。

    とりあえず
    .AutoShapeType = msoShapeRectangle   '四角形

    を追加すればよいのでは?


    Shigeru Murai / SIMOZ

    2015年1月25日 3:02
  • こんにちは。

    > 試行:リボンの[書式]⇒[調整]⇒[図のリセット]⇒「図のリセット」でなら全てリセットできている様です。

    下記のようにExecuteMsoメソッドで任意のコントロールを実行することができます。

    Option Explicit
    
    Public Sub Sample1()
      '[図のリセット]が有効な場合のみ実行
      With Application.CommandBars
        If .GetEnabledMso("PictureReset") = True Then .ExecuteMso "PictureReset"
      End With
    End Sub
    
    Public Sub Sample2()
      '[図とサイズのリセット]が有効な場合のみ実行
      With Application.CommandBars
        If .GetEnabledMso("PictureResetAndSize") = True Then .ExecuteMso "PictureResetAndSize"
      End With
    End Sub

    引数のidMso(コントロールのID)の一覧表は下記Webページで紹介しているリンク先からダウンロードすることができます。

    ・Office製品のコントロール IDリスト
    http://curah.microsoft.com/33208/office%E8%A3%BD%E5%93%81%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB-id%E3%83%AA%E3%82%B9%E3%83%88
    • 回答としてマーク sakuraxx 2015年1月27日 16:32
    2015年1月25日 10:22
  • 大変お世話になっております。
    素晴らしい…こんな手法が有るんですね…課題解決…感謝・感謝
    追記:誠に恐縮なのですが、
    次の「塗りつぶし」についてもサンプルを提示いただきたいのですが、宜しくお願い致します。
    リボンの[書式]⇒[サイズ]⇒[トリミング]▼の…塗りつぶし(L)


    sakuraxx

    2015年1月26日 18:10
  • こんにちは。

    > リボンの[書式]⇒[サイズ]⇒[トリミング]▼の…塗りつぶし(L)

    私が上で挙げたコードと同様のコードで実行できるかと思います。
    違うのは引数で渡すIDですが、上で紹介したコントロールIDリストで探しても良いですし、下記ページで紹介しているように、クイック アクセス ツール バーを使って調べることもできます。

    ・マクロで実行したいコマンドのIDを調べる簡単な方法
    http://www.ka-net.org/blog/?p=4438
    • 回答としてマーク sakuraxx 2015年1月27日 16:33
    2015年1月27日 0:39
  • きぬあさ様、何時も大変お世話になっております。
    掲題の件、クイックアクセスツールバーからコントロールIDを読み取ってみました。
    これを使って試行してみました…成功。ご教授有難うございました。
    -------------------------------------------
    トリミング PictureCrop
    塗りつぶし PictureFillCrop
    枠に合わせる PictureFitCrop
    図の変更 PictureChange
    図をファイルから挿入 PictureInsertFromFile
    -------------------------------------------


    sakuraxx

    • 回答としてマーク sakuraxx 2015年1月27日 16:31
    2015年1月27日 16:31