L'indirizzo email non verrà pubblicato. i campi richiesti sono contrassegnati *

Siamo spiacenti, non ho pensato a come sarebbe apparso il codice nel commento inviato. Cancella se vuoi e ti ripubblicherò in un formato migliore.

Per quanto riguarda i commenti sul fatto che VBA sia arcaico, l'ho trovato davvero utile. Mi ha permesso di trasformare un processo di una settimana nel mio team in un processo di 10 minuti. Mi ha permesso di ridimensionare la maggior parte delle attività del mio team automatizzando quasi tutto.

Sono stato in grado di applicare convalide AD, estrarre dati da vari database di sistemi operativi e tagliare tutte le fastidiose query SQL, quindi tagliare e incollare.

Modificato un lavoro che richiedeva più query, generando manualmente più e-mail in un solo clic del pulsante.

Lo adoro assolutamente, arcaico o no.

Qualche tempo fa ho trovato qualcosa del genere e ho sviluppato un'applicazione basata su Excel che mi ha permesso di tenere traccia del numero di "Mi piace" su un set di pagine Facebook specifiche. Da allora l'ho esteso per utilizzare VBA per ottenere tutti i tipi di informazioni su vari siti Web.

instagram viewer

Il mio problema al momento è che ho qualche problema con IE e tendo ad usare Chrome.

Come faccio a tradurre il tipo di codice che hai sopra in modo che faccia la stessa cosa ma usando Chrome come browser. Posso usare un comando Shell per aprire il browser Chrome e passare a un URL specifico, ma non riesco a capire come estrarre informazioni da quella pagina.

Ad esempio, il mio codice Facebook è:

GetLikes secondario () Dim IeApp As InternetExplorerDim sURL As StringDim IeDoc As ObjectDim i As Longdebugmode = False If debugmode Then Open "c: VBAoutputvbaOutput.txt "Per Append As # 1" Crea nuova istanza di IE Set IeApp = New InternetExplorer "Rendi visibile - alcune cose non funzionano a meno che è visibile IeApp. Visible = debugmode per ogni mc In Selection'definire la pagina da aprire sURL = mc 'Trova la colonna chkDate = Date Set c = Range ("2: 2"). (chkDate) Se c non è niente, allora myCol = Range ("2: 2"). Trova (what: = "*", searchdirection: = xlPrevious) .Column + 1 Cells (1, myCol) = "Status" Cells (1, myCol + 1) = "Mi piace" Cells (1, myCol + 2) = "Links" Cells (2, myCol) = chkDate Cells (2, myCol + 1) = chkDate Cells (2, myCol + 2) = chkDate Else myCol = c. Fine colonna se 'mc. Offset (0, 1) .Value = Date isDown = mc. Offset (0, 3) .Value Se isDown = "Pagina giù" Quindi pageDown = "Pagina giù" numlikes = "" numlinks = "" doNothing = True Else 'vai alla pagina IeApp. Naviga su SURL 'Metti in pausa la macro usando un loop fino a quando la pagina non è completamente caricata Do Loop Until IeApp. ReadyState = READYSTATE_COMPLETE 'memorizza l'oggetto Document Set IeDoc = IeApp. Documento su errore Riprendi Codici successivi = IeDoc. Body.innertext If Err. Numero 0 Quindi Err. Cancella GoTo skiploop End If On Error GoTo 0 If debugmode Quindi scrivi # 1, codici & vbCrLf & vbCrLf numlinks = IeDoc. Link. Lunghezza a = IeApp. LocationName 'Debug. Stampa codici pageDown = True isPageStats = InStr (codici, "placePageStatsNumber") isGroup = InStr (codici, "uiButtonText> Join") isOldGroup = InStr (codici, "Questo gruppo è programmato per essere archiviato ") isOpenGroup = InStr (codici," Gruppo aperto ") isEvent = InStr (codici," Evento pubblico ") isClosedGroup = InStr (codici," Gruppo chiuso ") IsOpen = InStr (codici, a) isCommonInterest = InStr (codici, "Interesse comune") isMovie = InStr (codici, "Movieu003c") isNumberGiant = InStr (codici, "uiNumberGiant") notFound = InStr (codici, "La pagina richiesta non è stata trovata") profileUnavailable = InStr (a, "Profilo non disponibile") titlePos = InStr (codici, "") Se titlePos> 0 Quindi titlePos2 = InStr (titlePos, codici, "") Se titlePos> 0 Quindi titleName = Mid (codici, titlePos + 7, titlePos2 - titlePos - 7) Se isPageStats> 0 Quindi isPageStats = isPageStats + 23 pos2 = InStr (isPageStats, codes, "") pageDown = "Current" likeTxt = Mid (codici, isPageStats, pos2 - isPageStats) ElseIf isGroup> 0 Quindi likeTxt = "n.k." pageDown = "Group" ElseIf isOldGroup> 0 Quindi likeTxt = "n.k." pageDown = "Old Group" ElseIf isOpenGroup> 0 Quindi pos1 = InStr (isOpenGroup, codici, "Members (") + 9 pos2 = InStr (pos1, codici, ")") numMembers = Mid (codici, pos1, pos2 - pos1) pageDown = "Apri gruppo" likeTxt = LTrim ( numMembers) Altrimenti se isEvent> 0 Quindi pos1 = InStr (1, codici, "Centro assistenza") pos2 = InStr (pos1 + 1, codici, "Vedi tutto") + 9 pos3 = InStr (pos2, codici, "Partecipazione") - 1 Se pos3 = -1 Quindi pos1 = InStr (codici, "pagelet_event_guests_going") + 28 pos2 = InStr (pos1, codici, "> Going (") + 8 pos3 = InStr (pos2, codici, ")") numAttending = Mid (codici, pos2, pos3 - pos2) Altro numAttending = Mid (codici, pos2, pos3 - pos2) 'pos2 - pos1) End If likeTxt = LTrim (numAttending) pageDown = "Event" ElseIf isClosedGroup> 0 Quindi pageDown = "Gruppo chiuso" pos1 = InStr (isClosedGroup, codici, "Membri") + 9 pos2 = InStr (pos1, codici, ")") likeTxt = Mid (codici, pos1, pos2 - pos1) ElseIf isNumberGiant> 0 Quindi pos2 = InStr (isNumberGiant, codes, ">") pos3 = InStr (pos2, codici, "") likeTxt = Mid (codici, pos2 + 1, pos3 - pos2 - 1) pageDown = "Current" ElseIf isCommonInterest> 0 Quindi pageDown = "Interesse comune" likeTxt = "n.k." Altrimenti, se IsOpen> 0 E a "Facebook" Quindi pageDown = "Attuale" likeTxt = "n.k." ElseIf isMovie> 0 Quindi pageDown = "Movie" likeTxt = "n.k." End If If pageDown = True Quindi pageDown = "Pagina giù" likeTxt = "n.a." numlinks = "n.a." End If End If mc. Offset (0, myCol - 2) .Value = pageDown mc. Offset (0, myCol - 1) .Value = likeTxt mc. Offset (0, myCol - 0) = numlinksskiploop: pageDown = "" likeTxt = "" numlink = "" Avanti mc'Clean up IeApp. Esci Set IeApp = Nothing Se debugmode Quindi Chiudi # 1 End Sub

