Cara, não sei nenhum material legal para VBA...mas vou tentar te explicar um pouco isso aqui...
Esta formula que vou colar faz o comando de retornar o valor de uma determinada célula em uma outra junto com a formula do DDE de cotações...para pelo menos vc testar vamos fazer o seguinte...
- Na aba exibição clica em macros e em seguida "gravar macro", escolhe o atalho e uma descrição. Logo depois pode ir em macro novamente e pedir para "parar a gravação"...pois vamos fazer a macro pelo VBA que colei logo abaixo.
2)Depois de parar a gravação, vá novamente em macro, exibir macros e selecione a macro. Clique agora em editar...irá abrir uma outra janela com algumas coisas escritas...apague tudo! e cole o VBA que colei abaixo.
- Pode fechar a janela de macros e em seguida fazer o teste para ver se está funcionando...va na selula A1 e digite algum codigo de ação, em seguida use o atalho escolhido para a macro...ou então va em macro e selecione executar! a cotação do papel deverá
aparecer na celula B1.
OBS.: note que onde tem "A1" no VBA é de onde a macro vai puxar o codigo...e onde tem "B1" é onde a macro vai jogar a cotação....
Essa macro so serve para uma única celula...mas pode ser copiada repetidas vezes uma embaixo da outra alterando apenas os valores "A1" e "B1" que quando a macro for utilizada irá fazer o mesmo processo em todas as celulas da macro....mas para o começo vale
o teste apenas na "A1" e "B1"
VBA da Macro:
Sub Macro1()
'
' Macro1 Macro
' TESTE
'
' Atalho do teclado: Ctrl+Shift+A
'
' seleciona a célula da ação
Range("A1").Select
' recupera o valor da célula da ação
LValor = ActiveCell.Value
' seleciona a célula da fórmula
Range("B1").Select
LRetorno = 0
If (LValor <> "") And (LValor <> " ") Then
LRetorno = "=profitchart|Cot!" + LValor + ".ult"
End If
' ajusta o valor da fórmula
ActiveCell.Formula = LRetorno
End Sub