我正在创建一个电子表格,以帮助简化数据输入我们的系统之一。他们将库存物品输入此电子表格以计算物料的单位成本(物料成本+税收+ S& H)。我们购买的软件不能这样做。
Aan发票可以有一行或多行(duh!),我计算最终的单位成本。这工作正常。然后,我想从中获取该数据并创建一个CSV,以便将它们加载到我们的库存系统中。我目前有一个第二个选项卡,其布局类似于我想要的CSV,我做了一个相同的单元格(= Sheet!A3)来获取“导出工作表”上的值。问题是当他们将其保存为CSV时,有许多空行需要删除才能上传。我想要一个只包含所需数据的文件。
我确信这可以在VBA中完成,但我不知道从哪里开始或知道如何搜索示例来启动。任何方向或其他选择将不胜感激。
答案 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