EXPORTAR DADOS PARA OUTRA PASTA DE TRABALHO

KERPLUNK 10/09/2016 03:11:35
#466703
Você continua fazendo a mesma coisa, só copia o código, cola e espera que rode. Leia os comentários, tente entender o que está acontecendo, depure o código, linha à linha. Enfim, faça você mesmo. Até agora, o que vi você fazer foi isso, simplesmente copia e cola código e assim você nunca vai sair do lugar. Estamos aqui para ajudar, mas ajudar não quer dizer que vamos fazer por você o seu trabalho. Damos dicas, orientações, explicações e exemplos, que são os códigos que você está achando que é a solução.
ASHKATCHUP 10/09/2016 12:03:27
#466706
Citação:

:
Como aplico esse código. Coloquei-o mas, não tá alimentando. Estou postando o arquivo para análise se possível.



Tu não leu o que eu postei. O código que eu fiz para te ajudar não alimenta as planilhas.

Como eu disse antes, tu tem que dividir o problema em partes:

1) Ler os dados da planilha exportar dados.xlsm
2) Organizar esses dados na memória
3) Escrever os dados nas planilhas 8_5900035343_Manserv_GV.xlsm e 8_5900035343_Manserv_Aimores.xlsm

O código que eu postei antes faz o primeiro passo, ou seja, somente lê os dados.

O nosso papel como comunidade é dar um norte aos colegas, e não fazer o código fonte. Já que tu está sendo pago para desenvolver a solução, deve descobrir como fazê-la.

Se tu conseguir fazer o código escrever em uma planilha, conseguirá fazer escrever em todas. Não tem mágica, não tem segredo. Mas precisa ter calma e fazer a coisa passo-a-passo.

Dá uma olhada no post em que o Kerplunk mostra como escrever dados em uma planilha do excel.
PABLOMOREIRAGV 10/09/2016 15:01:14
#466709
Olá pessoal. Não sei que tipo de impressão que estou causando aqui neste tópico depois de anos participando deste fórum. Nunca tive esse tipo de abordagem, do tipo que deixa a entender que estou tentando tirar algum tipo de vantagem de alguém e ganhando dinheiro com isso, ou dizer que espero tudo pronto, como se eu soubesse fazer e simplesmente estou passando pra outro fazer por mim. Cara! Isso é surreal pra mim. Na boa, até agora não to entendo. Sempre falo bem deste lugar, pois já me ajudou e ensinou bastaste coisa. Desde ontem, volta e meia, vêm uma ajuda junto com uma paulada. Pra quê?
Eu não sou um desenvolvedor, programador ou algo do tipo, muito menos estou usando isso pra ganhar dinheiro. Acreditem ou não, mas, não estou sendo pago pra isso. Utilizar essas planilhas é o que eu faço, porém queria uma forma automática de preencher todos os 44 arquivos que hoje faço manualmente, e nada mais. Sem pagamento, sem reconhecimento de ninguém, simplesmente otimização de tempo pessoal mesmo.
Infelizmente não tenho esse raciocínio, linguagem programática e lógica que vocês tem, e não consigo ver tanta facilidade em resolver problema como vocês. Bem que eu queria. Pois já teria resolvido sozinho.
Então, eu agradeço de verdade até aqui, sério mesmo. Peguei tudo que já foi falado, e estou tentando entender, mesmo acreditando que não irei muito longe, pois até agora não consegui nada, pois também não sei tratar erros.
Não precisam comentar mais nada, do tipo [Ô]lição de moral[Ô] aqui, pois não me ajudará, simplesmente vai deixar mais claro o que já sei. Que não sou programador e não sei programar.

Obrigado mais vez,....
ASHKATCHUP 12/09/2016 21:33:19
#466825
O código abaixo executa os dois primeiros passos:

Citação:

1) Ler os dados da planilha exportar dados.xlsm
2) Organizar esses dados na memória



