从一个工作簿复制到另一个工作簿

Copy from a workbook to another workbook

我在开发此代码时遇到问题。我能够开发代码以将新数据从我的工作簿复制到现有路径,但在尝试从现有路径工作簿检索数据时 运行 遇到问题。

概念是我的系统中有一个工作簿将收集数据。数据来自处理项目信息的不同用户。一旦他们完成了项目,这些新信息和现有信息就会上传回收集该数据的工作簿。收集数据的工作簿将始终具有定义的路径。用户正在使用的工作簿将位于系统中的多个位置。

下面的宏在 "Organizer.Sheets("Partnumber_Vendor_Database").Select" 上一直失败。我不确定为什么。

"Organizer" 是用户将使用的本地数据库。 "Partnumber_Vendor_File"是信息存储的本地数据库。

如果您发现可以更好地开发此代码,请告诉我! :)

Sub Find_Partnumber_Vendor_File()

'   This sub is to open the partnumber_Vendor file to update the local database.

    On Error Resume Next

    Dim Organizer As Workbook
    Set Organizer = Application.ActiveWorkbook


    Dim Partnumber_Vendor_File As Workbook
    Set Partnumber_Vendor_File = Workbooks.Open("S:\Supply Chain\PURCHASING\Forms and Templates\BOM Organizer\Partnumber_Vendor_File.xlsx")

    If Err.Number = 1004 Then
    MsgBox "Could not open. Check path in VBA"
    Exit Sub
    End If

    If Partnumber_Vendor_File.ReadOnly Then
        MsgBox "Sorry, partnumber to vendor database was already in use, try later"
        Exit Sub
    End If

    On Error GoTo 0

    Dim Data As Long
    Data = ActiveSheet.Cells(Rows.count, 1).End(xlUp).Row
    Range("A1:" & "D" & Data).Copy


    Organizer.Sheets("Partnumber_Vendor_Database").Select
    Range("A1:D1").Select
    Selection.Insert Shift:=xlDown

    Partnumber_Vendor_File.Close


End Sub

尽管它易于使用,但请避免使用 ActiveWorkbookActiveSheetSheets(<Title of the Sheet.)

前两个的问题是很难判断活动工作簿是否真的是您要查找的工作簿,特别是当打开的工作簿超过 1 个时。要解决此问题,一种解决方案是使用 Workbooks object 到 select 正确的工作簿名称 (属性 CodeName)。 Sheet 也一样,更改 Sheet 的真实姓名,以便您可以正确地称呼他们。

第三个原理基本一样。一般来说,不要使用 Sheet 的标题作为参考,使用 object 的真实姓名。使用 VBA 代码中的 属性 window 来更改它。

错误可能来自两种情况:

1 - 您的 selected 工作簿不是您要处理的实际工作簿。

2 - Sheet "Partnumber_Vendor_Database" 的标题已更改或写错。

希望对您有所帮助。