グラフを別シートにコピーできない | |
---|---|
[195863] グラフを別シートにコピーできない- ■親トピック/記事引用/メール受信=OFF■ □投稿者/ Rocky -(2023/08/13(12:34)) □U R L/ OSはWindows 2017、Excel2019 シート1で作成した複数のグラフを別シート(分析結果)にコピーしようとしています。 毎回Obj.Copyコマンドで止まります。「アプリ定義又はObject定義のエラー」 マニュアル操作で、シート1の一番下のグラフの最終行の次のセル("Z72")から右下全体を削除して、VBAを再度実行すると成功します。対処方法をご教示願います。 Set Sht1 = Sheets("sheet1") Set Sht2 = Sheets("分析結果") With Sheets("sheet1") With Range(Cells(72, 26), Cells(1048576, 1000)).ClearContents 'グラフエリアの余分なデータのクリア End With End With ActiveSheet.Name = "分析結果" Dim Obj For Each Obj In Worksheets("sheet1").ChartObjects a = Obj.Left '左 b = Obj.Top '上 'sheet1のグラフの左1500,上620 元グラフの開始位置の値 Obj.Copy 'グラフをコピー、ここでエラー 'グラフを貼り付け With Worksheets("分析結果") .Paste '貼り付け .ChartObjects(.ChartObjects.Count).Left = a - 1400 '左の位置 .ChartObjects(.ChartObjects.Count).Top = b + 50 '上の位置 End With Next この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 ++++++++++++++++++++ OS ⇒OTHER Version⇒OTHER ++++++++++++++++++++ |
[195864] Re[1]: グラフを別シートにコピーできない- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2023/08/13(14:38)) □U R L/ ちょっと理解できない箇所があるんですが、提示されたコードは本物ですか? 一目だと、こんな感じでいいような気がします。 Set Sht1 = Sheets("sheet1") Set Sht2 = Sheets("分析結果") With Sht1 .Range(.Cells(72, 26), .Cells(1048576, 1000)).ClearContents 'グラフエリアの余分なデータのクリア End With Dim Obj For Each Obj In Sht1.ChartObjects a = Obj.Left '左 b = Obj.Top '上 'sheet1のグラフの左1500,上620 元グラフの開始位置の値 Obj.Copy 'グラフをコピー、ここでエラー 'グラフを貼り付け With Sht2 .Paste '貼り付け .ChartObjects(.ChartObjects.Count).Left = a - 1400 '左の位置 .ChartObjects(.ChartObjects.Count).Top = b + 50 '上の位置 End With Next |
[195865] Re[2]: グラフを別シートにコピーできない- ■ / 記事引用/メール受信=OFF■ □投稿者/ Rocky -(2023/08/13(16:43)) □U R L/ 半平太さん、アドバイスありがとうございます。 問い合わせ内容が不十分だっようですみませんでした。 問い合わせのコードは、Callで指定されたSub ()の一部分で、この前にグラフ作成Sub ()等があります。 アドバイスに従い、本Sub ()全体を次のように書き換えました。 Sub グラフを別シートにコピー() Dim Sht1 As Worksheet Dim Sht2 As Worksheet Dim a As Long Dim b As Long a = 0 b = 0 Set Sht1 = Sheets("sheet1") Set Sht2 = Sheets("分析結果") With Sht1 .Range(.Cells(72, 26), .Cells(1048576, 1000)).ClearContents 'グラフエリアの余分なデータのクリア End With Dim Obj For Each Obj In Sht1.ChartObjects a = Obj.Left '左 b = Obj.Top '上 'sheet1のグラフの左1500,上620 元グラフの開始位置の値 Obj.Copy 'グラフをコピー、ここでエラー 'グラフを貼り付け With Sht2 .Paste '貼り付け .ChartObjects(.ChartObjects.Count).Left = a - 1400 '左の位置 .ChartObjects(.ChartObjects.Count).Top = b + 50 '上の位置 End With Next End Sub 結果は、 Obj.Copy でエラーとなりました。元グラフの最終行の次のセルから右下全てをマニュアルでdelete後、本件 Sub グラフを別シートにコピー()を再実行すると、別シート(分析結果)に元グラフ(現在3図)がコピーされます。 マニュアルで元グラフ範囲外のセルをdeleteする手順と、コーディングに齟齬があるのかもしれないのでしょうか。 これとは別に、前のSubに問題があるとすれば、自力での発見は難しいと思いますが、頑張ってみます。追加でアドバイスがありましたら、よろしくお願いします。 この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 ++++++++++++++++++++ OS ⇒OTHER Version⇒OTHER ++++++++++++++++++++ |
[195866] Re[3]: グラフを別シートにコピーできない- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2023/08/13(17:42)) □U R L/ >結果は、 Obj.Copy でエラーとなりました。 不可解としか思えません。 こちらでは問題なくコピーできていますので、原因についてはノーアイデアです。 他の回答者のレスをお待ちください。 |
[195867] Re[4]: グラフを別シートにコピーできない- ■ / 記事引用/メール受信=OFF■ □投稿者/ Rocky -(2023/08/13(21:59)) □U R L/ 半平太さん、 沢山のアドバイスを頂きありがとうございました。 Callメッセージから切り離し、単体では作動すること、確認出来ました。 従いまして、複数のCallを構成するSubプログラム間の変数等定義上の齟齬・不一致ではないかと思いいたっております。Subプログラムは、いろいろな時期に別々に作成したものを集めておりますので、変数定義が一貫していない可能性大です。ご指導ありがとうございました。 |
[195868] Re[5]: グラフを別シートにコピーできない- ■記事引用/メール受信=OFF■ □投稿者/ マナ -(2023/08/14(18:56)) □U R L/ コピーの前、貼り付けの前に、DoEventsで、間をとってみるとどうなりますか。 > For Each Obj In Sht1.ChartObjects DoEvents ’★追加 DoEvents ’★追加 DoEvents ’★追加 > a = Obj.Left '左 > b = Obj.Top '上 'sheet1のグラフの左1500,上620 元グラフの開始位置の値 > Obj.Copy 'グラフをコピー、ここでエラー DoEvents ’★追加 DoEvents ’★追加 DoEvents ’★追加 > 'グラフを貼り付け > With Sht2 > .Paste '貼り付け |
このトピックに書きこむ |
---|