从一个工作簿复制到另一个工作簿
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
尽管它易于使用,但请避免使用 ActiveWorkbook
、ActiveSheet
和 Sheets(<Title of the Sheet.)
。
前两个的问题是很难判断活动工作簿是否真的是您要查找的工作簿,特别是当打开的工作簿超过 1 个时。要解决此问题,一种解决方案是使用 Workbooks
object 到 select 正确的工作簿名称 (属性 CodeName
)。 Sheet 也一样,更改 Sheet 的真实姓名,以便您可以正确地称呼他们。
第三个原理基本一样。一般来说,不要使用 Sheet 的标题作为参考,使用 object 的真实姓名。使用 VBA 代码中的 属性 window 来更改它。
错误可能来自两种情况:
1 - 您的 selected 工作簿不是您要处理的实际工作簿。
2 - Sheet "Partnumber_Vendor_Database" 的标题已更改或写错。
希望对您有所帮助。
我在开发此代码时遇到问题。我能够开发代码以将新数据从我的工作簿复制到现有路径,但在尝试从现有路径工作簿检索数据时 运行 遇到问题。
概念是我的系统中有一个工作簿将收集数据。数据来自处理项目信息的不同用户。一旦他们完成了项目,这些新信息和现有信息就会上传回收集该数据的工作簿。收集数据的工作簿将始终具有定义的路径。用户正在使用的工作簿将位于系统中的多个位置。
下面的宏在 "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
尽管它易于使用,但请避免使用 ActiveWorkbook
、ActiveSheet
和 Sheets(<Title of the Sheet.)
。
前两个的问题是很难判断活动工作簿是否真的是您要查找的工作簿,特别是当打开的工作簿超过 1 个时。要解决此问题,一种解决方案是使用 Workbooks
object 到 select 正确的工作簿名称 (属性 CodeName
)。 Sheet 也一样,更改 Sheet 的真实姓名,以便您可以正确地称呼他们。
第三个原理基本一样。一般来说,不要使用 Sheet 的标题作为参考,使用 object 的真实姓名。使用 VBA 代码中的 属性 window 来更改它。
错误可能来自两种情况:
1 - 您的 selected 工作簿不是您要处理的实际工作簿。
2 - Sheet "Partnumber_Vendor_Database" 的标题已更改或写错。
希望对您有所帮助。