
手動で行なった[マクロの記録]どうりに、マクロを実行してもうまくいきません。
マクロで、グラフの切り取り、貼り付け、形式を選択して貼り付け<図 (拡張メタファイル)>を実行すると、クリップボードに入らず、エラーとなる。
手動で行なうとOKなのですが、
[ツール]の[新しいマクロの記録]では、下記のとうり記録されていて、実行結果も正しいのですが、マクロで実行すると、クリップボードに入らず、エラーとなります。
-------------------------------
Range("E2:H4").Select
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("E2:H4")
ActiveChart.Location
Where:=xlLocationAsObject, Name:="Sheet1"
ActiveWindow.Visible = False
ActiveWindow.WindowState = xlNormal
ActiveWindow.WindowState = xlMaximized
Range("C12").Select
ActiveSheet.PasteSpecial Format:="図 (拡張メタファイル)", Link:=False, _
DisplayAsIcon:=False
Range("J7").Select
-------------------------
Office XP 2002
マクロ、素人です。
どうしてでしょうか?
No.4ベストアンサー
- 回答日時:
s_huskyさん、質問者さんは普通にグラフを作りたいのではなくて、グラフを図に変換したいのでしょう。
下記でどうでしょうか?
Excel2000では動きますが、、、
Sub ChartAddTest()
Dim co As ChartObject
With Worksheets("Sheet1")
Set co = .ChartObjects.Add(.Range("C12").Left, .Range("C12").Top, 372, 208)
co.Chart.ChartWizard Source:=.Range("E2:H4"), _
Gallery:=xlColumn, Format:=1, PlotBy:=xlRows, _
CategoryLabels:=1, SeriesLabels:=1, HasLegend:=1
co.Chart.ChartArea.Border.LineStyle = xlContinuous
co.Chart.Axes(xlValue).HasMajorGridlines = True
co.Copy
.Range("C12").Activate
.PasteSpecial Format:="図 (拡張メタファイル)"
co.Delete
End With
End Sub
有難うございました。
マクロには素人なので、[ツールメニュー]から[新しいマクロの記録]でマクロの内容を推測してマクロを組み立てる方法で行なっているものですから・・・・
実際にやりたかったのは、グラフを、図に変換したかったのです。別シートのデータよりパラメーターを与えてデータをゲットしてグラフを作る、ただしこの時
作業シートにデーターを持ってくると、次々にグラフを作ると、前に作ったデータにより次のグラフが影響を受けるため、その影響を避けるために図に変換すれば、影響受けないと考えたのですが・・・・
他に、いい方法があると思いますが・・・・・
No.6
- 回答日時:
#4です。
記録マクロには限界があり全ての動作が記録される訳ではないようです。
> 実際にやりたかったのは、グラフを、図に変換したかったのです。
#4の回答はやりたい事と違うって事でしょうか?
co.copy を co.Cut にすれば、co.Delete は不要ですが、、、
co.Cut
.Range("C12").Activate
.PasteSpecial Format:="図 (拡張メタファイル)"
End With
> 次々にグラフを作ると、前に作ったデータにより次のグラフが影響を受けるため
データ元がいつも同じ Range("E2:H4") で、ここの値を変化させながら複数のグラフを作りたいって事?
返事が遅くなってすみませんでした。
今回の質問では、グラフを作って図に変換するところが知りたかったので例として質問しましたが、実際には、別シートにあるデーターを、パラメーターを与えて、必要なデータのみ作業シートに取り込み、数々のグラフを作りたかったのです。
ActiveSheet.ChartObjects("グラフ名").Cut
ActiveSheet.PasteSpecial Format:="図 (拡張メタファイル)" でできました。
有難うございました。
No.5
- 回答日時:
s_husky です。
後学のために!
Private Sub CommandButton1_Click()
Range("E2:H4").Select
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("E2:H4")
ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"
ActiveChart.CopyPicture
ActiveWindow.Visible = False
ActiveWindow.WindowState = xlNormal
ActiveWindow.WindowState = xlMaximized
Range("C12").Select
ActiveSheet.PasteSpecial Format:="図 (拡張メタファイル)"
Range("J7").Select
End Sub
ActiveChart.CopyPicture
この1行が欠落していたということでしょうか?
有難うございました。
papayukaさんにも返事しましたが、グラフを図に変換したかったのです。[マクロの記録]では、記録されないコードがあるのでしょうか?
ActiveChart.CopyPictureは元のグラフが残りますが、
いわゆる[カット]はできないのでしょうか?
変換後に別ステップでグラフを削除すればよいのですが
又、元のグラフの大きさと図の大きさが変わりますが、
同じ大きさにできないでしょうか?
No.3
- 回答日時:
s_husky です。
(Excel2003 SP2)
質問者のコードを次のようにして確認。
青、紫、白の棒グラフが作成されます。
ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"
行は、エラーになりますので修正しています。
Private Sub CommandButton1_Click()
On Error Resume Next
Range("E2:H4").Select
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("E2:H4")
ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"
ActiveWindow.Visible = False
ActiveWindow.WindowState = xlNormal
ActiveWindow.WindowState = xlMaximized
Range("C12").Select
ActiveSheet.PasteSpecial Format:="図 (拡張メタファイル)", Link:=False, DisplayAsIcon:=False
Range("J7").Select
End Sub
ただ、次のマクロですとエラーも出ないで同じ結果を得ます。
Private Sub CommandButton1_Click()
On Error Resume Next
Range("E2:H4").Select
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("E2:H4")
ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"
ActiveWindow.Visible = False
ActiveWindow.WindowState = xlNormal
ActiveWindow.WindowState = xlMaximized
Range("C12").Select
Range("J7").Select
End Sub
※バージョンの違いなんでしょうかね?
No.1
- 回答日時:
回答が付かないので誘い水を...
エラー箇所は、Format:="図 (拡張メタファイル)"のようですね。
1、冒頭に On Error Resume Next の1行を挿入すると目的は達成されるようです。
2、Format:="図 (拡張メタファイル)"を、0、1、2の数字にするとエラーは出ません。
が、クリップボードが全てコピーされます。
クリップボードをクリアする1行を冒頭に挿入すれば良いのですが判りません。
※"図 (拡張メタファイル)"のエラーの出ない書き方があるのか不具合なのかということと思います。
※プロの回答が付くことを願っています。
この回答への補足
早速の返事、ありがとうございました。
<2、Format:="図 (拡張メタファイル)"を、0、1、2の数字にするとエラーは出ません。
が、クリップボードが全てコピーされます。>
こちらでは、エラーになるのですが?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/08 09:08
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/04 17:58
- Excel(エクセル) ②Excel 簡単にシートコピーしたら前日の残高と日付を変更させたい→マクロの記録でエラーが出ます 8 2022/07/16 20:40
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/01/27 13:15
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Visual Basic(VBA) エクセルのマクロについて教えてください。 5 2023/07/05 09:30
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Visual Basic(VBA) エクセルのマクロについて教えてください。 5 2023/06/02 08:44
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数のデータ系列の線の太さを...
-
エクセルでツールバーに「縮小...
-
ファイル名を今日の日付、時刻...
-
エクセルVBAで、画像の倍率を知...
-
EXCELにクリップボードにある画...
-
dreamweaver5の「コマンド-記...
-
エクセルVBA 図形に設定された...
-
エクセルのコマンド作成のやり...
-
テキストボックスのカーソル位置
-
【VC++6.0(MFC)】コメントを一...
-
書式のコピー・貼り付けのショ...
-
VBからPowerPointのマクロを実...
-
cellsで特定の離れた範囲を選択...
-
htmlまたはJavascriptからファ...
-
ワードの全文章をリッチテキス...
-
最初の1回のみにボタンクリッ...
-
VisualStudioのアウトライン機...
-
VBAを使ってエクセルシート...
-
wordのマクロで縮小して貼り付...
-
ピボットグラフの書式の固定に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数のデータ系列の線の太さを...
-
エクセルでツールバーに「縮小...
-
cellsで特定の離れた範囲を選択...
-
ファイル名を今日の日付、時刻...
-
最初の1回のみにボタンクリッ...
-
VBA[Private Sub]のコードをシ...
-
どのドキュメントは暗号化され...
-
Powerpointでランダムな数字の...
-
ピボットグラフの書式の固定に...
-
エクセルVBAで、画像の倍率を知...
-
【ExcelVBA】クエリの更新とピ...
-
別ブックからユーザーフォーム...
-
VBAを使ってエクセルシート...
-
エクセルのマクロでSelection.S...
-
Pictures.Insertメソッド⇒Shape...
-
wordのマクロで縮小して貼り付...
-
EXCELにクリップボードにある画...
-
【VC++6.0(MFC)】コメントを一...
-
Excelのマクロで最下行を選択し...
-
VBA ChartWizardで円グラフが書...
おすすめ情報