Die VBA-Prozedur gibt eine unterschiedliche Anzahl von Zeichenfolgenvariablen aus, die deklariert und wiederverwendet werden sollen
Hier haben wir ein Verfahren geliefertCodo durchHerr Tim Williams die druckt auf demImmediate window
etwas, das wir wirklich wollen. Ich habe einige kleine Änderungen an der vorgenommenOriginalkopie und ich habe das KommentarwortMODIFICATION
neben ihnen
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
Sie können in der vierten Änderung / Ergänzung feststellen, dass eine Person einfach den Börsenticker in Zelle A1 eingeben und den Code abfeuern kann
Ticker = Worksheets("Sheet1").Range("A1").Value 'MODIFICATION
Jetzt ist die Sache, dass, wenn wir verschiedene Börsenticker setzen, wir unterschiedlich bekommenAnzahl der im Direktfenster gedruckten Zeilen.
Wenn Sie beispielsweise in Zelle A1 den Ticker CRR eingeben, erhalten Sie 11 Ergebnisse
Wenn wir nun in Zelle A1 den Ticker MSFT eingeben, erhalten wir 14 Ergebnisse
Der springende Punkt des Problems ist nun, dass diese Zeichenfolgenwerte in die eingefügt werden müssenRIFLE macro
und obwohl ich die Werte, die ich von jeder Schleifeniteration in den Zeichenkette-Variablen erhalten könnte, beurteilen könnte, ist, dass das ein Affenschlüssel in meinem Verstand wirftMAGAZINE macro
wie es logisch isthat keine exakte Anzahl von Zeilen, die in dem unmittelbaren Fenster gedruckt werden. Das sieht man eigentlich auf den beiden vorhergehenden Bildern ...
Wie ist es also möglich, wennMAGAZINE macro
hat ein Ergebnis von etwa 6 Zeilen; Diese Variablen müssen 6 Zeichenfolgenvariablen zugewiesen werden und haben keine 30 Zeichenfolgenvariablen, die immer als verheerend eingestuft werden und wenn das Ergebnis 14 Zeilen ist. Diese können 14 String-Variablen zugewiesen werden.
Wie kann dies zur Laufzeit eingestellt werden, damit das Gewehr immer mit der richtigen Anzahl von Runden geladen wird?
Weil ich dort nicht aufhören werde; dann habe ich vor, diese String-Variablen in die zu steckenRIFLE macro
zur Verfügung gestellt vonuser2140261 und unten gezeigt ...
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
Wenn Sie diese schwankende Anzahl von Zeichenfolgenwerten, die aus dem MAGAZIN-Makro kommen, in Zeichenfolgenvariablen im RIFLE-Makro einfügen könnten, würde dies das gesamte Problem lösen.
Das RIFLE-Makro hier hat von seiner ursprünglichen Form diestrXMLSite
String Variabe.
UPDATE Ich versuche gerade, es in ein Array zu laden und dann zu entladen ...