对象定义的错误与语句。 复制工作表数据并粘贴到其他工作簿

我有一段代码复制从单元格A10开始的信息,直到J列并遍历所有行,直到数据完全耗尽。 第一列必须被填充,其余的被击中和错过。 单元格中可能有数据,或者可能没有数据。 然后将复制的数据传输到另一个工作簿并粘贴当前工作表上的信息。

我需要find一种能够复制所有信息的方式,而不pipe数据在单元中的可能性。

此外,在目前的状态在with shttocopy部分我收到一个“应用程序或对象定义的错误”消息。

只是为了澄清我需要列A中的数据从单元格A10开始到填充的最后一行的每个单元格,并将所有内容复制到列J,结束于列A中具有数据的同一行。然后粘贴到另一个工作簿中的工作表中。

这是代码…我希望我有道理

 Sub UpdateCustomerInformation() Dim wkbSource As Workbook Dim wkbDest As Workbook Dim shttocopy As Worksheet Dim wbname As String Dim destSheet As Worksheet ' check if the source file is open Ret = Isworkbookopen("\\showdog\service\\Service_job_PO\Customer Information - Query.xls") If Ret = False Then ' if file is not open the open file Set wkbSource = Workbooks.Open("\\showdog\service\\Service_job_PO\Customer Information - Query.xls") Else 'Just make it active 'Workbooks("C:\stack\file1.xlsx").Activate Set wkbSource = Workbooks("Customer Information - Query.xls") End If ' check if the destination file is open Ret = Isworkbookopen("\\showdog\service\Service Jobs.xlsm") If Ret = False Then ' if file is not open file Set wkbDest = Workbooks.Open("\\showdog\service\Service Jobs.xlsm") Set destSheet = wkbDest.Sheets("Customer Information") 'perform copy Set shttocopy = wkbSource.Sheets("Report") With shttocopy .Range(.Range("A10"), .Range("A10").End(xlDown).End(xlToRight)).Copy _ destSheet.Range("A4").End(xlDown).Offset(1) End With Application.DisplayAlerts = False 'save and close file wkbDest.Save wkbDest.Close Application.DisplayAlerts = True Else 'destination file is open 'Just make it active Set wkbDest = Workbooks("Service Jobs.xlsm") Set destSheet = wkbDest.Sheets("Customer Information") 'perform copy Set shttocopy = wkbSource.Sheets("Report") With shttocopy .Range(.Range("A10"), .Range("A10").End(xlDown).End(xlToRight)).Copy _ destSheet.Range("A4").End(xlDown).Offset(1) End With End If End Sub Function Isworkbookopen(filename As String) Dim ff As Long, ErrNo As Long Dim wkb As Workbook Dim nam As String wbname = filename On Error Resume Next ff = FreeFile() Open filename For Input Lock Read As #ff Close ff ErrNo = Err On Error GoTo 0 Select Case ErrNo Case 0: Isworkbookopen = False Case 70: Isworkbookopen = True Case Else: Error ErrNo End Select End Function 

考虑:

 With shttocopy .Range(.Range("A10"), .Range("A10").End(xlDown).End(xlToRight)).Copy _ destSheet.Range("A4").End(xlDown).Offset(1) End With 

对于范围的结束,您:

  • 从A10开始
  • 在列A中往下走到最后一行
  • 通过一个值转到该行的最后一列

由于最后一行不太可能已满,因此您将无法获得完整的一组列。

我不喜欢这样的陈述,因为我觉得他们混乱,很难得到正确的。 猜测哪个位给出了错误是很困难的。

使用类似于:

 RowLast = .Cells(Rows.Count,"A").End(XlUp).Row 

find最后一行。 例如,如果没有第二行,就会避免出现问题。 你知道J列是最后一列,那么怎么样:

 With shttocopy .Range("A10:J" & LastRow).Copy _ destSheet.Cells(Rows.Count,"A").End(xlUp).Offset(1) End With