我有2个工作簿 - 数据文件(Sheet:Andhra Pradesh)&发票文件(在最后一张发票之后添加新发票)。
我想使用数据工作簿中的数据透视表在发票工作簿中创建发票。每1张发票1个采购订单编号。
例如:第9B行DO3566521将被复制到Invoice工作簿中的新Invoice 300中,其中包含以下信息:
发票金额(G9:G11)将被复制到I34:36
PO编号DO667(B12)应复制到另一个新的Invoice 301(要在Invoice工作簿中添加的新工作表301)...
我可以使用发票工作簿添加/复制新工作表,但我无法复制数据和文件。写循环函数。如果是不同的PO,如何创建新发票?任何帮助将不胜感激!!
顺便说一句,我还有一个宏(Sub Get_Spelling()
)可以将数字转换为发票工作表(A55)中的单词。只是想知道如何将它们连接在一起,以便在创建发票时自动更新。
数据工作簿 - 工作表名称:Andhra Pradesh
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
答案 0 :(得分: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
这应该让你开始。