• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

luishmafernandes

Ficheiro xls para txt

7 mensagens neste tópico

Tenho uma folha de excel com a seguinte informação

Nome    Categ    Venc1      Venc2  Venc3

Luis      R            5000        2000        0

Pedro    A          3000        2000    1000

Maria    R            400        1000      30

Gostaria de gerar um ficheiro em txt (dividido por virgula), com o seguinte conteudo:

Nome,Categ,Codigo,Valor

Luis,R,Venc1,5000

Luis,R,Venc2,2000

Luis,R,Venc3,0

Pedro,A,Venc1,3000

...

Agradecia a ajuda  :-[

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Experimenta este (faz a exportação para c:\:)

Sub DoTheExport()
    ExportToTextFile FName:="C:\Exportação.txt", Sep:=",", _
       SelectionOnly:=False, AppendData:=True
End Sub


Public Sub ExportToTextFile(FName As String, _
    Sep As String, SelectionOnly As Boolean, _
    AppendData As Boolean)

Dim WholeLine As String
Dim FNum As Integer
Dim RowNdx As Long
Dim ColNdx As Integer
Dim StartRow As Long
Dim EndRow As Long
Dim StartCol As Integer
Dim EndCol As Integer
Dim CellValue As String


Application.ScreenUpdating = False
On Error GoTo EndMacro:
FNum = FreeFile

If SelectionOnly = True Then
    With Selection
        StartRow = .Cells(1).Row
        StartCol = .Cells(1).Column
        EndRow = .Cells(.Cells.Count).Row
        EndCol = .Cells(.Cells.Count).Column
    End With
Else
    With ActiveSheet.UsedRange
        StartRow = .Cells(1).Row
        StartCol = .Cells(1).Column
        EndRow = .Cells(.Cells.Count).Row
        EndCol = .Cells(.Cells.Count).Column
    End With
End If

If AppendData = True Then
    Open FName For Append Access Write As #FNum
Else
    Open FName For Output Access Write As #FNum
End If

For RowNdx = StartRow To EndRow
    WholeLine = ""
    For ColNdx = StartCol To EndCol
        If Cells(RowNdx, ColNdx).Value = "" Then
            CellValue = Chr(34) & Chr(34)
        Else
           CellValue = Cells(RowNdx, ColNdx).Text
        End If
        WholeLine = WholeLine & CellValue & Sep
    Next ColNdx
    WholeLine = Left(WholeLine, Len(WholeLine) - Len(Sep))
    Print #FNum, WholeLine
Next RowNdx

EndMacro:
On Error GoTo 0
Application.ScreenUpdating = True
Close #FNum

'Código por: Charles H Pearson
End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Aproveitando esta dúvida, podiam me informar como eu colocaria estes campos num ficheiro excel, isto é, em vez de colocar em txt, passar para ficheiro xls

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Aproveitando esta dúvida, podiam me informar como eu colocaria estes campos num ficheiro excel, isto é, em vez de colocar em txt, passar para ficheiro xls

Bem mantendo a mesma base da exportação:

Public Sub ImportTextFile(FName As String, Sep As String)

Dim RowNdx As Long
Dim ColNdx As Integer
Dim TempVal As Variant
Dim WholeLine As String
Dim Pos As Integer
Dim NextPos As Integer
Dim SaveColNdx As Integer

Application.ScreenUpdating = False
'em caso de erro GoTo Fim do Macro:
Worksheets("folha1").Select
Range("A1").Select
SaveColNdx = ActiveCell.Column
RowNdx = ActiveCell.Row

Open FName For Input Access Read As #1

While Not EOF(1)
    Line Input #1, WholeLine
    If Right(WholeLine, 1) <> Sep Then
        WholeLine = WholeLine & Sep
    End If
    ColNdx = SaveColNdx
    Pos = 1
    NextPos = InStr(Pos, WholeLine, Sep)
    While NextPos >= 1
        TempVal = Mid(WholeLine, Pos, NextPos - Pos)
        Cells(RowNdx, ColNdx).Value = TempVal
        Pos = NextPos + 1
        ColNdx = ColNdx + 1
        NextPos = InStr(Pos, WholeLine, Sep)
    Wend
    RowNdx = RowNdx + 1
Wend

EndMacro:
On Error GoTo 0
Application.ScreenUpdating = True
Close #1
End Sub

Sub DoTheImport()
ImportTextFile FName:="C:\Exportação.txt", Sep:=","
MsgBox "Importação Completa"
End Sub

O ficheiro que vai ser importado tem o nome de exportação.txt e está localizado no c:\

Espero que seja isto que pretendes!!!  :ipool:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado pela dica, mas expliquei-me mal  :-[

O que pretendo é o seguinte:

Tenho uma folha de excel com a seguinte informação

      A        B            C            D        E

1  Nome    Categ    Venc1      Venc2  Venc3

2  Luis      R            5000        2000        0

3  Pedro    A          3000        2000    1000

4  Maria    R            400        1000      30

Gostaria de gerar um ficheiro em xls , com o seguinte conteudo:

  A              B

1 Nome      Venc

2  Luis        5000

3  Pedro    3000

4  Maria      400

5  Luis        2000

6  Pedo      2000

...

Agradecia a ajuda  :wallbash:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora