代码之家  ›  专栏  ›  技术社区  ›  gideonzane

使用Excel宏修改CSV

  •  0
  • gideonzane  · 技术社区  · 7 年前

    我正试图从CSV中提取信息( 学生数据。csv )总之。我已经确定,由于制作CSV的数据库中的一些格式,Word识别出有n行,但它正在计算回车 在生产线内 作为其中一条线,导致我实际上没有达到EOF。

    i、 e:以下信息被视为两行,因此我的计数不正确。

    All of this information
    is stored in one cell
    

    经过几个小时的不同尝试,我决定在一个单独的Excel工作簿中编写一个脚本( 快跑。xlsm )格式化 学生数据。csv .不幸的是,我遇到了麻烦;当我尝试将CSV作为工作簿打开并检索文件名时,它会返回 快跑。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识别为工作簿,因此默认为 快跑。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 回复  |  直到 7 年前
    推荐文章