• 締切済み

エクセルのグラフをマクロで縮小化したい

office2007。Vistaを使用。 エクセルのグラフを縮小するマクロを記録ボタンで作成しました。画面上は縮小されるのですが、「マクロの記録」ではそれが記録されません。office2003で作成したときは zoom を使用したような気がしますが、2007ではどうしたらよいのでしょうか?お教えください。A1B5 にデータが入っています。 Sub Macro1() ' Macro1 Macro Range("B2").Select ActiveSheet.Shapes.AddChart.Select ActiveChart.SetSourceData Source:=Range("'Sheet1'!$A$1:$B$5") ActiveChart.ChartType = xlColumnClustered ActiveChart.Location Where:=xlLocationAsNewSheet ActiveSheet.ChartObjects("グラフ 1").Activate ActiveSheet.ChartObjects("グラフ 1").Activate Sheets("Sheet1").Select Range("A1").Select End Sub

みんなの回答

  • end-u
  • ベストアンサー率79% (496/625)
回答No.2

>ActiveChart.Location Where:=xlLocationAsNewSheet という事は、シート上のグラフではなくて、グラフシートの場合でしょうか? その後に続く >ActiveSheet.ChartObjects("グラフ 1").Activate >ActiveSheet.ChartObjects("グラフ 1").Activate >Sheets("Sheet1").Select >Range("A1").Select ここで縮小の操作が記録されなかったのは、グラフエリアをマウスを使ってサイズ変更したからでしょう。 表示の縮小であれば、[表示]タブの[ズーム]を使えばマクロ記録されます。 Sub Macro1() ' ' Macro1 Macro ' '   ActiveSheet.Shapes.AddChart.Select   ActiveChart.SetSourceData Source:=Range("'Sheet1'!$A$1:$B$5")   ActiveChart.ChartType = xlColumnClustered   ActiveChart.Location Where:=xlLocationAsNewSheet   ActiveWindow.Zoom = 100 End Sub 2003との互換を考慮すると以下。 Sub test()   With Charts.Add     .ChartType = xlColumnClustered     .SetSourceData Source:=Sheets("Sheet1").Range("A1:B5"), PlotBy:=xlColumns   End With   ActiveWindow.Zoom = 100 End Sub

yasucosmos
質問者

お礼

まさにご指摘の通りで、グラフエリアをマウスを使ってサイズ変更したからでした。たしかに、[表示]タブの[ズーム]を使うとマクロ記録されました。今まで悩んでいましたがやっと解決し、すっきりしました。どうも有り難うございました。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

下記で試してください。 With ActiveSheet.ChartObjects("グラフ 1").ShapeRange .ScaleWidth 0.6, msoFalse, msoScaleFromTopLeft .ScaleHeight 0.6, msoFalse, msoScaleFromTopLeft End With Left、Top、Width、Height、各プロパティの値を、指定セル範囲の大きさにすることが出来ます。 With ActiveSheet.ChartObjects("グラフ 1") .Left = Range("D2:H15").Left .Top = Range("D2:H15").Top .Width = Range("D2:H15").Width .Height = Range("D2:H15").Height End With あと、グラフ作成ウイザードでは、 ActiveChart.Location Where:=xlLocationAsNewSheet というように、グラフ作成後場所を決めていますが ActiveSheet.ChartObjects.add を、使えば直接シート上にグラフを描画することができます。

関連するQ&A