VBA estrae dati XML in Excel

Una domanda complicata su VBA Si prega di vedere le immagini per la vostra visione precisa del problema

Se digiti su Google “SEC EDGAR” Passo 1 e inserisci BDX nel campo Cerca azienda Passo 2 fai clic su Cerca, quindi nei risultati di ricerca fai clic sul primo pulsante Documento Passaggio 3 e tu scegli 10-K per arrivare al dettaglio dell’archivio. Da lì se scegliamo XBRL INSTANCE DOCUMENT Passaggio 4 . Finalmente all’interno del documento XML negli elementi Milioni di dolori per me come puoi vedere nell’ultima immagine abbiamo l’elemento e il suo nome.

Esiste comunque la possibilità di estrarre questa cosa utilizzando VBA e inserirla nella cella Excel della nostra preferenza? Sono un principiante in VBA quindi per favore sii gentile a spiegare anche il codice un po ‘di più e anche quali riferimenti stiamo aggiungendo da Strumenti in VBE e perché.

Quello che sto cercando è un blocco di codice che cattura i dati tra gli elementi XML (** Importante: il documento dell’istanza XML deve essere nella posizione Web fornita .) ** Ad esempio in 5 qualcosa che tirerà il 5 e popolerà una cella designata nel blocco di codice e alcune istruzioni così posso tenerlo e studiare il codice ****

QUESTA DOMANDA È RISPOSTA. PER OTTENERE IL CODICE NELLA RISPOSTA DA LAVORARE È NECESSARIO AVER UTILIZZATO IL Microsoft XML, V6.0 su Strumenti VBE -> Riferimenti

Dovresti comunque provare a conoscere Microsoft XML Core Services (MSXML) ma per iniziare puoi iniziare con quanto segue e modificarlo secondo necessità. Se hai bisogno di molti valori, varrebbe la pena eseguire il ciclo dei ChildNodes di objXMLNodexbrl poiché molti dei nodes sembrano duplicati.

invece di usare nel mio esempio ho usato un valore effettivo per us-gaap:DebtInstrumentInterestRateStatedPercentage (quello che avevi cerchiato nella tua domanda)

 Sub GetNode() 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