Este fórum foi descontinuado. LEIA AQUI e participe da Comunidade BABOO :)

Ir para conteúdo
pablo.coelho

Gravação dinâmica Excel - Link DDE

Mensagem Recomendada

Bom dia pessoal,

 
Tenho um problema interessante pra resolver, mas não sei se é possível de se fazer por isso gostaria de saber a opinião de vocês.
 
Tenho uma planilha que recebe dados em tempo real, esses dados são cotações das ações da bovespa obtidos através de um link DDE.
Digamos então que na célula A1 eu tenha um valor que constantemente é alterado sem nenhum comando (de forma automática). Gostaria de gravar essas informações em um banco de dados, ou seja, a cada atualização que uma célula sofrer um novo registro é criado no banco de dados com essas novas informações.
 
Começei tentando com MySql for Excel porém ainda nôo tive progresso.
 
Agradeço qualquer ajuda, nem que seja para me mostrar que isso é impossível de se fazer.
 
Att,
Pablo Coelho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça um teste a fim de verificar se cada valor inserido pelo link é capaz de disparar o código abaixo.
Caso seja disparado, uma caixa de mensagem irá exibir "disparou", então poderemos colocar instruções no lugar da caixa de mensagem para montar o banco que você pretende.
Considerando que o link atua em A1, coloque em qualquer célula vazia da planilha "=A1" (sem as aspas). Exemplo: coloque na célula C1 =A1. Depois instale o código.

Como instalar o código:
1. copie o código daqui
2. clique com o direito na guia da planilha em que o link atua
3. escolha "Exibir código"
4. cole o código na janela em branco que vai se abrir
5. feito! Alt+Q para retornar para a planilha e testar

Para desativar a ação do código delete-o.


Private Sub Worksheet_Calculate()
    msgbox "disparou"
End Sub

 


 

Osvaldo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Osvaldo, Obrigado!

 

testado. Funcionou corretamente.

Agora gostaria de perguntar novamente se consigo seguir nesse caminho:

- Criar um BD a partir do Menu DADOS do Excel (fonte externa - BD a ser criado);

- Mapear os campos que serão extraídos do site e criar uma tabela como referência;

- Ligar o BD a planilha para atualização automática a cada atualização realizada na planilha (a cada atualização um novo registro será criado no BD).

 

Meu impasse se encontra no 3° item.

 

Caso possa me ajudar ficarei grato.

 

Att,

Pablo Coelho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala, Pablo.
Não sei o tipo de estrutura que você pretende para o BD.
Veja se o resultado deste código poderá ajudar.
Será lançada na coluna A a Data, em B a Hora e em C a cotação, a partir da linha 4.

Substitua o código anterior por este. Mantenha em C1=A1.

Private Sub Worksheet_Calculate()
  Dim LR As Long
    LR = Cells(Rows.Count, 1).End(xlUp).Row
      If LR < 3 Then LR = 3
        Cells(LR + 1, 1) = Date
        Cells(LR + 1, 2) = Time
        Cells(LR + 1, 3) = [A1]
End Sub

 


 

Osvaldo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Osvaldo,

 

obrigado pelo retorno.

Testei agora. Funcionou corretamente. A cada alteração ele registra uma nova "linha".

Tentarei fazer a ligação através do BD Access para arquivamento desses registros.

 

Caso possa me ajudar com mais alguma informação para essa ligação com BD agradeço.

Agradeço também a ajuda até aqui!! :)

 

Att,

Pablo Coelho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Osvaldo,

 

tentei configurar para que a informação de "Data / Hora / Cotação" fosse informada para mais de uma célula. Acredita que seja possível?!

Ex.:

                                           Coluna

TICKER         ULT               VARP   Linha

Código         Último           Variação %  

IBOV            11,00            =B3

VALE5         12,00    

PETR4         14,00  

 

 

16/09/2013  0,55             TICKER  

16/09/2013  1:15:54 PM  TICKER  

16/09/2013  1:15:56 PM  TICKER  

16/09/2013  1:15:57 PM  TICKER  

16/09/2013  1:15:58 PM  TICKER  

16/09/2013  1:16:00 PM  TICKER  

16/09/2013  1:20:55 PM  TICKER  

16/09/2013  1:23:19 PM  TICKER  

 

 

As células em verde também fossem capturadas suas alterações. Outra questão. Desejo atualizar mais de um campo (Coluna B, C, D etc). Também é possível?!

 

Desde já agradeço.

Editado por pablo.coelho

''

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala, Pablo.

As informações de data e hora o código busca no seu PC.

As demais informações você precisa informar em quais células buscar e, para todas as informações, você precisa informar onde quer colocá-las para formar a sua tabela.

 

Exemplo:

data: colocar na coluna A

hora: colocar na coluna B

cotação: sempre copiar de A1 e colocar na coluna C

nome do ativo: sempre copiar de B1 e colocar em D

etc...

 

É possível, caso queira, montar blocos de dados separados por nome de ativo ou por data ou por outro critério. Mas para se construir a(s) tabela(s) sempre é necessária a indicação precisa do critério, e também a indicação precisa de onde buscar e onde colocar as informações.


 

Osvaldo

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu gostaria de fazer a mesma coisa que você, mas com apenas uma variável: o último preço de um ativo. Depois que o excel gravar os dados, cada um em uma linha, eu gostaria de montar um gráfico com esses dados em tempo real, a medida que eles são atualizados. Será que isso seria possível?

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom dia!

Oswaldo e Pablo,

o código abaixo não está registrando nova linha quando ocorre atualização na planilha.

Private Sub Worksheet_Calculate()
  Dim LR As Long
    LR = Cells(Rows.Count, 1).End(xlUp).Row
      If LR < 3 Then LR = 3
        Cells(LR + 1, 1) = Date
        Cells(LR + 1, 2) = Time
        Cells(LR + 1, 3) = [A1]
End Sub

alguém pode me auxiliar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×
×
  • Criar Novo...