2

Я попытался использовать немного кода, предоставленного из этого предыдущего Ответа супер пользователя:

Sub OpenCsvAsText(ByVal strFilepath As String)

    Dim intFileNo As Integer
    Dim iCol As Long
    Dim nCol As Long
    Dim strLine As String
    Dim varColumnFormat As Variant
    Dim varTemp As Variant

    '// Read first line of file to figure out how many columns there are
    intFileNo = FreeFile()
    Open strFilepath For Input As #intFileNo
    Line Input #intFileNo, strLine
    Close #intFileNo
    varTemp = Split(strLine, ",")
    nCol = UBound(varTemp) + 1

    '// Prepare description of column format
    ReDim varColumnFormat(0 To nCol - 1)
    For iCol = 1 To nCol
        varColumnFormat(iCol - 1) = Array(iCol, xlTextFormat)
        ' What's this? See VBA help for OpenText method (FieldInfo argument).
    Next iCol

    '// Open the file using the specified column formats
    Workbooks.OpenText _
            Filename:=strFilepath, _
            DataType:=xlDelimited, _
            ConsecutiveDelimiter:=False, Comma:=True, _
            FieldInfo:=varColumnFormat

End Sub

Я вставил "Sub OpenCsvAsText ... Конец подпрограммы »в модуль в моей книге Excel 2010. Однако я не могу понять, как его запустить. Он не отображается в списке доступных макросов, хотя другие макросы появляются (я установил безопасность, чтобы включить все макросы.) На странице выше использование указано как:

OpenCsvAsText "C:\MyDir\MyFile.txt"

Я должен запустить это из командной строки или из командной строки в Excel? Если так, то где?

1 ответ1

1

В модуле, куда вы вставили Sub, на который вы ссылаетесь выше, создайте макрос для запуска Sub.

Sub Macro_OpenCsvAsText()

Dim strfilepath_input As String 'создать переменную для получения имени файла из макроса

strfilepath_input = InputBox("Введите имя файла", "Открыть CSV как текст", vbOKCancel) 'создать поле ввода для запроса имени

OpenCsvAsText (strfilepath_input) 'запустить подпрограмму, которую вы уже скопировали в модуль в своей книге

'добавить несколько сообщений об ошибках в случае, если вы не добавили имя или имя неверно

End Sub

Вы можете добавить некоторую изощренность, используя диалог поиска для перехода к файлу, вместо того, чтобы вводить его. Кроме того, не забывайте о том, что вы перехватываете сообщения об ошибках, иначе повсюду будете гоняться за отладками.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .