将工作表从Excel导出为CSV

问题描述:

我正在创建电子表格以帮助缓解数据输入到我们的系统之一。他们将库存物品输入此电子表格以计算物料的单位成本(物料成本+税+ S & H)。我们购买的软件无法做到这一点。将工作表从Excel导出为CSV

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

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

this page的解决方案对我来说效果最佳。我只是不得不修改它,以便它能够满足我需要的功能。

看看Range.SpecialCells(xlBlanks).EntireRow.Delete,我想这就是你要找的!

+0

这是伟大的,但有编写VBA做这样的事情一个很好的教程? – 2010-04-22 13:13:15

扩大对@ 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