将csv导入Excel,CSV

时间:2013-07-23 02:28:52

标签: vba csv import excel-2007 overwrite

我有一个excel 2007工作簿,当前工作表名为'a'现在我想要的是,

当用户点击表单a中的按钮时,应该询问,
要导入哪个csv文件,
询问用户想要的新表的名称(放置csv文件的位置)..说简化用户现在说'b'。
之后将'sheet a'复制到新工作表b中。 将csv导入到新工作表中,逗号分隔,并在复制的工作表中允许覆盖现有单元格。 什么是基本的起始级代码来完成所有这些任务?

对于这方面的任何帮助,我将不胜感激。

感谢
萨尔

1 个答案:

答案 0 :(得分:1)

试试这个:

    Public strFile As String

    Sub Main()

    Dim WS As Worksheet

        strFile = Application.GetOpenFilename("Excel workbooks,*.csv*")
        If strFile = "False" Then
            ' the user clicked Cancel
        Else

        y = Right(strFile, Len(strFile) - InStrRev(strFile, "\", -1, vbTextCompare))

        zz = Left(y, InStr(1, y, ".", vbTextCompare) - 1)


        flag = 0
            For k = 1 To Worksheets.Count
                If Sheets(k).Name = zz Then
                    flag = 1
                End If
            Next
                 Set WS = Sheets.Add(After:=Sheets(Worksheets.Count))
            If flag = 0 Then
                 WS.Name = zz
            Else
                MsgBox ("Sheet with same name already exist. Imported to default sheet")
            End If


            importcsv
        End If
    End Sub


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