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

时间:2017-01-25 14:24:41

标签: excel vba excel-vba excel-2013

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

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

以下宏在“Organizer.Sheets(”Partnumber_Vendor_Database“)上保持失败。选择”。我不确定为什么。

“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

1 个答案:

答案 0 :(得分:0)

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

前两个问题是,很难判断activeworkbook是否实际上是您正在寻找的工作簿,特别是当有超过1个工作簿打开时。要解决此问题,一种解决方案是使用Workbooks对象通过其NAME(属性CodeName)选择正确的工作簿。对于表格相同,更改表格的真实名称,以便您可以正确地调用它们。

第三个原则基本相同。通常,不要使用Sheets的标题作为引用,使用对象的REAL NAME。使用VBA代码中的“属性”窗口更改它。

错误可能来自两种情况:

1 - 您选择的工作簿不是您要使用的实际工作簿。

2 - 工作表“Partnumber_Vendor_Database”的标题已更改或写错。

希望它有所帮助。