【发布时间】:2018-11-10 22:15:43
【问题描述】:
我有一个包含多个工作表的工作簿,每个工作表都包含一个库存清单。在该工作簿中,我有另一个“生成订单”工作表,其中包含一个表,我已设置该表以合并其他工作表中的数据。我想要该工作表上的一个名为“导出订单”的按钮,它将generateOrder 表的内容导出为 .csv 文件。
要注意的是,为了将订单上传到供应商的系统,.csv 文件必须只包含商品编号和数量,设置为“数量,数量”,每件商品单独一行。
目前我已经设置了这个宏:
Sub export_button()
Dim tbl As ListObject
Dim csvFilePath As String
Dim fNum As Integer
Dim tblArr
Dim rowArr
Dim csvVal
Set tbl = Worksheets("Generate Order").ListObjects("generateOrder")
csvFilePath = "C:\Users\username\Desktop\order.csv"
tblArr = tbl.DataBodyRange.Value
fNum = FreeFile()
Open csvFilePath For Output As #fNum
For i = 1 To UBound(tblArr)
rowArr = Application.Index(tblArr, i, 0)
csvVal = VBA.Join(rowArr, ",")
Print #1, csvVal
Next
Close #fNum
Set tblArr = Nothing
Set rowArr = Nothing
Set csvVal = Nothing
End Sub
通过大量谷歌搜索,我设法让它工作,以便它导出 generateOrder 的内容并将其保存为 .csv,但我正在尝试找出以下修改:
- 我只想导出名为
PUBLISHER ITEM #、REORDER QTY的两列(按此顺序)。如果重要的话,第一列标题中的 PUBLISHER 和 ITEM 之间有一个换行符。 - 我希望将文件命名为
value in cell C3-order-current date.csv - 如果它们不存在,我希望宏在工作簿所在的同一文件夹中创建一个名为“Orders”的子文件夹,然后在 Orders 中创建一个名为
value in cell C3的子文件夹,然后保存那里的文件(而不是像现在那样放到桌面上)。
我需要弄清楚所有这些,但如果你至少可以帮助我弄清楚如何只获取两列,我可以尝试弄清楚如何以我想要的方式保存它。非常感谢!
【问题讨论】: