将工作表保存为Excel中的CSV

我有一个6工作表excel电子表格,我想输出3张作为CSV。 我发现这个真棒macros: 保存工作簿中的每个工作表以分隔CSV文件

这是干嘛的! 我试图稍微修改它,但我相当生锈的VB,所以我很挣扎。 如果有人能给我一些关于如何对这个macros进行修改的指针,那将是非常棒的:

  1. 目前,它输出所有6张作为CSV …我只需要3,我可以在这种情况下硬链接的名称。 我看到macros循环工作表并导出它,改变什么是工作表数组包含什么是最好的方法?

  2. 这个电子表格被用来生成configuration文件,所以它在不同的时间用于不同大小的批次。 在问题单上,我有公式“填充”到100行…所以如果它用于10行,逗号的90行需要从CSV的末尾删除。 Bt这个数字是可变的…我在想,它会很高兴看到input表(称为“数据”),看看有多less行被填充来决定有多less行输出?

看看现有的macros,我想将“EndRow”variables设置到“数据”表中的最后一行,在列中有一些东西。所以我需要遍历列,testing单元格的内容,然后更新variables但是如何select表单/列来做到这一点?

3)我可以将这个macros应用于其中一张纸上的button吗?

  1. 解决,添加一个数组到工作表上的For循环包含我想要导出的3张:

    For Each wsSheet In Worksheets(Array("UDP", "Users", "Unity")) 
  2. 解决了,从现有的公式改为(在外):

     EndRow = ThisWorkbook.Worksheets("Data").Range("M" & Rows.Count).End(xlUp).Row 
  3. 链接已解决,谢谢添加CommandButton,很好地工作。

1)当它循环显示表单时,你可以在这个时候提示用户inputmsgbox“你想导出吗?如果select'yes',那么它会导出。如果select'no',它会跳过它并转到下一张表格:

 For Each wsSheet In Worksheets wsSheet.Activate If MsgBox("Do you want to export " & wsSheet.Name & " ?", vbYesNo) = vbYes Then 'User has selected to export that sheet nFileNum = FreeFile Open csvPath & "\" & _ wsSheet.Name & ".csv" For Output As #nFileNum ExportToTextFile CStr(nFileNum), Sep, False Close nFileNum End If Next wsSheet 

2)当前没有数据的空行是什么? 你可以发布一个在这100行的公式吗?

3)你确实可以。 这里有一些很好的网站,你可以从这里学习: