我在开发此代码时遇到问题。我能够开发代码以将新数据从我的工作簿复制到现有路径,但在尝试从现有路径工作簿中检索数据时遇到了问题。
这个概念是我的系统中有一个工作簿将收集数据。数据来自正在处理项目信息的不同用户。完成项目后,这些新信息和现有信息将上传回收集该数据的工作簿。收集数据的工作簿将始终具有已定义的路径。用户正在处理的工作簿将位于整个系统的多个位置。
以下宏在“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
答案 0 :(得分:0)
虽然它易于使用,但请避免使用ActiveWorkbook
,ActiveSheet
和Sheets(<Title of the Sheet.)
。
前两个问题是,很难判断activeworkbook是否实际上是您正在寻找的工作簿,特别是当有超过1个工作簿打开时。要解决此问题,一种解决方案是使用Workbooks
对象通过其NAME(属性CodeName
)选择正确的工作簿。对于表格相同,更改表格的真实名称,以便您可以正确地调用它们。
第三个原则基本相同。通常,不要使用Sheets的标题作为引用,使用对象的REAL NAME。使用VBA代码中的“属性”窗口更改它。
错误可能来自两种情况:
1 - 您选择的工作簿不是您要使用的实际工作簿。
2 - 工作表“Partnumber_Vendor_Database”的标题已更改或写错。
希望它有所帮助。