使用Excel宏修改CSV

时间:2018-11-15 22:46:37

标签: excel vba csv ms-word

我正在尝试从Word中的CSV( studentData.csv )中提取信息。我已经确定,由于数据库是从某种格式生成问题CSV的,因此Word识别出有n行,但它会将行自身中的回车 视为其中之一,导致我实际上未达到EOF。

即:以下信息被视为两行,因此不算我的计数。

All of this information
is stored in one cell

经过数小时的不同尝试,我决定在一个单独的Excel工作簿( runMe.xlsm )中编写一个脚本,以格式化 studentData.csv 。不幸的是,我一直在撞墙。当我尝试打开CSV作为工作簿并检索文件名时,它返回的是 runMe.xlsm 。下面是我的代码:

Sub testingStuff()

    Dim r      'Rows that contain data
    Dim wb As Workbook, sh As Worksheet, p As String

    'Set wb = Workbooks.Open(filename:="\...\studentData.csv", local:=True)

    p = Dir("\...\studentData.csv")
    Debug.Print p

    Set wb = Workbooks.Open(p)
    Debug.Print wb.path & ": " & wb.Name  'checking the path

    Set sh = wb.Sheets(1)

    r = Application.WorksheetFunction.CountA(sh.Range("O:O"))

    Debug.Print wb.Name & ": " & sh.Name & ": " & r

End Sub

这是我的即时窗口:

studentData.csv
\...\: runMe.xlsm
runMe.xlsm: Sheet1: 0

我完全不确定为什么要返回控制文件名-我只能假设代码无法将CSV识别为工作簿,因此默认为 runMe.xlsm

我应该注意CSV和xlsm文件都在同一文件夹中。

那么,我应该如何格式化呢?我写了一个简短的宏:

    r = Application.WorksheetFunction.CountA(sh.Range("O:O"))

        With ActiveWorkbook.ActiveSheet
            For i = 1 To r
               .Cells(i, 15).Value = Replace(.Cells(i, 15).Value, vbNewLine, "")
            Next
        End With

我只需要一种应用它的方法。或者,我什至不必麻烦设置CSV格式-我可以在Word中解决这个问题吗?

0 个答案:

没有答案