Notifications
Clear all

Link entre arquivos

3 Posts
2 Usuários
0 Reactions
1,124 Visualizações
(@hugomoreda)
Posts: 34
Trusted Member
Topic starter
 

Amigos,

Tenho 2 arquivos excel.

1- Tabela provida do SQL SERVER em que uma das colunas é uma data no formato varchar(8) do SQL SERVER. Exemplo : 20130416 (data de hoje)

2- Relatório Gerêncial(excel) em que uma das colunas é uma data no formato dd/mmm

Um das chaves para linkar os arquivos precisa ser a data!

Vocês tem idéia de como posso linkar esses dois arquivos através da data para que eu possa preencher o relatório gerencial? (Detalhe- A data é sempre do dia anterior)

Muito obrigado!

 
Postado : 16/04/2013 9:38 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Hugomoreda,

Boa Tarde!

Bem... primeiramente, você precisa transformar essas datas que vem do SQL, na sua planilha, para o formato que seja igual ao do outro arquivo que você quer linkar. Supondo que essas dats esteja na coluna A, a partir da linha 1, você poderia utilizar o código abaixo que ele deixa as suas datas no mesmo formato da data do outro arquivo.

No exemplo de código abaixo, fiz apenas para a célula A1. Se as datas forem diferentes em cada linha, basta colocar um FOR da linha inicial até a linha final para que ele faça de todas as linhas.

Sub teste()
    Dim Ano, Mes, Dia As String
    Dim Data As Date
    Ano = Mid(Range("a1").Value, 1, 4)
    Mes = Mid(Range("a1").Value, 5, 2)
    Dia = Mid(Range("a1").Value, 7, 2)
    Data = Dia & "/" & Mes & "/" & Ano
    Range("a1").Value = Data
End Sub
 
Postado : 16/04/2013 10:07 am
(@hugomoreda)
Posts: 34
Trusted Member
Topic starter
 

Obrigado, meu camarada!

É exatamente isso!
Acabei a macro agora!

Set wb2 = ActiveWorkbook
wb2.Activate
Sheets("A").Select
ultimalinhawb2 = Cells(Rows.Count, 2).End(xlUp).Row
procdata = Cells(ultimalinhawb2 - 2, 2)

Workbooks.Open Filename:= _
"Y:marketingHugoB2WQtd_Junk_B2W.xlsx" _
, Notify:=False

Set wb3 = ActiveWorkbook
ultimalinhawb3 = Cells(Rows.Count, 2).End(xlUp).Row
Sheets("Plan1").Activate
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False

cont = 1
Do While Sheets("Plan1").Cells(cont, 1).Value <> "S"
cont = cont + 1
Loop

For j = cont - 2 To cont

Ano = Mid(Cells(j, 3).Value, 1, 4)
Mes = Mid(Cells(j, 3).Value, 5, 2)
Dia = Mid(Cells(j, 3).Value, 7, 2)
Data = Dia & "/" & Mes & "/" & Ano

If Data = procdata Then

wb2.Sheets("A").Cells(ultimalinhawb2 - 2, 13).Value = wb3.Sheets("Plan1").Cells(j, 4).Value

End If
Next j

 
Postado : 16/04/2013 2:19 pm