如何在VBA

时间:2015-06-09 09:52:40

标签: excel-vba csv vba excel

我有大约30个文件要执行相同的分析。理想情况下,我希望VBA打开所有文件并提取某些(相同的)信息。但是,我不知道如何为它编写函数。我正在考虑将所有文件保存为CSV并导入到python(我熟悉的语言),这将使我的数据分析更容易。我导入excel的原因是因为python难以读取.TX0文件(逐行解析会非常耗时)。

这就是我对csv转换的看法。我如何将其转换为多个文件的提取?

Sub TX0_CSV()
'
' TX0_CSV Macro
'

'
    Workbooks.OpenText Filename:="X/.....fid002.TX0", Origin:= _
        xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote _
        , ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=True _
        , Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), _
        Array(3, 1), Array(4, 1)), TrailingMinusNumbers:=True

    Range("A1:O13").Select
    Range("O13").Activate
    Selection.ClearContents
    Rows("15:16").Select
    Selection.Delete Shift:=xlUp
    ActiveWindow.SmallScroll Down:=9
    Range("A20:H29").Select
    Range("H29").Activate
    Selection.ClearContents
    Range("J19").Select
    ActiveWorkbook.SaveAs Filename:="X:\Joey\FID002.csv", FileFormat:=xlCSV, _
        CreateBackup:=False
End Sub

1 个答案:

答案 0 :(得分:1)

您可以将其转换为子,然后重复调用它。

以下是一个示例(未经测试)另请注意我们如何摆脱.Activate.Select。您可能希望看到This

Sub ConvertFile(flName As String, newFileName As String)
    Dim wb As Workbook
    Dim ws As Worksheet

    Workbooks.OpenText Filename:=flName, Origin:= _
    xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote _
    , ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=True _
    , Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), _
    Array(3, 1), Array(4, 1)), TrailingMinusNumbers:=True

    Set wb = ActiveWorkbook

    Set ws = wb.Sheets(1)

    With ws
        .Range("A1:O13").ClearContents
        .Rows("15:16").Delete Shift:=xlUp
        .Range("A20:H29").ClearContents
    End With

    wb.SaveAs Filename:=newFileName, FileFormat:=xlCSV

    wb.Close (False)
End Sub

实施例

Sub Sample()
    ConvertFile "C:\Test1.dat", "C:\Test2.dat"
End Sub