【问题标题】:Excel VBA Export data as CSVExcel VBA 将数据导出为 CSV
【发布时间】:2018-01-11 22:01:44
【问题描述】:

我有一个包含多张工作表的 Excel 文件。我需要一个执行以下操作的宏。

  1. 选择具有指定工作表名称的工作表。
  2. 从工作表中选择第一列数据长度大于一的所有行
  3. 将选定的数据导出为指定目录中的 CSV 文件。

我对 Excel VBA 有非常基本的了解,如果能提供任何帮助,我将不胜感激。

谢谢,

【问题讨论】:

    标签: excel csv export-to-csv vba


    【解决方案1】:

    这应该让您非常接近您想要的位置。

    Public Sub SaveWorksheetsAsCsv()
    Dim xWs As Worksheet
    Dim xDir As String
    Dim folder As FileDialog
    Set folder = Application.FileDialog(msoFileDialogFolderPicker)
    If folder.Show <> -1 Then Exit Sub
    xDir = folder.SelectedItems(1)
    For Each xWs In Application.ActiveWorkbook.Worksheets
    xWs.SaveAs xDir & "\" & xWs.Name, xlCSV
    Next
    End Sub
    

    【讨论】:

      【解决方案2】:

      我将为您提供一些示例代码。由于我们不是来编写整个代码的,因此您的任务是更深入地将代码组合在一起。

      1.如果要选择sheet,需要调用sheet对象的Select方法。有多种引用工作表的方式,但最常见的 (IMO) 是 Sheets("Name of the sheet").Select

      2a. 选择单元格的过程是相同的,但是您必须使用单元格对象而不是工作表,即:Cells(r, c).Select(同样,这不是唯一的方法引用单元格,另一个:Range("A1").Select),其中rc 分别是表示行和列的整数。一般需要在Range类型的对象上调用Select

      摘要

      到目前为止,我介绍了如何在工作簿中选择特定对象,但这并不是最佳的方法。除非您需要明确选择事物,否则我不会这样做。相反,您可以使用以下语法获取某些工作表中某些单元格的值:

      Sheets("SheetName").Cells(r, c).Value
      

      这是前面代码部分的组合,它访问名为SheetName 的工作表中r 行和c 列中的单元格的值,而不选择任何内容。这样您就可以设置或获取值。

      2b.如果你想测试一些东西,比如条件,使用If 语句。在您的情况下,它看起来像:

      If Len( Sheets("SheetName").Cells(r, c).Value ) > 1 Then
          'do something if it's true
      Else
          'do something if it's false
      End If
      

      3. 您必须创建一些字符串变量,例如Dim content As String,您可以在其中附加所有通过测试的单元格中的数据。毕竟,您可以将这个文本变量写入文件。这可能有用:How to create and write to a txt file using VBA

      另外,你需要遍历所有的行,所以你需要循环语句,去这里了解更多细节:Loops in VBA

      我希望这会给你一些关于做什么和怎么做的线索:)

      【讨论】:

        猜你喜欢
        • 2013-10-17
        • 2017-04-28
        • 2019-03-10
        • 1970-01-01
        • 2018-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-07
        相关资源
        最近更新 更多