戻る  □一般操作のサロン  □ 使用方法  □ 新着記事  □ 新規に質問する!  □ トピック一覧  □ 検索  □ 過去ログ
[ 最新記事及び返信フォームをトピックトップへ ]
このトピック参照回数 :
グラフを別シートにコピーできない

    [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


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [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 '貼り付け


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他



このトピック内容の全ページ数 / [0]

このトピックに書きこむ
Name/
E-Mail/

└>このツリーのレス記事をメールで受信しますか? YES/ NO/
Title/
URL/
Comment/ 通常モード->  図表モード-> (←の場合適当に改行を入れて下さい)
タグが使用できます。例 ⇒ <font color="blue">文字</font>
解決!!ありがとうございました! 解決       保留中です・・・ 保留        迷宮入りorほかあたって見ます・・ 迷宮入       すいませ〜ん。誰か〜! Help! ←※回答者専用
解決したらチェック       保留(コードテスト中など・・)         解決不可orレスが全く付かなくてほかのサイトに行くときなど・・
削除キー/
(半角8文字以内) 


- Child Forum -
Edit:ゆう-G