Ir para o conteúdo
Pennafortt

Informar intervalo em exportar para txt

Mensagens Recomendadas

Pennafortt

boas

utilizo essa macro e funciona não muito bem, preciso que copie e exporte para o txt um intervalo especifico da planilha J20:X200,

A macro:

Sub Exportar_Txt()

Application.DisplayAlerts = False

template_file = ActiveWorkbook.FullName

Aqui era para salvar no desktop mas ta copiando para meus documentos

fileSaveName = "Desktop" + VBA.Strings.Format(Now, "ddmmyyyy") + ".txt"

Dim newBook As Workbook

Dim plan As Worksheet

Set newBook = Workbooks.Add

ThisWorkbook.ActiveSheet.Copy Before:=newBook.Sheets(1)

For Each plan In newBook.Sheets

If plan.Name <> ActiveSheet.Name Then

newBook.Worksheets(plan.Index).Delete

End If

Next

newBook.SaveAs Filename:=fileSaveName, FileFormat:=xlTextWindows, CreateBackup:=False

newBook.Close SaveChanges:=True

Set newBook = Nothing

End Sub

cump

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
FreiNando

"Desktop" é uma pasta de sistema. Para obter o enderesso real dessa e de outras pastas de sistema, eu tenho uma função:

'====================================
'		 PASTAS DO SISTEMA
'====================================
Public Function PastaSistema(NumPasta As Integer) As String
Dim objFSO As Object
Dim objShell As Object
Dim objFolder As Object
Dim objFolderItem As Object

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.NameSpace((NumPasta))  ' Ver Lista
If objFolder Is Nothing Then
	PastaSistema = ""
Else
	Set objFolderItem = objFolder.Self
	PastaSistema = objFolderItem.Path
End If
End Function
'-------------------------------------------
'Lista de Pastas de Sistema
'-------------------------------------------
' Num  --  Nome (PT)
'---------------------------------------
' 2  --  Programas
' 5  --  Os Meus Documentos
' 6  --  Favoritos
' 7  --  Arranque
' 8  --  Itens recentes
' 9  --  SendTo
'11  --  Menu Iniciar
'13  --  A Minha Música
'14  --  Os Meus Vídeos
'16  --  Ambiente de trabalho
'17  --  Computador
'20  --  Fonts
'22  --  Menu Iniciar
'23  --  Programas
'24  --  Arranque
'25  --  Ambiente de Trabalho Público
'26  --  Roaming
'27  --  Printer Shortcuts
'28  --  Local
'29  --  Arranque
'30  --  Arranque
'31  --  Favoritos
'32  --  Temporary Internet Files
'33  --  Cookies
'34  --  History
'35  --  ProgramData
'36  --  Windows
'37  --  System32
'38  --  Program Files (x86)
'39  --  As Minhas Imagens
'40  --  [utilizador]
'41  --  SysWOW64
'42  --  Program Files (x86)
'43  --  Common Files
'45  --  Templates
'46  --  Documentos Públicos
'48  --  Ferramentas Administrativas
'49  --  Ligações de rede
'53  --  Música Pública
'54  --  Imagens Públicas
'55  --  Vídeos Públicos
'-------------------------------------------

Aí a tua linha a vermelho ficaria:

fileSaveName = PastaSistema(16) & VBA.Strings.Format(Now, "ddmmyyyy") & ".txt"

  • Voto 1

O caminho mais curto para conseguir fazer muitas coisas é fazer uma de cada vez. Samuel Smiles

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Pennafortt

boas freiNando

agradeço por ter respondido mas quero informar que as vezes o txt é salvo no desktop (area de trabalho) mais isso não chega ser importante, queria saber mesmo é como salvar não o ficheiro todo, mas só o intervalo J20:X200, uma vez que a macro salva a planilha inteira

cimps

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
FreiNando

Para não andares com copy-paste, experimenta esta macro:

Sub ExportarXlRange()
Dim Ficheiro As String, N As Integer
Dim Rg As Range, C As Range, L As Range

'Aqui é para salvar no desktop
Ficheiro = PastaSistema(16) & "\" & Format(Now, "ddmmyyyy") & ".txt"

Set Rg = ActiveSheet.Range("J20:X200")

N = FreeFile
Open Ficheiro For Output As N ' Abre o ficheiro para escrita

For Each L In Rg.Rows
	For Each C In L.Columns
		Print #N, C.Value; vbTab; ' escreve o valor da celula + uma tabulação
	Next
	Print #N, ' nova linha
Next

Close N ' fecha o ficheiro

MsgBox "Exportação concluída"
End Sub

Usei a tabulação como separador de colunas porque o Excel naquela função que usaste faz isso.

Podes substituir o C.Value por C.Text para te aparecer no ficheiro de texto exactamente como na folha, com formatação.

Editado por FreiNando

O caminho mais curto para conseguir fazer muitas coisas é fazer uma de cada vez. Samuel Smiles

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
V10

Boa tarde!

Estou com o ,mesmo problema. Quero apenas exportar um range de celulas. Mas a segunda macro sugerida da erro.Como posso adaptar a primeira macro para exportar apenas a coluna A e B?

Obrigado,

Cumps

Partilhar esta mensagem


Ligação 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

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.