Artigo: 272729 - Última revisão: segunda-feira, 29 de Janeiro de 2007 - Revisão: 5.2

Como importar dados com mais de 256 campos ou colunas para o Excel

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Expandir tudo | Reduzir tudo

Sumário

Folhas de cálculo do Microsoft Excel tem 256 colunas (coluna IV). Por conseguinte, o Excel não pode aceitar dados com mais de 256 campos por registo numa folha de cálculo. Quando tenta importar manualmente dados de um ficheiro de base de dados ou texto com campos de mais de 256 por registo, os campos adicionais são truncados a partir dos registos.

Pode utilizar uma macro do Visual Basic for Applications para importar os dados em várias folhas. Este artigo fornece uma macro de exemplo que importa uma base de dados Comma Separated variável (CSV) formatada com campos até 510 para Excel. A macro coloca primeiro 256 campos na folha do livro e os campos restantes (começando com o campo 257th) na segunda folha no livro.

Mais Informação

A Microsoft fornece exemplos de programação apenas, para fins sem garantia expressa ou implícita. Isto inclui, mas não está limitado a, as garantias implícitas de comercialização ou adequação a um fim específico. Este artigo pressupõe que está familiarizado com a linguagem de programação apresentada e as ferramentas que são utilizadas para criar e depurar procedimentos. Os técnicos de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento, mas não modificarão estes exemplos para proporcionarem funcionalidades adicionais nem criarão procedimentos adaptados às necessidades específicas do utilizador. Se a base de dados estiver num formato diferente CSV, voltar a guardar a base de dados no formato CSV antes de importá-lo utilizando a seguinte macro.
  1. Inicie ou mude para o Excel.
  2. No menu Ferramentas , aponte para macro e, em seguida, clique em Editor do Visual Basic .
  3. No menu Inserir , clique em módulo .
  4. No módulo, escreva o seguinte código:
    Sub LargeDatabaseImport()
    
        'In the event of an error, make sure the application is reset to
        'normal.
        On Error GoTo ErrorCheck
    
        'Dimension Variables
        Dim ResultStr As String
        Dim FileName As String
        Dim FileNum As Integer
        Dim Counter As Double
        Dim CommaCount As Integer
        Dim WorkResult As String
    
        'Ask for the name of the file.
        FileName = InputBox("Please type the name of your text file, for example, test.txt")
    
        'Turn off ScreenUpdating and Events so that users can't see what is 
        'happening and can't affect the code while it is running.
        Application.ScreenUpdating = False
        Application.EnableEvents = False
    
        'Check for no entry.
        If FileName = "" Then End
        
        'Get next available file handle number.
        FileNum = FreeFile()
        
        'Open text file for input.
        Open FileName For Input As #FileNum
        
        'Turn ScreenUpdating off.
        Application.ScreenUpdating = False
    
        'Set the counter to 1.
        Counter = 1
    
        'Place the data in the first row of the column.
        Range("A1").Activate
    
        'Loop until the end of file is reached.
        Do While Seek(FileNum) <= LOF(FileNum)
    
            'Show row number being imported on status bar.
            Application.StatusBar = "Importing Row " & _
                    Counter & " of text file " & FileName
    
            'Store one line of text from file to variable.
            Line Input #FileNum, ResultStr
    
            'Initialize the CommaCount variable to zero.
            CommaCount = 0
            
            'Store the entire string into a second, temporary string.
            WorkResult = ResultStr
    
            'Parse through the first line of data and separate out records 
            '257 to 510.
            While CommaCount < 255
    
                WorkResult = Right(WorkResult, Len(WorkResult) - InStr(1, WorkResult, ","))
                CommaCount = CommaCount + 1
    
            Wend
    
            'Parse out any leading spaces.
            If Left(WorkResult, 1) = " " Then WorkResult = Right(WorkResult, Len(WorkResult) - 1)
    
            'Ensure that any records that contain an "=" sign are 
            'brought in as text, and set the value of the current
            'cell to the first 256 records.
            If Left(WorkResult, 1) = "=" Then
                ActiveCell.Value = "'" & Left(ResultStr, Len(ResultStr) - Len(WorkResult))
            Else
                ActiveCell.Value = Left(ResultStr, Len(ResultStr) - Len(WorkResult))
            End If
    
            'Ensure that any records that contain an "=" sign are 
            'brought in as text,and set the value of the next cell 
            'to the last 256 records.
            If Left(WorkResult, 1) = "=" Then
                ActiveCell.Offset(0, 1).Value = "'" & WorkResult
            Else
                ActiveCell.Offset(0, 1).Value = WorkResult
            End If
    
            'Move down one cell.
            ActiveCell.Offset(1, 0).Activate
    
            'Increment the Counter by 1.
            Counter = Counter + 1
    
            'Start again at top of 'Do While' statement.
        Loop
    
        'Close the open text file.
        Close
    
        'Take records 257-510 and move them to sheet two.
        Columns("B:B").Select
        Selection.Cut
        Sheets("Sheet2").Select
        Columns("A:A").Select
        ActiveSheet.Paste
    
        'Run the text-to-columns wizard on both sheets.
        Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
                TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
                Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
                :=Array(Array(1, 1), Array(2, 1), Array(3, 1))
        Sheets("Sheet1").Select
        Columns("A:A").Select
        Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
                TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
                Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
                :=Array(Array(1, 1), Array(2, 1), Array(3, 1))
    
        'Reset the application to its normal operating environment.
        Application.StatusBar = False
        Application.EnableEvents = True
        Application.ScreenUpdating = True
    
        Exit Sub
    
    ErrorCheck:
    
        'Reset the application to its normal operating environment.
        Application.StatusBar = False
        Application.EnableEvents = True
        Application.ScreenUpdating = True
        MsgBox "An error occured in the code."
    
    End Sub
    						
  5. No menu ficheiro , clique em Close and Return to Microsoft Excel .
  6. No menu Ferramentas , aponte para macro e, em seguida, clique em macros .
  7. Na lista de macros, seleccione a macro LargeDatabaseImport . Clique em Executar .
  8. Na caixa de diálogo que aparece, escreva o caminho e o nome do ficheiro CSV que pretende importar.

Referências

Para mais informações sobre como utilizar o código de exemplo neste artigo, clique no número de artigo existente abaixo para visualizar o artigo na base de dados de conhecimento da Microsoft:
212536  (http://support.microsoft.com/kb/212536/EN-US/ ) OFF2000: Como executar códigos de exemplo a partir de artigos da base de dados de conhecimento da Microsoft
Para obter informações adicionais sobre como obter ajuda com forApplications do Visual Basic, clique no número de artigo existente abaixo para visualizar o artigo na base de dados de conhecimento da Microsoft:
226118  (http://support.microsoft.com/kb/226118/EN-US/ ) OFF2000: Recursos de programação do Visual Basic for Applications
Para obter informações adicionais sobre as especificações do Excel e limiatons, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
264626  (http://support.microsoft.com/kb/264626/ ) Descrição das especificações do Excel 2000

A informação contida neste artigo aplica-se a:
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
Palavras-chave: 
kbmt kbvba kbprogramming kbautomation kbmacro kbhowto KB272729 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 272729  (http://support.microsoft.com/kb/272729/en-us/ )