[英]How to transfer multiple Data in one excel Workbook to another excel workbook
我希望您能为我提供一个“更新代码”按钮。 我想要一个1工作簿-输入数据,当我感觉到该工作簿并单击更新按钮时,它将基于该工作簿文件自动更新特定的工作簿。 在EnterData工作簿中提到。
例如。 我想使用以下详细信息制作EnterData。
物品名称:物品数量:
部门:每月3个部门工作表名称:月份文件名:取决于ItemName
然后单击更新按钮,它将自动使用特定的工作表名称和部门更新特定的文件
希望你能帮我这个忙。
这将为您提供良好的开端
我试图将要执行的工作划分为简单,可读和逻辑的任务。
使用常量进行设置,例如:根目录,单元格引用,列引用我想在模块顶部看到它
公共常量TartgetWorkBookName作为字符串=“ C:\\ Users \\ SomeFolder \\ Data.xlsm”公共常量TartgetWorkSheetName作为字符串=“ Sheet3”公共常量TartgetTopLeftCellAddress作为字符串=“ A1”
与埋在代码中的某个地方:
Dim TargetWorkBook As Workbook
Set TargetWorkBook = Application.Workbooks.Open("C:\Users\SomeFolder\Data.xlsm")
Set getTargetR1C1 = TargetWorkBook.Worksheets("Sheet3").Range("A1")
这是我遵循的基本模式的草稿。 这是一个有效的例子。
Option Explicit
Const TartgetWorkBookName As String = "C:\Users\SomeFolder\Data.xlsm"
Const TartgetWorkSheetName As String = "Sheet3"
Const TartgetTopLeftCellAddress As String = "A1"
Dim TargetWorkBook As Workbook
Set TargetWorkBook = Application.Workbooks.Open(TartgetWorkBookName)
Set getTargetR1C1 = TargetWorkBook.Worksheets(TartgetWorkSheetName).Range(TartgetTopLeftCellAddress)
Sub PostRecord()
Dim TargetR1C1 As Range, ItemName As String, Qty As Double, Department As String, Month_ As Integer
Set TargetR1C1 = getTargetR1C1()
'If your transfering a lot of data turn off
Speedboost True
'------Begin Loop
'------For x = 2 to LastColumn
'------Set Variables
ItemName = "Dragon Sauce"
Qty = 3
Department = "Spicy Hot Stuff"
Month_ = Month(Date)
'------Post Varibles to taget
UpdateRecord TargetR1C1, ItemName, Qty, Department, Month_
'Next
'Turn Everything back on
Speedboost False
End Sub
Sub UpdateRecord(TargetR1C1 As Range, ItemName As String, Qty As Double, Department As String, Month_ As Integer)
Dim c As Range
Dim x As Long, y As Long
If Len(TargetR1C1.Offset(1)) Then
x = TargetR1C1.End(xlDown).Row + 1
Else
x = TargetR1C1.Rows + 1
End If
y = TargetR1C1.Column
Set c = TargetR1C1.Cells
c(x, y) = ItemName
c(x, y + 1) = Qty
c(x, y + 2) = Department
c(x, y + 3) = Month_
End Sub
Sub Speedboost(bSpeedUpMacros As Boolean)
With Application
.ScreenUpdating = Not (bSpeedUpMacros)
.EnableEvents = Not (bSpeedUpMacros)
If bSpeedUpMacros Then
.Calculation = xlCalculationManual
Else
.Calculation = xlCalculationAutomatic
End If
End With
End Sub
Function getTargetR1C1() As Range
Dim TargetWorkBook As Workbook
Set TargetWorkBook = Application.Workbooks.Open(TartgetWorkBookName)
Set getTargetR1C1 = TargetWorkBook.Worksheets(TartgetWorkSheetName).Range(TartgetTopLeftCellAddress)
End Function
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.