Os dados estão guardados no vetor vSaida, sendo que cada posição do vetor é uma cidade e, dentro dessa cidade, há as divisões [Ô]Aba F[Ô] e [Ô]Aba K[Ô].

Na sequência, dentro de cada aba há os registros correspondentes, com os dados [Ô]Centro de Custo[Ô], [Ô]Item[Ô] e [Ô]Soma Total[Ô].



  Option Explicit
[ô]
[ô]Enumeracao que guarda os valores das colunas
Private Enum eColunas
Cidade = 1
Item = 2
NumeroServico = 3
Descricao = 4
CentroCusto = 5
SomaTotal = 6
End Enum

[ô]Type para lidar melhor com o vetor
Private Type tDados
Cidade As String
Item As String
NumeroServico As String
Descricao As String
CentroCusto As String
SomaTotal As String
End Type

Private Type tSaida
Cidade As String
AbaF() As tDados
AbaK() As tDados
End Type

[ô]Constante que indica a primeira linha que contem os dados que iremos iniciar
Private Const inicioDados = 6


Private Sub CommandButton1_Click()
Dim objWorkBook As Workbook
Dim objWorkSheet As Worksheet
Dim objRange As Range
[ô]
Dim vDados() As tDados
Dim iIndice As Integer
[ô]
Dim iLinhas As Integer
[ô]
iIndice = 0
[ô]
[ô]Workbook = arquivo do excel aberto
Set objWorkBook = Application.ActiveWorkbook
[ô]Worksheet = planilha selecionada dentro deste arquivo aberto
Set objWorkSheet = Application.ActiveSheet
[ô]UsedRange = intervalo que foi utilizado com dados.
[ô]é uma boa usar essa propriedade nativa em vez de ficar varrendo a planilha inteira
Set objRange = objWorkSheet.UsedRange
[ô]
[ô]Loop para varrer todas as linhas preenchidas
[ô]Lembrando que começa na linha [Ô]inicioDados[Ô]
For iLinhas = inicioDados To objRange.Rows.Count
[ô]
[ô]Aumenta o tamanho do nosso vetor
ReDim Preserve vDados(iIndice)
[ô]
[ô]Preenche o vetor com os valores da planilha
vDados(iIndice).Cidade = objRange(iLinhas, eColunas.Cidade).Value
vDados(iIndice).Item = objRange(iLinhas, eColunas.Item).Value
vDados(iIndice).NumeroServico = objRange(iLinhas, eColunas.NumeroServico).Value
vDados(iIndice).Descricao = objRange(iLinhas, eColunas.Descricao).Value
vDados(iIndice).CentroCusto = objRange(iLinhas, eColunas.CentroCusto).Value
vDados(iIndice).SomaTotal = objRange(iLinhas, eColunas.SomaTotal).Value
[ô]
iIndice = iIndice + 1
[ô]
Next
[ô]
[ô]Sempre lembrando de liberar os objetos
Set objWorkBook = Nothing
Set objWorkSheet = Nothing
Set objRange = Nothing
[ô]
[ô]Chama função que organizará os dados
OrganizaDados vDados
[ô]
End Sub

Private Sub OrganizaDados(vDados() As tDados)
Dim iIndice As Integer
Dim iAbaF As Integer
Dim iAbaK As Integer
Dim iLinhas As Integer
Dim vSaida() As tSaida
Dim sCidade As String
Dim bTrocouCidade As Boolean
[ô]
iIndice = -1
iAbaF = 0
iAbaK = 0
sCidade = [Ô][Ô]
bTrocouCidade = False
[ô]
For iLinhas = 0 To UBound(vDados)
[ô]
bTrocouCidade = False
[ô]
If vDados(iLinhas).Cidade <> sCidade Then
[ô]Aumenta o tamanho do nosso vetor
ReDim Preserve vSaida(iIndice + 1)
iIndice = iIndice + 1
[ô]
vSaida(iIndice).Cidade = vDados(iLinhas).Cidade
sCidade = vSaida(iIndice).Cidade
[ô]
iAbaF = 0
iAbaK = 0
[ô]
End If
[ô]
[ô]Verifica se o Centro de Custo começa com o numero 7
If InStr(1, vDados(iLinhas).CentroCusto, [Ô]7[Ô]) = 1 Then
[ô]
[ô]Aumenta o tamanho do nosso vetor
ReDim Preserve vSaida(iIndice).AbaF(iAbaF)
[ô]
vSaida(iIndice).AbaF(iAbaF).CentroCusto = vDados(iLinhas).CentroCusto
vSaida(iIndice).AbaF(iAbaF).Item = vDados(iLinhas).Item
vSaida(iIndice).AbaF(iAbaF).SomaTotal = vDados(iLinhas).SomaTotal
[ô]
iAbaF = iAbaF + 1
[ô]
[ô]Verifica se o Centro de Custo começa com o numero 1
ElseIf InStr(1, vDados(iLinhas).CentroCusto, [Ô]1[Ô]) = 1 Then

