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 ...

questionAnswers(1)

yourAnswerToTheQuestion