代码之家  ›  专栏  ›  技术社区  ›  Pulsater

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

  •  0
  • Pulsater  · 技术社区  · 9 年前

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

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

    下面的宏在“Organizer.Sheets”(“Partnumber_Vendor_Database”).Select上一直失败。我不知道为什么。

    “组织者”是用户将使用的本地数据库。 “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 回复  |  直到 9 年前
        1
  •  0
  •   rdnobrega    9 年前

    虽然它易于使用,但避免 ActiveWorkbook , ActiveSheet Sheets(<Title of the Sheet.) .

    前两种方法的问题是,很难判断activeworkbook是否是您要查找的工作簿,特别是当有多个工作簿打开时。要解决此问题,一种解决方案是使用 Workbooks 对象以根据其名称选择正确的工作簿(属性: CodeName ). 工作表也一样,更改工作表的真实名称,以便正确地调用它们。

    第三个原则基本相同。通常,不要使用图纸标题作为参考,使用对象的真实名称。使用VBA代码中的属性窗口来更改该属性。

    错误可能来自两种情况:

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

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

    希望有帮助。

    推荐文章