VBA将数据复制到基于标准的新工作簿的数据

我有2个工作簿 – 数据文件(表:安得拉邦)和发票文件(新的发票后添加最后一次发票)。

我想使用数据工作簿中的数据透视表在发票工作簿中创build发票。 每发票1个采购订单号

例如:第9B行DO3566521将被复制到发票工作簿中的新发票300中,其中包含以下信息:

  • 订单closuresdate(A9)被复制到I16
  • PO编号DO666(B9)被复制到B31,
  • 订单ID 1234(C9)被复制到A34中,
  • 规格名称 – 3个项目(E9:E11)被复制到B34:B36,
  • 发票数量(F9:F11)被复制到G34:G36中,
  • 发票金额(G9:G11)被复制到I34:36

  • PO编号DO667(B12)应该被复制到另一个新的发票301(在发票工作簿中添加新的工作表301)…

我可以让发票工作簿添加/复制一个新的工作表,但我无法复制数据和编写循环function。 如果是不同的采购订单,如何创build新的发票? 任何帮助将非常感激!!

顺便说一句,我也有一个macros( Sub Get_Spelling() )将数字转换成发票工作表(A55)中的单词。 只是想知道如何将它们join到一起,以便在创build发票时自动更新。

数据工作簿 – 图纸名称:安得拉邦

 A9 B9 C9 D9 E9 F9 G9 Order Closed Date PO Number Order ID Item Index Spec Name Qty Invoice Amt 15/09/11 DO666 1234 1 A 10 $100 2 B 20 $200 3 C 30 $300 DO667 567 1 L 40 $100 2 K 50 $200 

发票工作簿 – 工作表名称:发票号码(例如Inv 300)

 B31 PO Number DO666 A34 B34 G34 I34 Order ID Spec Name Qty Invoice Amt 1234 A 10 $100 B 20 $200 C 30 $300 Invoice 301 B31 PO Number: DO667 

这是我的代码:

 Option Explicit Sub Create_Invoice() Dim oldsheet As Worksheet Dim newSheet As Worksheet Dim oldnumber As Integer Dim newnumber As Integer Dim databook As Workbook Dim datasheet As Worksheet Dim invbook As Workbook Set databook = ActiveWorkbook Set invbook = ActiveWorkbook Application.Workbooks.Open ("C:\Users\Owner\Desktop\New folder\AP VAT Inv 201 -.xls") 'Set invbook = ActiveWorkbook oldnumber = ActiveSheet.Name newnumber = oldnumber + 1 ActiveSheet.Copy After:=ActiveWorkbook.ActiveSheet Set newSheet = ActiveSheet ActiveSheet.Name = newnumber ActiveSheet.Range("I15").Value = newnumber ActiveSheet.Range("I16") = databook.Sheets("Andhra Pradesh").Range("A9") MsgBox "Invoices have been created successfully" ActiveWorkbook.Save End Sub 

我对你所要求的一些东西感到困惑,但是应该遵循以下几点。 只是适应你的需求。

 Sub Main() Dim wkbook As Workbook Set wkbook = Workbooks.Add If Len(dir( ***Your Directory Path *****, vbDirectory)) = 0 Then MkDir ***Your Directory Path ***** End If With wkbook .Title = "Workbook Title" .Subject = "Workbook Subject" .SaveAs FileName:= ***Your Directory Path *****\"Workbook Title.xls" End With With wkbook.Worksheets("Sheet1") .Range("I16") = **Your Original Worksheet**.Worksheets("Sheet1").Range("A1").value 'repeat for all values end with wkbook.save wkbook.close end sub 

如果我是你,我会将原始工作簿中的值传递给variables数组,然后使用for循环读取它们。 如…

 dim myValues as Variant dim I as Integer myValues = Worksheets("Sheet1").Range("A9:G11").Value for I = LBound(myValues) to Ubound(myvalues) 'do work here (See the with wkbook statement above) next I 

这应该让你开始。