将表格从Excel导出为CSV

时间:2010-04-21 21:27:35

标签: excel vba excel-vba

我正在创建一个电子表格,以帮助简化数据输入我们的系统之一。他们将库存物品输入此电子表格以计算物料的单位成本(物料成本+税收+ S& H)。我们购买的软件不能这样做。

Aan发票可以有一行或多行(duh!),我计算最终的单位成本。这工作正常。然后,我想从中获取该数据并创建一个CSV,以便将它们加载到我们的库存系统中。我目前有一个第二个选项卡,其布局类似于我想要的CSV,我做了一个相同的单元格(= Sheet!A3)来获取“导出工作表”上的值。问题是当他们将其保存为CSV时,有许多空行需要删除才能上传。我想要一个只包含所需数据的文件。

我确信这可以在VBA中完成,但我不知道从哪里开始或知道如何搜索示例来启动。任何方向或其他选择将不胜感激。

3 个答案:

答案 0 :(得分:2)

看看Range.SpecialCells(xlBlanks).EntireRow.Delete,我认为这就是你要找的东西!

答案 1 :(得分:0)

this page上的解决方案对我来说效果最好。我只需修改它以使其能够满足我的需要。

答案 2 :(得分:0)

扩展@dwo的答案 - 此代码将允许您删除空白行并导出为CSV:

Sub export_to_csv(sheetname As String, OutDir As String)
    Sheets(sheetname).Select
    Set wb = ActiveWorkbook
    Set newwb = Workbooks.Add()
    wb.ActiveSheet.Copy newwb.ActiveSheet 'copy sheet to new workbook
    newwb.ActiveSheet.Activate
    ActiveSheet.UsedRange 'refresh the used range
    Range("A1:A" & ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row).Select 'select relevant cells
    Selection.SpecialCells(xlBlanks).EntireRow.Delete 'remove empty rows
    Application.DisplayAlerts = False 'avoid warning message when overwriting existing files
    newwb.SaveAs OutDir & sheetname, xlCSVWindows 'save as CSV
    newwb.Close 'close new workbook
    Application.DisplayAlerts = True 'reset warning messages
End Sub

Sub test()
    export_to_csv sheetname:="Sheet1", OutDir:="C:\temp\"
End Sub