Por que não vejo esse código como uma macro no Excel?

2

Eu tentei usar um pouco de código fornecido a partir desta Resposta de super usuário anterior:

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

Inseri o código "Sub OpenCsvAsText ... End Sub" em um módulo da minha pasta de trabalho do Excel 2010. No entanto, não consigo descobrir como executá-lo. Ele não aparece na lista de macros disponíveis, mesmo que outras macros (eu defino a segurança para habilitar todas as macros). Na página acima, o uso é especificado como:

OpenCsvAsText "C:\MyDir\MyFile.txt"

Eu devo executar isso a partir da linha de comando ou de um prompt no Excel? Se sim, onde?

    
por Samizdat2003 29.05.2013 / 16:19

1 resposta

1

No módulo em que você colou a referência Sub acima, crie uma Macro para executar o Sub.

Sub Macro_OpenCsvAsText()

Dim strfilepath_input As String 'create a variable to receive the filename from the macro

strfilepath_input = InputBox("Enter a filename", "Open CSV as Text", vbOKCancel) 'create an input box to ask for a name

OpenCsvAsText (strfilepath_input) 'run the sub you already copied to a module in your workbook

'add some error trapping in case you don't add a name, or the name is invalid

End Sub

Você pode adicionar alguma sofisticação usando uma caixa de diálogo de pesquisa para navegar até um arquivo, em vez de digitá-lo. Além disso, não esqueça sua interceptação de erro, ou você estará procurando por todo o lugar.

    
por 29.05.2013 / 16:25