Импорт CSV в Excel, CSV

У меня есть рабочая книга excel 2007 с текущим рабочим листом с именем «a». Теперь я хочу,

Когда пользователь нажимает кнопку на листе a, он должен спросить:
Какой CSV-файл импортировать,
Запросить имя этого нового листа, которое хочет пользователь (куда следует поместить этот CSV-файл). Скажите, чтобы упростить пользователя говорит "b" сейчас.
После этого скопируйте "лист a" в новый лист b. Импортируйте CSV-файл на этот новый лист, разделив его запятыми, и разрешите перезапись существующих ячеек в скопированном листе.
Какой код может быть основным кодом начального уровня для выполнения всех этих задач?

Буду благодарен за любую помощь в этом плане.

Спасибо
Сал


person Sal    schedule 23.07.2013    source источник
comment
Попробуйте при этом записать макрос — используйте его как отправную точку.   -  person Tim Williams    schedule 23.07.2013


Ответы (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
person Kamal G    schedule 23.07.2013
comment
& Есть ли способ переименовать мой новый рабочий лист с именем файла csv, выбранным пользователем? Спасибо Сал - person Sal; 24.07.2013