<%
'=======================================================
'CLASSE DOS INDICADORES FINANCEIROS
'=======================================================
Class IndicadoresFinanceiros
'-----------------------------------------------------
'Funcao: getIndicadoresFinanceiros()
'Sinopse: Retorna Lista de Indicadores Financeiros
' Indicadores (BOLSAS):
' - Bovespa (ID: BOVESPA)
' - Dow Jones (ID: DOWJONES)
' - Nasdaq (ID: NASDAQ)
' - Merval (ID: MERVAL)
' - Londres (ID: LONDRES)
' - Paris (ID: PARIS)
' - Tóquio (ID: TOQUIO)
' - Frankfurt (ID: FRANKFURT)
' Indicadores (MOEDAS):
' - Dólar Comercial (ID: DOLARCOMERCIAL)
' - Dólar Médio Venda (ID: DOLARMEDIOVENDA)
' - Dólar Paralelo (ID: DOLARPARALELO)
' - Dólar Turismo (ID: DOLARTURISMO)
' - Euro x Dólar (ID: EURODOLAR)
' - Euro x Real (ID: EUROREAL)
' - Dólar Futuro (ID: DOLARFUTURO)
' Indicadores (RISCO):
' - Risco Brasil (ID: RISCOBRASIL)
'Retorno: Coleção (Scripting.Dictionary)
'Autor: Gabriel Fróes - www.codigofonte.com.br
'Ultima Atualização: 23 / 02 / 2008
'-----------------------------------------------------
Function getIndicadoresFinanceiros()
'Declaração das variáveis/objetos
Dim Retorno
Dim URL
Dim posInicio
Dim posFim
Dim htmlInicioPadrao
Dim htmlFimPadrao
Dim htmlInicio
Dim htmlFim
Dim Indicador
Dim Nome
Dim Valor
Dim Percentual
Dim Hora
Dim Data
Dim objXmlHttp
Dim objColecao
'Inicialização dos objetos/variáveis
Set objXmlHttp = Server.CreateObject("MSXML2.XMLHTTP")
Set objColecao = Server.CreateObject("Scripting.Dictionary")
htmlInicioPadrao= "align=right class=""conteudo"">"
htmlFimPadrao = "</td>"
posInicio = 1
posFim = 1
'Consulta ao site com os indicadores
URL = "http://www.cma.com.br/mercadofinanceiro.asp"
objXMLHttp.Open "GET", URL, False
objXMLHttp.Send
Retorno = BinaryToString(objXmlHttp.ResponseBody)
Set objXmlHttp = Nothing
'Cortando a String para trabalhar com uma variável menor
htmlInicio = "<a href=""javascript:trocapapel('012/IBOV')"" style=""color: black"">Bovespa</a>"
htmlFim = "<form name = ""consulta"" action=""javascript:consulta();"">"
posInicio = Instr(1, Retorno, htmlInicio)
posFim = Instr(posInicio, Retorno, htmlFim)
Retorno = Mid(Retorno, posInicio, posFim - posInicio)
posInicio = 1
'B O V E S P A
htmlInicio = "<a href=""javascript:trocapapel('012/IBOV')"" style=""color: black"">Bovespa</a>"
htmlFim = ""
posInicio = Instr(1, Retorno, htmlInicio)
Indicador = "BOVESPA"
Nome = "Bovespa"
htmlInicio = htmlInicioPadrao
htmlFim = htmlFimPadrao
Valor = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Percentual = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Hora = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Data = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Call objColecao.Add(Indicador, addIndicador(Nome, Valor, Percentual, Hora, Data))
'D O W J O N E S
htmlInicio = "<td width=""72"" class=""TitConteudo"">Dow Jones"
htmlFim = ""
posInicio = Instr(1, Retorno, htmlInicio)
Indicador = "DOWJONES"
Nome = "Dow Jones"
htmlInicio = htmlInicioPadrao
htmlFim = htmlFimPadrao
Valor = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Percentual = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Hora = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Data = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Call objColecao.Add(Indicador, addIndicador(Nome, Valor, Percentual, Hora, Data))
'N A S D A Q
htmlInicio = "<a href=""javascript:trocapapel('025/CCO')"" style=""color: black"">Nasdaq</a>"
htmlFim = ""
posInicio = Instr(1, Retorno, htmlInicio)
Indicador = "NASDAQ"
Nome = "Nasdaq"
htmlInicio = htmlInicioPadrao
htmlFim = htmlFimPadrao
Valor = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Percentual = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Hora = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Data = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Call objColecao.Add(Indicador, addIndicador(Nome, Valor, Percentual, Hora, Data))
'M E R V A L
htmlInicio = "<a href=""javascript:trocapapel('013/MER VAL')"" style=""color: black"">Merval</a>"
htmlFim = ""
posInicio = Instr(1, Retorno, htmlInicio)
Indicador = "MERVAL"
Nome = "Merval"
htmlInicio = htmlInicioPadrao
htmlFim = htmlFimPadrao
Valor = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Percentual = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Hora = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Data = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Call objColecao.Add(Indicador, addIndicador(Nome, Valor, Percentual, Hora, Data))
'L O N D R E S
htmlInicio = "<a href=""javascript:trocapapel('096/FTSE&GB')"" style=""color: black"">Londres</a>"
htmlFim = ""
posInicio = Instr(1, Retorno, htmlInicio)
Indicador = "LONDRES"
Nome = "Londres"
htmlInicio = htmlInicioPadrao
htmlFim = htmlFimPadrao
Valor = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Percentual = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Hora = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Data = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Call objColecao.Add(Indicador, addIndicador(Nome, Valor, Percentual, Hora, Data))
'P A R I S
htmlInicio = "<a href=""javascript:trocapapel('096/CAC&FR')"" style=""color: black"">Paris</a>"
htmlFim = ""
posInicio = Instr(1, Retorno, htmlInicio)
Indicador = "PARIS"
Nome = "Paris"
htmlInicio = htmlInicioPadrao
htmlFim = htmlFimPadrao
Valor = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Percentual = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Hora = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Data = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Call objColecao.Add(Indicador, addIndicador(Nome, Valor, Percentual, Hora, Data))
'T O Q U I O
htmlInicio = "<a href=""javascript:trocapapel('096/INJN&GB')"""
htmlFim = ""
posInicio = Instr(1, Retorno, htmlInicio)
Indicador = "TOQUIO"
Nome = "Tóquio"
htmlInicio = htmlInicioPadrao
htmlFim = htmlFimPadrao
Valor = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Percentual = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Hora = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Data = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Call objColecao.Add(Indicador, addIndicador(Nome, Valor, Percentual, Hora, Data))
'F R A N K F U R T
htmlInicio = "<a href=""javascript:trocapapel('096/DAX')"" style=""color: black"">Frankfurt</a>"
htmlFim = ""
posInicio = Instr(1, Retorno, htmlInicio)
Indicador = "FRANKFURT"
Nome = "Frankfurt"
htmlInicio = htmlInicioPadrao
htmlFim = htmlFimPadrao
Valor = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Percentual = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Hora = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Data = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Call objColecao.Add(Indicador, addIndicador(Nome, Valor, Percentual, Hora, Data))
'D O L A R C O M E R C I A L
htmlInicio = "<a href=""javascript:trocapapel('08/DOLCM')"""
htmlFim = ""
posInicio = Instr(1, Retorno, htmlInicio)
Indicador = "DOLARCOMERCIAL"
Nome = "Dólar Comercial"
htmlInicio = htmlInicioPadrao
htmlFim = htmlFimPadrao
Valor = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Percentual = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Hora = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Data = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Call objColecao.Add(Indicador, addIndicador(Nome, Valor, Percentual, Hora, Data))
'D O L A R M E D I O V E N D A
htmlInicio = "<a href=""javascript:trocapapel('62/PTAX850')"""
htmlFim = ""
posInicio = Instr(1, Retorno, htmlInicio)
Indicador = "DOLARMEDIOVENDA"
Nome = "Dólar Médio Venda"
htmlInicio = htmlInicioPadrao
htmlFim = htmlFimPadrao
Valor = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Percentual = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Hora = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Data = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Call objColecao.Add(Indicador, addIndicador(Nome, Valor, Percentual, Hora, Data))
'D O L A R P A R A L E L O
htmlInicio = "<a href=""javascript:trocapapel('08/DOLPR')"""
htmlFim = ""
posInicio = Instr(1, Retorno, htmlInicio)
Indicador = "DOLARPARALELO"
Nome = "Dólar Paralelo"
htmlInicio = htmlInicioPadrao
htmlFim = htmlFimPadrao
Valor = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Percentual = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Hora = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Data = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Call objColecao.Add(Indicador, addIndicador(Nome, Valor, Percentual, Hora, Data))
'D O L A R T U R I S M O
htmlInicio = "<a href=""javascript:trocapapel('08/DOLTR')"""
htmlFim = ""
posInicio = Instr(1, Retorno, htmlInicio)
Indicador = "DOLARTURISMO"
Nome = "Dólar Turismo"
htmlInicio = htmlInicioPadrao
htmlFim = htmlFimPadrao
Valor = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Percentual = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Hora = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Data = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Call objColecao.Add(Indicador, addIndicador(Nome, Valor, Percentual, Hora, Data))
'E U R O x D O L A R
htmlInicio = "<a href=""javascript:trocapapel('34/EURUSD')"""
htmlFim = ""
posInicio = Instr(1, Retorno, htmlInicio)
Indicador = "EURODOLAR"
Nome = "Euro x Dólar"
htmlInicio = htmlInicioPadrao
htmlFim = htmlFimPadrao
Valor = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Percentual = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Hora = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Data = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Call objColecao.Add(Indicador, addIndicador(Nome, Valor, Percentual, Hora, Data))
'E U R O x R E A L
htmlInicio = "<a href=""javascript:trocapapel('62/BCUME-RS EUR')"""
htmlFim = ""
posInicio = Instr(1, Retorno, htmlInicio)
Indicador = "EUROREAL"
Nome = "Euro x Real"
htmlInicio = htmlInicioPadrao
htmlFim = htmlFimPadrao
Valor = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Percentual = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Hora = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Data = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Call objColecao.Add(Indicador, addIndicador(Nome, Valor, Percentual, Hora, Data))
'D O L A R F U T U R O
htmlInicio = "trocapapel('9/DRH8')"
htmlFim = ""
posInicio = Instr(1, Retorno, htmlInicio)
Indicador = "DOLARFUTURO"
Nome = "Dólar Futuro"
htmlInicio = htmlInicioPadrao
htmlFim = htmlFimPadrao
Valor = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Percentual = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Hora = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Data = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Call objColecao.Add(Indicador, addIndicador(Nome, Valor, Percentual, Hora, Data))
'R I S C O B R A S I L
htmlInicio = "<td width=""64"" class=""TitConteudo"">Brasil</td>"
htmlFim = ""
posInicio = Instr(1, Retorno, htmlInicio)
Indicador = "RISCOBRASIL"
Nome = "Risco Brasil"
htmlInicio = htmlInicioPadrao
htmlFim = htmlFimPadrao
Valor = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Percentual = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Hora = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Data = cutIndicador(htmlInicio, htmlFim, posInicio, Retorno)
Call objColecao.Add(Indicador, addIndicador(Nome, Valor, Percentual, Hora, Data))
'Retornando a função
Set getIndicadoresFinanceiros = objColecao
End Function
'-----------------------------------------------------
'Funcao: cutIndicador(ByVal htmlInicio, ByVal htmlFim, ByRef posInicio, ByVal Texto)
'Sinopse: Retorna Lista de Indicadores Financeiros
'Parâmetros:
' htmlInicio: String inicio para o corte
' htmlFim: String fim para o corte
' posInicio: Posição início para o corte
' Texto: Texto que será cortado
'Retorno: String
'Autor: Gabriel Fróes - www.codigofonte.com.br
'-----------------------------------------------------
Private Function cutIndicador(ByVal htmlInicio, ByVal htmlFim, ByRef posInicio, ByVal Texto)
posInicio = Instr(posInicio, Texto, htmlInicio) + Len(htmlInicio)
posFim = Instr(posInicio, Texto, htmlFim)
cutIndicador= Mid(Texto, posInicio, posFim - posInicio)
End Function
'-----------------------------------------------------
'Funcao: addIndicador(ByVal Nome, ByRef Valor, ByVal Percentual, ByVal Hora, ByVal Data)
'Sinopse: Gera um novo objeto Indicador
'Parâmetros:
' Nome
' Valor
' Percentual
' Hora
' Data
'Retorno: Indicador
'Autor: Gabriel Fróes - www.codigofonte.com.br
'-----------------------------------------------------
Private Function addIndicador(ByVal Nome, ByRef Valor, ByVal Percentual, ByVal Hora, ByVal Data)
Set addIndicador = New Indicador
addIndicador.Nome = Nome
addIndicador.Valor = Valor
addIndicador.Percentual = Percentual
addIndicador.Hora = Hora
addIndicador.Data = Data
End Function
Private Function BinaryToString(xBinary)
Dim Binary
Dim RS, LBinary
If VarType(xBinary)=8 Then Binary = MultiByteToBinary(xBinary) Else Binary = xBinary
Const adLongVarChar = 201
Set RS = CreateObject("ADODB.Recordset")
LBinary = LenB(Binary)
If LBinary>0 Then
RS.Fields.Append "mBinary", adLongVarChar, LBinary
RS.Open
RS.AddNew
RS("mBinary").AppendChunk Binary
RS.Update
BinaryToString = RS("mBinary")
Else
BinaryToString = ""
End If
Set RS = Nothing
End Function
Private Function MultiByteToBinary(MultiByte)
Dim RS, LMultiByte, Binary
Const adLongVarBinary = 205
Set RS = CreateObject("ADODB.Recordset")
LMultiByte = LenB(MultiByte)
If LMultiByte>0 Then
RS.Fields.Append "mBinary", adLongVarBinary, LMultiByte
RS.Open
RS.AddNew
RS("mBinary").AppendChunk MultiByte & ChrB(0)
RS.Update
Binary = RS("mBinary").GetChunk(LMultiByte)
End If
Set RS = Nothing
MultiByteToBinary = Binary
End Function
End Class
'-----------------------------------------------------
'Classe com os Atributos do Indicador Financeiro
'-----------------------------------------------------
Class Indicador
Public Nome
Public Valor
Public Percentual
Public Hora
Public Data
End Class
'-----------------------------------------------------
'EXEMPLO DE CHAMADA
'-----------------------------------------------------
Dim objIndFin
Dim objCol
Set objIndFin = New IndicadoresFinanceiros
Set objCol = Server.CreateObject("Scripting.Dictionary")
'Pegando os indicadores financeiros
Set objCol = objIndFin.getIndicadoresFinanceiros()
Response.Write "Indice: <b>" & objCol("RISCOBRASIL").Nome & "</b><br>"
Response.Write "Valor: <b>" & objCol("RISCOBRASIL").Valor & "</b><br>"
Response.Write "<hr>"
Response.Write "Indice: <b>" & objCol("DOLARFUTURO").Nome & "</b><br>"
Response.Write "Valor: <b>" & objCol("DOLARFUTURO").Valor & "</b><br>"
Set objCol = Nothing
Set objIndFin = Nothing
%>