使用VBA脚本

时间:2016-09-27 14:05:05

标签: excel vba excel-vba csv

此功能用于打开CSV文件,并将所有数据导入Excel工作簿中的特定工作表。

但我认为在某些情况下我会用分隔符来解决某些问题。

这是我的功能:

Sub LoopAllExcelFilesInFolder_Invenotry()

  Dim strFilename As String
  Dim wsMstr  As Worksheet:   Set wsMstr = ThisWorkbook.Sheets("ALL_ACTIUS")

  If MsgBox("Erase sheet before start importing?", vbYesNo, "Delete?") _
= vbYes Then wsMstr.UsedRange.Clear

  strFilename = Application.GetOpenFilename _
                (FileFilter:="CSV File (*.csv), *.csv", _
                Title:="Select CSV file: ")

 Worksheets("ALL_MACHINES").Activate
 With ActiveSheet.QueryTables.Add(Connection:= _
    "TEXT;" & strFilename, _
    Destination:=Range("A1"))
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .TextFilePromptOnRefresh = False
    .TextFilePlatform = 1252
    .TextFileStartRow = 1
    .TextFileParseType = xlDelimited
    .TextFileTextQualifier = xlTextQualifierDoubleQuote
    .TextFileConsecutiveDelimiter = False
    .TextFileTabDelimiter = True
    .TextFileSemicolonDelimiter = True
    .TextFileCommaDelimiter = False
    .TextFileSpaceDelimiter = False
    .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
    .TextFileTrailingMinusNumbers = True
    .Refresh BackgroundQuery:=False
 End With

End Sub

这是源代码(CSV文件)的一部分,包含一条未按预期“转换”的行:

enter image description here

在这里,您可以看到此行如何转换为Excel。 12X5“字符串不应该在那里。第一列应该只包含IP地址。

enter image description here

我很确定这是一个分隔字符问题,但我找不到解决方案。

1 个答案:

答案 0 :(得分:0)

Workbooks.Open命令对我有用处。

Dim wb As Workbook

strFilename = "yourfilename.csv"

Set wb = Workbooks.Open(Filename:=strFilename, local:=True)