Excel:在.csv导出宏

时间:2018-05-31 20:14:49

标签: excel vba excel-vba csv

我有一个包含多个工作表的工作簿,每个工作表都包含一个库存清单。在该工作簿中,我有另一个"生成订单"包含表格的工作表,我已将其设置为合并其他工作表中的数据。我希望该表上有一个名为" Export Order,"它会将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 - 订单 - current date。csv
  • 如果它们不存在,我希望宏创建一个名为" Orders"的子文件夹。在工作簿所在的同一文件夹中,然后在名为value in cell C3的订单中创建一个子文件夹,然后将文件保存在那里(而不是像当前那样保存到桌面)。

我需要弄清楚所有这一切,但如果你至少可以帮我弄清楚如何只获得两列,我可以尝试找出如何以我想要的方式保存它。非常感谢!

1 个答案:

答案 0 :(得分:1)

从listobject的标题行中收集两个所需列的列索引号,并使用它们来解析databodyrange值数组。

?dplyr::if_else

请注意,我在发布商之后没有空格dim c1 as long, c2 as long Set tbl = Worksheets("Generate Order").ListObjects("generateOrder") csvFilePath = "C:\Users\username\Desktop\order.csv" tblArr = tbl.DataBodyRange.Value 'you should really know where the two columns are but this should fetch their 'position from the header row. Hard-code the positions if you run into trouble. c1 = application.match("publisher" & vblf & "item #", tbl.HeaderRowRange, 0) c2 = application.match("reorder qty", tbl.HeaderRowRange, 0) fNum = FreeFile() Open csvFilePath For Output As #fNum For i = LBound(tblArr, 1) To UBound(tblArr, 1) csvVal = Join(array(tblArr(i, c1), tblArr(i, c2)), ",") Print #1, csvVal Next 。 excel单元格中的多行值仅使用换行符;没有回车和换行。

相关问题