[[20181112112741]] 『図として貼付・マクロをまとめるとエラー』(たなか) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『図として貼付・マクロをまとめるとエラー』(たなか)

お世話になります。

A シート1のA3を、シート2のA10に図として貼付
B シート3のA3を、シート4のA10に図として貼付

それぞれAB単体ではエラーが出ないのですが、
ABを同じsubの中に入れると「実行時エラー'1004':データを貼り付けできません。」と出ます。
エラーが出ても「▶(継続)」を押せば、貼り付けができます。
どのあたりがダメなんでしょうか。

Sub A単体()

ThisWorkbook.Worksheets("シート1").Activate
ThisWorkbook.Worksheets("シート1").Columns("A:A").AutoFit '列幅を自動調整
ThisWorkbook.Worksheets("シート1").Range("A3").Select '図としてコピペ
Selection.Copy
ThisWorkbook.Worksheets("シート2").Activate
Range("N10").Select
ActiveSheet.Pictures.Paste link:=False
ThisWorkbook.Worksheets("シート1").Columns("A:A").ColumnWidth = 6 '列幅を6に変更
Application.CutCopyMode = False

End Sub

Sub B単体()

ThisWorkbook.Worksheets("シート3").Activate
ThisWorkbook.Worksheets("シート3").Columns("A:A").AutoFit '列幅を自動調整
ThisWorkbook.Worksheets("シート3").Range("A3").Select '図としてコピペ
Selection.Copy
ThisWorkbook.Worksheets("シート4").Activate
Range("N10").Select
ActiveSheet.Pictures.Paste link:=False
ThisWorkbook.Worksheets("シート3").Columns("A:A").ColumnWidth = 6 '列幅を6に変更
Application.CutCopyMode = False

End Sub

Sub ABまとめ()

ThisWorkbook.Worksheets("シート1").Activate
ThisWorkbook.Worksheets("シート1").Columns("A:A").AutoFit '列幅を自動調整
ThisWorkbook.Worksheets("シート1").Range("A3").Select '図としてコピペ
Selection.Copy
ThisWorkbook.Worksheets("シート2").Activate
Range("N10").Select
ActiveSheet.Pictures.Paste link:=False
ThisWorkbook.Worksheets("シート1").Columns("A:A").ColumnWidth = 6 '列幅を6に変更
Application.CutCopyMode = False

ThisWorkbook.Worksheets("シート3").Activate
ThisWorkbook.Worksheets("シート3").Columns("A:A").AutoFit '列幅を自動調整
ThisWorkbook.Worksheets("シート3").Range("A3").Select '図としてコピペ
Selection.Copy
ThisWorkbook.Worksheets("シート4").Activate
Range("N10").Select
ActiveSheet.Pictures.Paste link:=False
ThisWorkbook.Worksheets("シート3").Columns("A:A").ColumnWidth = 6 '列幅を6に変更
Application.CutCopyMode = False

End Sub

< 使用 Excel:Excel2013、使用 OS:Windows7 >


 とりあえず
 ThisWorkbook.Worksheets("シート3").Activate 
 の前に
 DoEvents
 を入れてみてはどうだろうか?
(ねむねむ) 2018/11/12(月) 11:52

ねむねむさん、早速のご返事ありがとうございます!

DoEvents

を入れてみたのですが、エラーになりました…

(たなか) 2018/11/12(月) 13:05


 シート1、シート3のN10セルにはどんな値が入っているのだろうか?
 こちらで適当な文字列を入れて実行したときには問題なく実行できた。
(ねむねむ) 2018/11/12(月) 13:51

 両方のSelection.Copy の後にDoEventsを入れては?
(X) 2018/11/12(月) 14:02

図として貼り付けは高速で処理するとそのエラー出やすいですよね。
環境やタイミングによって再現性が変わるので非常に厄介な奴です。

DoEventsと並んでSleepメソッドを各所に挟むのも良いかもしれません。

確実に実行されるコードを書くときは、On Error Goto〜Resumeを使って成功するまでループさせて無事貼り付け出来たのを確認したら続行みたいな、かなり複雑なコードを書きます。

簡単な回避方法があったら私も知りたい。
(にゅるん) 2018/11/12(月) 16:04


 Pictures.Pasteを使ってコピー→図として貼り付けではなくCopyPictureを使って
 図としてコピー→貼り付けとしてはどうだろう?

(ねむねむ) 2018/11/12(月) 16:21


 ぶつかり。

 Activateの行いらない。
 確認したいのなら、残してもいいけど。

 Sheets("Sheet1").Range("A1").CopyPicture
 Sheets("Sheet2").Range("C3").PasteSplecial
(BJ) 2018/11/12(月) 16:25

ねむねむさん、Xさん、にゅるんさん、BJさん、ありがとうございます!
Xさんの助言をいただいた際に、無事に動作し、
欲をかいて更に前後のマクロを追加しても、OKになりました!
昨日、コメント返信したつもりができておらず、すみませんm(__)m
(たなか) 2018/11/13(火) 09:53

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.