2011-09-24 55 views
2

我有2个工作簿 - 数据文件(表:安得拉邦)&发票文件(在最后一张发票之后添加的新发票)。VBA复制数据将数据复制到基于标准的新工作簿

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

例如:行9B DO3566521将被复制到一个新的发票300在发票工作簿包含以下信息:

  • 订单结束日期(A9)被复制到I16
  • 订单号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在发票工作簿中添加)。 ..

我可以拿到发票簿添加/复制一个新的工作,但我有过数据&写循环功能麻烦复制。如果它是不同的采购订单,如何创建新的发票?任何帮助将非常感激!!

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

数据簿 - 工作表名称:安得拉邦

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 

回答

1

我对你所问的一些问题感到困惑,但以下内容应该适用。只是适应你的需求。

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 

如果我是你,我会将原始工作簿中的值传递给变量数组,然后用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 

这应该让你开始。

相关问题