Utilizzo di Visual Basic VBA con HTTPS e SSL

È possibile accedere alle pagine Web con HTTPS e che richiedono login / password utilizzando Excel? Bene, sì e no. Ecco l'affare e perché non è così semplice.

Innanzitutto, definiamo i termini

HTTPS è per convenzione l'identificatore di quello che viene chiamato SSL (Secure Sockets Layer). Ciò non ha nulla a che fare con password o accessi in quanto tali. Ciò che SSL fa è impostare una connessione crittografata tra un client Web e un server in modo che nessuna informazione venga inviata tra i due "in chiaro" - utilizzando trasmissioni non crittografate. Se le informazioni includono informazioni di accesso e password, la crittografia della trasmissione le protegge da occhi indiscreti... ma la crittografia delle password non è un requisito. Ho usato la frase "per convenzione" perché la vera tecnologia di sicurezza è SSL. HTTPS segnala solo al server che il client prevede di utilizzare quel protocollo. SSL può essere utilizzato in molti altri modi.

Quindi... se il tuo computer invia un URL a un server che utilizza SSL e tale URL inizia con HTTPS, il tuo computer sta dicendo al server:

instagram viewer

"Ehi, signor Server, diamo una mano a questa cosa di crittografia in modo che qualunque cosa diciamo d'ora in poi non venga intercettata da un cattivo. E una volta fatto, vai avanti e inviami la pagina indirizzata dall'URL. "

Il server invierà le informazioni chiave per l'impostazione di una connessione SSL. Sta al tuo computer fare davvero qualcosa con esso.

Questa è la 'chiave' (gioco di parole... beh, una sorta di intenzione) per capire il ruolo di VBA in Excel. La programmazione in VBA dovrebbe effettivamente compiere il passo successivo e implementare SSL sul lato client.

I browser Web "reali" lo fanno automaticamente e mostrano un piccolo simbolo di blocco nella riga di stato per mostrarti che è stato fatto. Ma se VBA apre la pagina Web come file e legge le informazioni in essa contenute nelle celle di un foglio di calcolo (un esempio molto comune), Excel non lo farà senza una programmazione aggiuntiva. La gentile offerta del server di stringere la mano e impostare comunicazioni SSL sicure viene ignorata da Excel.

Ma puoi leggere la pagina richiesta esattamente nello stesso modo

Per dimostrarlo, utilizziamo la connessione SSL utilizzata dal servizio Gmail di Google (che inizia con "https") e codifichiamo una chiamata per aprire quella connessione proprio come se fosse un file.

Questo legge la pagina web come se fosse un semplice file. Poiché le versioni recenti di Excel importeranno automaticamente HTML, dopo l'esecuzione dell'istruzione Open, la pagina Gmail (meno gli oggetti HTML dinamici) viene importata in un foglio di calcolo. L'obiettivo delle connessioni SSL è lo scambio di informazioni, non solo la lettura di una pagina Web, quindi questo non ti porterà molto lontano.

Per fare di più, devi avere un modo, nel tuo programma Excel VBA, di supportare sia il protocollo SSL sia forse DHTML. Probabilmente stai meglio iniziando dal pieno Visual Basic anziché Excel VBA. Quindi utilizzare controlli come WinInet dell'API di Internet Transfer e chiamare gli oggetti di Excel in base alle esigenze. Ma è possibile utilizzare WinInet direttamente da un programma VBA di Excel.

WinInet è un'API - Application Programming Interface - per WinInet.dll. Viene utilizzato principalmente come uno dei componenti principali di Internet Explorer, ma è possibile utilizzarlo anche direttamente dal codice e puoi utilizzarlo per HTTPS. Scrivere il codice per usare WinInet è almeno un'attività di media difficoltà. In generale, i passaggi coinvolti sono:

  • Connettersi al server HTTPS e inviare una richiesta HTTPS
  • Se il server richiede un certificato client firmato, inviare nuovamente la richiesta dopo aver collegato il contesto del certificato
  • Se il server è soddisfatto, la sessione è autenticata

Esistono due principali differenze nella scrittura del codice WinInet per utilizzare https anziché il normale HTTP:

È inoltre necessario tenere presente che la funzione di scambio di un login / password è logicamente indipendente dalla crittografia della sessione mediante https e SSL. Puoi fare l'uno o l'altro o entrambi. In molti casi, vanno insieme, ma non sempre. E l'implementazione dei requisiti WinInet non fa nulla per rispondere automaticamente a una richiesta di accesso / password. Se, ad esempio, il login e la password fanno parte di un modulo Web, potrebbe essere necessario capire il nomi dei campi e aggiorna i campi da Excel VBA prima di "pubblicare" la stringa di accesso in server. Rispondere correttamente alla sicurezza di un server Web è una parte importante di ciò che fa un browser Web. D'altra parte, se è richiesta l'autenticazione SSL, potresti prendere in considerazione l'utilizzo dell'oggetto InternetExplorer per accedere da VBA ...

La linea di fondo è che è possibile utilizzare https e accedere a un server da un programma VBA di Excel, ma non aspettatevi di scrivere il codice che lo fa in pochi minuti.

instagram story viewer