È goffo ma fa il lavoro.

Immagino che tutto ciò che cerco sia come estrarre .Body.innertext da un'istanza di Google Chrome.

Come ha detto Jeff, non per sostituire il browser, ma per utilizzarlo per un'applicazione specifica. Ho usato questo metodo due volte.

Appartengo a un club di hobby locale, ma devi anche essere un membro del club nazionale. Utilizzavo una query Web di Excel per scorrere tra i nostri membri (in base al numero ID del membro nazionale) e verificare che i membri fossero pagati nell'organizzazione nazionale. Ma qualche anno fa, l'organizzazione nazionale ha cambiato il modo in cui il loro sito funziona e la query web non funzionava più. Ma questo metodo mi consente ancora di scorrere rapidamente tra i membri e verificare visivamente i membri nazionali. (Ho incorporato il browser in un modulo Excel che visualizza contemporaneamente le informazioni sui membri del nostro club locale.)

Quindi la settimana scorsa, al lavoro, dovevamo eseguire un audit di precisione sulle informazioni contenute in circa 10.000 immagini; confrontando le informazioni acquisite sull'immagine con le informazioni correlate nel nostro database e assicurando che corrispondano. Quindi avevo bisogno di un modo per gli utenti di guardare rapidamente un'immagine, digitare alcune informazioni contenute nell'immagine e ripetere questo ripetutamente più di 10.000 volte. Abbiamo messo le immagini su un server Web e ho usato questo metodo per estrarre l'immagine in una finestra del browser in un modulo di immissione dati Excel. Gli utenti visualizzerebbero l'immagine, digitare le informazioni richieste nel modulo di immissione dati, premere il tasto invio e passare immediatamente all'immagine successiva per la revisione.

Per applicazioni come ho descritto sopra, è abbastanza utile. Probabilmente non mi prenderò mai il tempo per diventare esperto in un linguaggio di programmazione "più serio", ma posso registrare macro e snippet abbastanza bene attraverso VBA. L'audit di accuratezza mi ha impiegato meno di un giorno per sviluppare, testare e implementare completamente. Non avevo bisogno di estrarre le risorse degli sviluppatori dalle loro attività assegnate (e dubito seriamente che nessuno dei nostri sviluppatori Java o PL-SQL avrebbe potuto farlo più velocemente di quanto non avessi fatto usando Excel vanilla e VBA.