Excel VBA导出数据为CSV

时间:2017-08-04 05:18:56

标签: excel excel-vba csv export-to-csv vba

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

  1. 选择具有指定工作表名称的工作表。
  2. 从工作表中选择第一列数据的长度大于一的所有行
  3. 将所选数据导出为指定目录中的CSV文件。
  4. 我对Excel VBA有一个非常基本的了解,我们将不胜感激。

    谢谢,

2 个答案:

答案 0 :(得分:0)

我将为您提供一些示例代码。由于我们不是在编写完整的代码,因此您需要更深入地将代码放在一起。

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

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

<强>概要

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

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

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

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

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

答案 1 :(得分:0)

这应该让你非常接近你想要的地方。

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