1

在这个论坛的帮助下,已经能够解决大多数问题,但这让我陷入了困境。

我有一个隐藏在文件中的逗号分隔csv文件(“xxxx”,“zzz”,) 。如果我使用脚本来替换这两个字符,我会丢失记录的结尾, 因此只能作为一条记录导入。chr(10)chr(13)chr(10)

在记事本中,文件显示完美 - 每行一条记录。如果我作为 excel 文件打开就可以了,只有当我作为 csv 分隔文件导入时

感谢其他贡献者,以下是我一直在使用的。

理想情况下,我想做的是:

  1. 选择 csv 文件
  2. 复制文件以保留原始 <<< 额外功能
  3. 清除所有会影响导入的隐藏字符
  4. 然后导入

-

Private Sub CSV_ImportRepl()
    Dim strFile As String
    Dim strBuffer As String
    Dim ff As Integer
    Dim strFileName As String
    Dim ws As Worksheet

    'ENTRIES CSV FILE ----------------------------------
    ' ---open file ----------
    strFile = Application.GetOpenFilename("Text Files (*.csv),*.*", _
    , "SELECT ENTRIES csv FILE")
    strFileName = strFile
    MsgBox strFileName

    ' ---start cleaning file ----------
    strBuffer = Space(FileLen(strFile))
    ff = FreeFile
    Open strFile For Binary Access Read As #ff
    Get #ff, , strBuffer
    Close #ff

    strBuffer = Replace(strBuffer, Chr(13), "")
    Kill strFile

    Open strFile For Binary Access Write As #ff
    Put #ff, , strBuffer
    Close #ff

    ' --- clear contents & import  ----------
    Sheets("Entries").Cells.ClearContents
    Set ws = ActiveWorkbook.Sheets("Entries") 'set to current worksheet name
    strFile = strFileName

    With ws.QueryTables.Add(Connection:="TEXT;" & strFile, _
    Destination:=ws.Range("A1"))
         .TextFileParseType = xlDelimited
         .TextFileCommaDelimiter = True
         .Refresh
    End With
End Sub

非常感激任何的帮助。

4

1 回答 1

1
Sub opencsv()

    strFile = Application.GetOpenFilename("Text Files (*.csv),*.*", , "Please selec text file...")
    strFileName = strFile

    Set src = Workbooks.Open(Filename:=strFile, Local:=True)
    Cells.Copy
    ThisWorkbook.Activate
    Sheets("Entries").Activate
    Range("A1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    src.Close

End Sub
于 2013-09-22T12:59:24.073 回答