[ô]Aumenta o tamanho do nosso vetor
ReDim Preserve vSaida(iIndice).AbaK(iAbaK)
[ô]
vSaida(iIndice).AbaK(iAbaK).CentroCusto = vDados(iLinhas).CentroCusto
vSaida(iIndice).AbaK(iAbaK).Item = vDados(iLinhas).Item
vSaida(iIndice).AbaK(iAbaK).SomaTotal = vDados(iLinhas).SomaTotal
[ô]
iAbaK = iAbaK + 1
[ô]
End If
[ô]
Next
[ô]
End Sub




PABLOMOREIRAGV 13/09/2016 08:53:02
#466832
Olá ASHKATCHUP,
Cara, muito obrigado pelo retorno. Vi aqui a estrutura que você criou. Ficou muito legal, e está exatamente com a particularidades que informei.
Acho que agora só falta o terceiro passo dos três que você citou anteriormente. Que é “3) Escrever os dados nas planilhas)”.
Lá atrás você tinha dito que o código do KERPLUNK (abaixo) ajudaria a escrever as informações nas planilhas.

[ô][ô][ô][ô][ô]Definindo objetos
Dim Alvo As Workbook [ô]A planilha no qual os dados serão colocados
Dim Fonte As Workbook [ô]A planilha no qual os dados estão
Dim Alvo_Path As String

[ô][ô][ô][ô][ô]Passando o caminho completo do arquivo na variável [Ô]Alvo_Path[Ô]
Alvo_Path = ActiveWorkbook.Path + [Ô]\Arquivo.xlsx[Ô]
Set Alvo = Workbooks.Open(Target_Path)
Set Fonte = ThisWorkbook

[ô][ô][ô][ô][ô]Agora é possível ler e gravar qualquer coisa, tanto no alvo, quanto no fonte, inclusive passando dados de um para outro

dados = Fonte.Sheets(1).Cells(1, 1) [ô]Sheets(1) se refere à primeira planilha, pode-se usar o nome dela também, se preferir. [Ô]Cells(1, 1)[Ô], se refere a coluna 1, linha 1
Alvo.Sheets(1).Cells(1, 1) = dados [ô]o mesmo caso acima, mas ao invés de atribuir o valor à uma variável, estou atribuindo o valor à célula


[ô][ô][ô][ô][ô]Fechando e salvando as planilhas
Alvo.Save
Fonte.Save

Set Alvo = Nothing


Mas, como faço agora para inserir esses dados nas planilhas utilizando o seu código? Ou como faço para o código acima conversar com a estrutura que você criou?
Valeu cara, obrigado...

MITSUEDA 06/11/2016 13:10:52
#468767
Resposta escolhida
Pablo

Enviei a solução no seu email, recebi sua msg. Mas não consegui ajudar antes é a correria!

Abraço
PABLOMOREIRAGV 06/11/2016 16:02:37
#468770
Valeu Fábio! Funcionou perfeitamente
abs...
Página 2 de 2 [17 registro(s)]
Tópico encerrado , respostas não são mais permitidas