- ベストアンサー
VBA エラー処理
- VBAでExcelの別ワークシートにデータを画像として貼り付ける作業をする際にエラーが発生する場合の対処方法は何ですか?
- Excel2013でエラーが発生した場合は「実行時エラー'1004' クリップボードを空に出来ません」と表示されます。Excel2003で同じコードを実行した場合は「実行時エラー'1004'」が発生します。
- エラーが発生した場合、Visual Basic Editor画面に移り、デバッグを選択し上部の継続ボタンを押すと画像が正常に貼り付けられます。エラーが発生した場合に再度同じコード文を実行させる方法について教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 補足に書かれたことをもとにエラーを再現することができました。 その後 (1)1行目に挿入 Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long) (2)途中にOn Error文を挿入 On Error GoTo ErrLabel shbar.Range("A2:DO4").CopyPicture Appearance:=xlScreen, Format:=xlPicture c.Offset(, x).PasteSpecial On Error GoTo 0 (3)End Sub の前に挿入 Exit Sub ErrLabel: Sleep 10 Resume の3か所を変更するとエラーが出なくなりました。 > 処理途中でsleepなどの処理で時間を空けてやればできるのかな?と思った次第です 計算機のVBAコードの処理スピードとメモリの読み書きスピードがあっていないのでしょう。
その他の回答 (1)
- f272
- ベストアンサー率46% (8529/18257)
まず Sheets(2).Range("A1:DO4").CopyPicture Appearance:=xlScreen, Format:=xlPicture このコードは,sheet2に作成されているセルの内容を参照するものではないですよ。2番目のシートというだけであってsheet2とは限りません。 つぎに > On Error Resume [0] なるコードを実行すれば良いという物を見つけて なんていうコードはあり得ません。あなたが「On Error Resumeの後には[0]は指定できないようです」と書いている通りです。 必要なコードが書かれていませんから,どのような対処がよいのかはわかりませんが,On Error文で逃げるよりも,ちゃんと何故エラーが起きるのかを認識した方がよいです。少なくとも私が試した限りではエラーは全く起こりません。 Sub test() Sheets(2).Range("A1:DO4").CopyPicture Appearance:=xlScreen, Format:=xlPicture ActiveSheet.Paste End Sub
補足
f272さん、コメントありがとうございます やろうとしている事は、Excelのワークシートに入力されたJANコードをJANのバーコードにする作業を行いたいのです 下記のページの斜め上ニュースさんのページで書かれているコードを利用させて頂こうかと思っています(社内でフォントやその他インストールが許されていないのでExcel利用だけで行いたいからです) http://nanameue-news.com/2014/02/25/211/ 別な方も同様の場所でエラーになるようで管理人さんに質問を出していて今調査中のようなのですが、私の環境で行った時もWindows7のExcel2003・Windows10のExcel2013でも同様に途中で先に書いた部分で止まってしまう事が発生する現象が出るのです しかし、デバッグを押して止まっている状態から上部の継続を押せばそこからコードが動作して、最終的には最終行の部分に対するJANのバーコードが正常に作成されて貼り付く事が完了するのです そこで、私が思った事はこのエラーが発生した場合に、その部分のコードをもう一度実行させれば良いのでは?と考えたのでした このエラーは発生せずに最後の行までJANコードが作成出来る事もありますし、複数回止まってしまう事もあるのです 参考にさせてもらった斜め上ニュースさんのコードは、一番最初に紹介されている物を利用して行ってみています 4904530400100 4549873090993 4991829306779 4580652110044 4951035071670 4981254049242 4902901856976 4562335446558 4562335446862 4904530400162 上記のようなJANコードをバーコード作成する時に対象となるJANコードが10個くらいある場合は、かなりの確率でエラーが発生するのです 自分ではエラーが出る原因がわからないのですが、Excel2003の場合で出るエラーメッセージが クリップボードが空に出来ないという物だったので、処理途中でsleepなどの処理で時間を空けてやればできるのかな?と思った次第です
お礼
素晴らしいです 見事にエラーが発生せず、すべてのバーコード作成させる事が出来るようになりました 早速業務に活用させていただきます どうもありがとうございました