O procedimento VBA gera um número variável de variáveis de cadeia a serem declaradas e reutilizadas
Aqui temos um procedimento fornecido paraCodo porTim Williams que imprime noImmediate window
algo que realmente queremos. Eu fiz algumas mini modificações nocópia original e eu tenho a palavra comentárioMODIFICATION
ao lado deles
Sub MAGAZINE()
Dim IE As InternetExplorer ' MODIFICATION
Dim els, el, colDocLinks As New Collection
Dim lnk
Dim Ticker As String ' MODIFICATION
Set IE = New InternetExplorer 'MODIFICATION
IE.Visible = True
Ticker = Worksheets("Sheet1").Range("A1").Value 'MODIFICATION
loadpage IE, "https://www.sec.gov/cgi-bin/browse-edgar?" & _
"action=getcompany&CIK=" & Ticker & "&type=10-Q" & _ 'MODIFICATION by putting the Ticker String Variable and then Concatenate accordingly
"&dateb=&owner=exclude&count=20"
Set els = IE.Document.getelementsbytagname("a")
For Each el In els
If Trim(el.innertext) = "Documents" Then
colDocLinks.Add el.href
End If
Next el
For Each lnk In colDocLinks
loadpage IE, CStr(lnk)
For Each el In IE.Document.getelementsbytagname("a")
If el.href Like "*[0-9].xml" Then 'MODIFICATION
Debug.Print el.innertext, el.href
End If
Next el
Next lnk
End Sub
Sub loadpage(IE As Object, url As String)
IE.Navigate url
Do While IE.Busy Or IE.ReadyState <> READYSTATE_COMPLETE
DoEvents
Loop
End Sub
Você pode notar na quarta modificação / adição que uma pessoa pode simplesmente digitar o Stock Ticker na célula A1 e disparar o código
Ticker = Worksheets("Sheet1").Range("A1").Value 'MODIFICATION
Agora, a questão é que, se colocarmos diferentes cotistas, ficaremos diferentesnúmero de linhas impressas na janela Imediata.
Por exemplo, digitando na célula A1 o ticker CRR, obtemos 11 resultados
Agora, se digitarmos na célula A1 o código MSFT, obtemos 14 resultados
Agora, o cerne da questão é que esses valores de cadeia precisam ser inseridos no diretórioRIFLE macro
e embora eu possa avaliar os valores que recebo de cada iteração de loop em String Variables, o que lança uma chave de macaco em minha mente é que oMAGAZINE macro
como é lógiconão possui um número exato de linhas impressas na janela imediata. Você pode ver isso nas duas fotos anteriores ...
Então, como é possível quandoMAGAZINE macro
tem um resultado de digamos 6 linhas; estes devem ser atribuídos a 6 String Variables e não possuem 30 String Variables sempre declarados destruindo a memória e quando o resultado é 14 Lines; estes devem ser atribuídos a 14 String Variables.
Como isso pode ser ajustado no tempo de execução para que o rifle sempre seja carregado com o número correto de disparos?
Porque eu não vou parar por aí; então eu tenho planos para conectar essas variáveis de string noRIFLE macro
fornecido poruser2140261 e mostrado abaixo ...
Sub RIFLE()
Dim strXMLSite As String
Dim objXMLHTTP As MSXML2.XMLHTTP
Dim objXMLDoc As MSXML2.DOMDocument
Dim objXMLNodexbrl As MSXML2.IXMLDOMNode
Dim objXMLNodeDIIRSP As MSXML2.IXMLDOMNode
Set objXMLHTTP = New MSXML2.XMLHTTP
Set objXMLDoc = New MSXML2.DOMDocument
strXMLSite = "http://www.sec.gov/Archives/edgar/data/10795/000119312513456802/bdx-20130930.xml"
objXMLHTTP.Open "POST", strXMLSite, False
objXMLHTTP.send
objXMLDoc.LoadXML (objXMLHTTP.responseText)
Set objXMLNodexbrl = objXMLDoc.SelectSingleNode("xbrl")
Set objXMLNodeDIIRSP = objXMLNodexbrl.SelectSingleNode("us-gaap:DebtInstrumentInterestRateStatedPercentage")
Worksheets("Sheet1").Range("A1").Value = objXMLNodeDIIRSP.Text
End Sub
Se você pudesse conectar esse número flutuante de valores de seqüência de caracteres que sai da macro MAGAZINE em variáveis de seqüência de caracteres na macro RIFLE, isso ajudaria parte do problema inteiro.
A macro RIFLE aqui tem da sua forma original ostrXMLSite
String Variabe.
ATUALIZAÇÃO No momento, estou tentando carregá-lo em uma matriz e depois descarregá-lo ...