Pergunte aqui
1

Importar arquivos TXT para uma planilha.

perguntadas 2018-11-06 02:24:08 +0200

imagem do gravatar de Marcelo Caldas

Importar arquivos TXT para uma planilha.

Boa noite Senhores, Meu problema é o seguinte;

Estamos criando um sistema de gerenciamento dos relatórios daqui onde trabalho. Esses arquivos são gerados diariamente em arquivos TXT no seguinte formato.

18-10-01-Distribuidos.txt

1111111111 55555-44

1111111254 55789-44

1456871123 88795-44

11549987 99887-44

11110221415 47893-44

Normalmente eles têm duas colunas, mas podem ter mais. O número de linhas é indefinido.

Eles são gerados todos os dias na seguinte forma:

Pasta

18-10-01-MD-1

Arquivos

18-10-01-Distribuidos

18-10-01-Efetivados

18-10-01-Concluidos

18-10-01-Arquivados

Pasta

18-10-01-MD-4

Arquivos

18-10-01-Distribuidos

18-10-01-Efetivados
18-10-01-Concluidos
18-10-01-Inconsistentes
18-10-01-Arquivados

Estou tentando muito sem sucesso criar uma macro pra ler os arquivos e jogá-los no Calc. Cada pasta geraria um Arquivo do calc diferente com cada txt na respectiva planilha. Por exemplo: o arquivo 18-10-01-MD-1 , conteria as planilhas 18-10-01-Distribuidos, 18-10-01-Efetivados, 18-10-01-Concluidos e 18-10-01-Arquivados com seus respectivos conteúdos.

É exatamente o que a função “Planilha>Inserir Planilha do arquivo” do libre Versão: 6.1.3.2 faz. Só que de forma automatizada. A função gravar macro infelizmente não pega essa rotina.

São umas 10 pastas todos os dias e o número de arquivos tb varia dentro delas.

O espaço seria a divisão das colunas. Todas as pastas já estão definidas.

Ta me tirando o sono isso.

Se alguém puder me ajudar?

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

2 Respostas

2

respondidas 2018-11-06 11:54:20 +0200

updated 2018-11-06 11:55:57 +0200

Ola @Marcelo Caldas, eu uso esta Macro para inserir nova Planilha. Deixo ela como sub-Macro e na chamada (Call) dou os parâmetros.

Sub TestePlanilhaNova
    Call PlanilhaNova "Testes" , 0
end sub

'================================================|
Sub PlanilhaNova ( xAba as String, yPosicao as Integer )
' A numeração das Planilhas começa com o (zero).
'================================================|
    thisComponent.getSheets.InsertnewByName( xAba,yposicao)
end Sub

No exemplo acima estou criando a Planilha Testes na posição 0.

editar assinalar como ofensivo Excluir Link mais

Comentários

Vi sua resposta agora, vou testar sua rotina. mas achei essa macro (que não coube aqui) num forum, funciona muito bem, agora só preciso juntar os arquivos da pasta dentro de uma unica planilha. Está progredindo.

imagem do gravatar de Marcelo CaldasMarcelo Caldas ( 2018-11-06 12:05:50 +0200 )editar
1

respondidas 2018-11-06 12:07:59 +0200

imagem do gravatar de Marcelo Caldas

updated 2018-11-09 14:37:44 +0200

Sub ImportarTXT() Macro que converte txt em plannilha. Ela pega todos os txt de uma pasta e gera arquivo ods com ele, nesse caso os separadores das colunas são espaços.

Dim FileNo As Integer
Dim CurrentLine As String
dim x,y,z as integer
dim s as object
dim oFolderPicker as object
dim NextFile as string
dim url as string
dim newworkbook as object
Dim Args(2) As new com.sun.star.beans.PropertyValue
dim sExport as string
dim oExport as object

oFolderPicker = createUnoService("com.sun.star.ui.dialogs.FolderPicker")
oFolderPicker.setdisplaydirectory("C:\Users\Documents\18-10 Z GERAR PLANILHAS AUTOMATICAS\MD-1")
oFolderPicker.execute

NextFile = dir(oFolderPicker.getdirectory & "/*.txt",0)

x = 0
y = 0
while NextFile <> ""

   x = x + 1
   NextFile = Dir

wend

NextFile = dir(oFolderPicker.getdirectory & "/*.txt",0)

while NextFile <> ""

   y = y +1

   thiscomponent.currentcontroller.statusindicator.start "Loading " & y &  " of the total " & x & " files ......",0

   url = oFolderPicker.getdirectory & "/" & left(NextFile,len(NextFile)-3) & "ods"

   MkDir oFolderPicker.getdirectory & "/Temporary/"

   FileCopy oFolderPicker.getdirectory & "/" & NextFile, oFolderPicker.getdirectory & "/Temporary/" & left(NextFile,len(NextFile)-3) & "csv"

   sExport = ConvertToURL(oFolderPicker.getdirectory & "/Temporary/" & left(NextFile,len(NextFile)-3) & "csv")

   Args(1).name = "FilterName"
   Args(1).Value = "Text - txt - csv (StarCalc)"
   Args(2).name = "FilterOptions"
   Args(2).Value = "32,0,76,1,1/2/2/2/3/2/4/2/5/2/6/2/7/2/8/2/9/2/10/2/11/2/12/2/13/2/14/2/15/2/16/2/17/2/18/2/19/2/20/2/21/2/22/2/23/2/24/2/25/2/26/2/27/2/28/2/29/2/30/2/31/2/32/2/33/2/34/2/35/2/36/2/37/2/38/2/39/2/40/2/41/2/42/2/43/2/44/2/45/2/46/2/47/2/48/2/49/2/50/2"
   Args(0).name = "Hidden"
   Args(0).value = True

   oExport = StarDesktop.loadComponentFromURL(sExport, "_blank", 0, Args())

   oExport.sheets(0).getcellrangebyposition(0,0,256,0).columns.OptimalWidth = true

   Args(0).Name = "CharacterSet"
    Args(0).Value = "UTF-8"

   oExport.storeasurl(url,Array())

  oExport.close(true)

   NextFile = Dir

wend 

RmDir oFolderPicker.getdirectory & "/Temporary/"

thiscomponent.currentcontroller.statusindicator.Reset

msgbox "complete"

end sub
editar assinalar como ofensivo Excluir Link mais
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2018-11-06 02:24:08 +0200

Lidas: 124 vezes

Última atualização: Nov 09 '18