【问题标题】:Saving worksheets as CSVs from excel从 Excel 将工作表另存为 CSV
【发布时间】:2015-02-24 03:28:06
【问题描述】:

我有一个包含 6 个工作表的 Excel 电子表格,我想将 3 个工作表输出为 CSV。我发现了这个很棒的宏:Save each sheet in a workbook to separate CSV files

它做到了!我正在尝试稍微修改它,但我对 VB 相当生疏,所以我很挣扎。如果有人能给我一些关于如何对这个宏进行这些修改的指示,那就太棒了:

  1. 目前,它将所有 6 个工作表输出为 CSV... 我只需要 3 个,在这种情况下我可以硬链接名称。我看到宏循环遍历 Worksheets 并将其导出,更改 Worksheets 数组包含的内容的最佳方法是什么?

  2. 此电子表格用于生成配置文件,因此在不同时间用于不同大小的批次。在有问题的表格上,我将公式“填充”到 100 行......所以如果它用于 10 行,则需要从 CSV 末尾删除 90 行逗号。 Bt 这个数字是可变的...我在想,看看输入表(称为“数据”)并查看填写了多少行来决定要导出多少行会很棒?

查看现有的宏,我想将“EndRow”变量设置为“数据”表上 M 列中有内容的最后一行。所以我需要遍历该列,然后测试单元格的内容更新变量,但我如何选择工作表/列来做到这一点?

3) 我可以将此宏应用到其中一张纸上的按钮吗?

【问题讨论】:

    标签: excel csv vba


    【解决方案1】:
    1. 已解决,在 For 循环的 Worksheets 中添加了一个数组,其中包含我要导出的 3 张工作表:

      For Each wsSheet In Worksheets(Array("UDP", "Users", "Unity")) 
      
    2. 已解决,将 Endow 从现有公式更改为(在 With 之外):

      EndRow = ThisWorkbook.Worksheets("Data").Range("M" & Rows.Count).End(xlUp).Row 
      
    3. 上面的链接已解决,感谢添加命令按钮,效果很好。

    【讨论】:

      【解决方案2】:

      1) 当它遍历工作表时,您可以在此时提示用户一个 msgbox “您要导出吗?如果他们选择'是',那么它将导出。如果他们选择'否',它将跳过它并转到下一张:

      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) 你当然可以。以下是一些您可以从中学习的好网站:

      【讨论】:

      • 1) 我会看一下,但它总是需要导出相同的 3 张纸,所以在设置它之前。 2) 无 - 公式设置为仅在使用行时填充单元格,例如:'=IF(Data!A2"",Data!A2,"")'。但是因为使用了单元格,所以导出将行添加为逗号的空白部分 3) 我会读一读,谢谢!
      • 1) 已解决,在 For 循环上向 Worksheets 添加了一个数组,其中包含我要导出的 3 张工作表: For Each wsSheet In Worksheets(Array("UDP", "Users", "Unity") ) 3) 上面的链接已解决,感谢添加了 CommandButton,效果很好。 2)还需要解决。
      • 我认为您可能必须编写一个宏来删除公式返回的单元格“”excelbanter.com/showthread.php?t=13416
      • 这是对您找到的那个宏的一个很好的补充。来自我的 +1。
      猜你喜欢
      • 2012-06-03
      • 2011-11-11
      • 1970-01-01
      • 2017-09-22
      • 2012-03-16
      • 2019-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多