私はサードパーティのプログラムからデータをコピーして私の仕事でExcelシートに貼り付けるプログラムを書いています。すべて私はマクロを実行している5台のコンピュータのうち4台で完璧に動作します。ただし、この最後のコンピュータは、pastespecialはあるコンピュータでマクロを失敗させますが、他のコンピュータでは失敗します
を生成します。実行時エラー '1004':範囲クラスのPasteSpecialメソッドが失敗しました。
最後にこのエラーが発生したのは、スクリプトでCell.Activateを使用していたためです。私はそれ以来、これを使用することを避けるために書きましたが、一方のコンピュータはまだ問題を抱えています。なぜこれができますか?
プログラムは基本的に、入力としてキーボード入力のみを受け付ける第三者プログラムにウィンドウを切り替えます。私はセンドキーを使って必要なデータにアクセスし、それをコピーして貼り付けて、データを扱うことができる場所をExcelに貼り付けます。
私はプログラムの中ではるかに早くRQWBを設定していますが、ここではそのための行です。
Dim RQWB As Workbook
Set RQWB = Workbooks("Excel workbook")
ここにはforループがあります。
'find missing emails
For count3 = 0 To 200
If IsEmpty(RQWB.Worksheets("Email_List").Range("D1").End(xlDown).Offset(1, -3).Value) = True Then
Else
RQWB.Worksheets("Email_List").Range("D1").End(xlDown).Offset(1, -3).Copy
AppActivate "Other program"
Sleep 500
SendKeys "~", True
Sleep 70
SendKeys "~", True
Sleep 70
SendKeys "~", True
Sleep 70
SendKeys "~", True
Sleep 70
SendKeys "~", True
Sleep 70
SendKeys "~", True
Sleep 70
SendKeys "~", True
Sleep 70
SendKeys "1", True
Sleep 70
SendKeys "~", True
Sleep 70
SendKeys "2", True
Sleep 70
SendKeys "~", True
Sleep 70
SendKeys "1", True
Sleep 70
SendKeys "~", True
Sleep 70
SendKeys "c ", True
Sleep 70
SendKeys "^v", True
Sleep 70
SendKeys "^x", True
Sleep 70
SendKeys "^a", True
Sleep 70
SendKeys "^c", True
Sleep 70
RQWB.Worksheets("Data").Cells.Delete
RQWB.Worksheets("Data").Range("A1").PasteSpecial
Sleep 500
If RQWB.Worksheets("Data").Range("A24").Value = "CONDITION" Then
RQWB.Worksheets("Email_List").Range("D1").End(xlDown).Offset(1, 0).EntireRow.Delete
AppActivate "OTHER PROGRAM"
Sleep 500
SendKeys "~", True
Sleep 70
ElseIf RQWB.Worksheets("Data").Range("A24").Value = "CONDITION" Then
RQWB.Worksheets("Data").Range("D24").Value = "=LEFT(A6, 6)"
RQWB.Worksheets("Data").Range("D24").Copy
AppActivate "OTHER PROGRAM"
Sleep 500
SendKeys "^v", True
Sleep 70
SendKeys "30", True
Sleep 70
SendKeys "~", True
Sleep 70
SendKeys "^x", True
Sleep 70
SendKeys "^a", True
Sleep 70
SendKeys "^c", True
Sleep 70
RQWB.Worksheets("Data").Cells.Delete
RQWB.Worksheets("Data").Range("A1").PasteSpecial
If RQWB.Worksheets("Data").Range("A8").Value = "CONDITION" Then
Sleep 70
AppActivate "OTHER PROGRAM"
Sleep 500
SendKeys ("3")
Sleep 70
SendKeys ("~")
Sleep 70
SendKeys "^x", True
Sleep 70
SendKeys "^a", True
Sleep 70
SendKeys "^c", True
Sleep 70
RQWB.Worksheets("Data").Cells.Delete
RQWB.Worksheets("Data").Range("A1").PasteSpecial
Sleep 70
If IsEmpty(RQWB.Worksheets("Data").Range("A21").Value) = True Then
RQWB.Worksheets("Email_List").Range("D1").End(xlDown).Offset(1, 0).EntireRow.Delete
Else
RQWB.Worksheets("Email_List").Range("D1").End(xlDown).Offset(1, 0).Value = RQWB.Worksheets("Data").Range("A21").Value
End If
End If
ElseIf RQWB.Worksheets("Data").Range("A2").Value = "===============================================================================" Then
AppActivate "OTHER PROGRAM"
Sleep 500
SendKeys "30", True
Sleep 70
SendKeys "~", True
Sleep 70
SendKeys "^x", True
Sleep 70
SendKeys "^a", True
Sleep 70
SendKeys "^c", True
Sleep 70
RQWB.Worksheets("Data").Cells.Delete
RQWB.Worksheets("Data").Range("A1").PasteSpecial
Sleep 500
If RQWB.Worksheets("Data").Range("A8").Value = "CONDITION" Then
Sleep 70
AppActivate "OTHER PROGRAM"
Sleep 500
SendKeys ("3")
Sleep 70
SendKeys ("~")
Sleep 70
SendKeys "^x", True
Sleep 70
SendKeys "^a", True
Sleep 70
SendKeys "^c", True
Sleep 70
RQWB.Worksheets("Data").Cells.Delete
RQWB.Worksheets("Data").Range("A1").PasteSpecial
Sleep 70
If IsEmpty(RQWB.Worksheets("Data").Range("A21").Value) = True Then
RQWB.Worksheets("Email_List").Range("D1").End(xlDown).Offset(1, 0).EntireRow.Delete
Else
RQWB.Worksheets("Email_List").Range("D1").End(xlDown).Offset(1, 0).Value = RQWB.Worksheets("Data").Range("A21").Value
End If
End If
End If
End If
Next count3
私はどこ.activateなしでペーストに秀でる伝えるためにRQWBを追加するために必要なので、隠されたワークブックでこのスクリプトを実行しています。
ご協力いただきますようお願い申し上げます。
編集:コードを残して申し訳ありません。それは仕事関連のプログラムなので、どのくらい私が投稿する必要があるか分からなかった。それはちょっと長く、私はどれくらい関連性があるのかわかりません。ここにいくつかのコードがあります。それでももっと必要な場合は、重要なビットを編集するだけで全部を投稿することができます。
もっとコード=より多くの手がかり –
Timが書いたように、私たちがどのように手助けすると思いますか? 'RQWB'はどこに定義され、設定されていますか?関連コードの残りの部分を投稿してください。 –
編集されました。より多くのコードと少し説明が追加されました。 – AutomateMyJob