Pagina 1 di 2

[VBA] Verificare se mi trovo in LAN locale

MessaggioInviato: 13 gen 2023, 16:52
da Bobo360
Ciao a tutti, ho la necessita di riconoscere se mi trovo in Ufficio o a Casa.
cioè in ufficio abbiamo un server collegato in LAN.
Ora mi piacerebbe riconoscere in automatico se sono in ufficio oppure mi trovo a casa.
Se sono in ufficio uso dei comandi per copiare file o aprire cartelle via LAN
mentre se sono in ufficio uso comandi FTP.

ho sperimentato questo codice:
Codice: Seleziona tutto
[B]Private Sub Comando6_Click()[\B]
Dim FSO As Object
Dim cartella As String
cartella = "\\192.168.1.200\Scanner\CartellaTest\"
Set FSO = CreateObject("Scripting.FileSystemObject")
On Error GoTo ERRORE
FSO.CreateFolder (cartella)
Me.Locale = "Ufficio"
FSO.DeleteFolder (cartella)
Exit Sub

ERRORE:
        Me.Locale = "FTP"
End Sub


Solo che il problema che risconto, che se sono in ufficio la creazione della cartella è immediata, mentre se sono a casa per tentare di creare la cartella, quindi prima di dare errore passono 55 secondi.
Si può fare qualcosa di più immediato?

Grazie

;-) ;-) O_/

Re: [VBA] Verificare se mi trovo in LAN locale

MessaggioInviato: 13 gen 2023, 17:11
da alev
Non conosco VBA ma, per identificare in quale LAN ti trovi, userei una verifica di un MAC Address a scelta (hub/switch oppure gateway)

Il problema che rilevi è probabilmente dovuto alle impostazioni di TimeOut della LAN di casa e non credo siano modificabili senza intervenire sui firmware delle interfacce di rete remote

Re: [VBA] Verificare se mi trovo in LAN locale

MessaggioInviato: 13 gen 2023, 18:00
da Bobo360
Grazie, questa è una bellissima idea, ma non ho mai usato verifiche di MAC address con VBA, se qualcuno mi può dare una mano? grazie.

Re: [VBA] Verificare se mi trovo in LAN locale

MessaggioInviato: 13 gen 2023, 18:14
da alev
Come dicevo, non conosco VBA ma cercando in rete ho trovato qualche sito che tratta la questione MAC:

https://officetricks.com/get-mac-address-excel-vba/
https://excelhub.org/mac-address-lookup ... -vba-code/
https://gist.github.com/dck-jp/3310512

Non è detto che gli esempi linkati siano adeguati al tuo scenario ma qualche spunto potrebbero darlo

Re: [VBA] Verificare se mi trovo in LAN locale

MessaggioInviato: 13 gen 2023, 18:21
da Bobo360
Grazie mille, studio e vi faccio sapere.

:-) :-) :-)

Re: [VBA] Verificare se mi trovo in LAN locale

MessaggioInviato: 13 gen 2023, 20:00
da Bobo360
Volevo modificare il post sopra, ma mi sa che non si può fare dopo un poco di tempo.
I link che hai messo sopra, purtroppo servono per MAC address su tutti i dispositivi rete (anche virtuali) ma non posso cercare MAC nella rete LAN.

Ma mi hanno dato spunto e ho trovato forse qualcosa, provo e vi faccio sapere.

Grazie O_/ O_/ O_/

Re: [VBA] Verificare se mi trovo in LAN locale

MessaggioInviato: 13 gen 2023, 21:46
da micdisav
Credo si potrebbe pingare (o funzione equivalente) un certo numero di IP adress.
Gli IP adress (relative alle 2 reti) si mantengono in un file configurazione, poi andare di "if"

Re: [VBA] Verificare se mi trovo in LAN locale

MessaggioInviato: 14 gen 2023, 8:38
da alev
Spesso, nelle LAN aziendali il ping non è abilitato sui dispositivi di rete

Inoltre, LAN di casa ed aziendale potrebbero anche avere il medesimo indirizzamento IP e questo renderebbe inefficace la funzione di verifica

Re: [VBA] Verificare se mi trovo in LAN locale

MessaggioInviato: 15 gen 2023, 0:03
da micdisav
Buonasera,
evitando gli IP address e ping ("meno invasivo" e molto + semplice!):
1) da VB, lanciare il cmd (tipo ShellExecute(...) con API32):

netsh interface show interface >quali_interfacce.txt

che produce il file output "quali_interfacce.txt" (dove vuoi tu, poi lo cancelli o mantieni traccia di ciò che hai fatto)

2) con VB leggi "quali_interfacce.txt"; dalla lettura contenuto colonna "Nome interfaccia", puoi risalire agevolmente alla postazione LAVORO o CASA del PC in cui ti trovi.
A tal punto, sai dove è il PC che invoca e, agisci di conseguenza tramite istruzioni VB.

2bis) se si ritiene opportuno; cioè incorrono ambiguità tra i 2 siti, si può rinominare l'interfaccia (da "connessioni di rete" di Windows)

Saluti, Michele.

Allego sia "quali_interfacce.txt" che i contenuti di 3 finestre di Windows attinenti:
CMD_NetshInterfaceShowInterface+connessioni.png

quali_interfacce.zip
(319 Byte) Scaricato 119 volte

Re: [VBA] Verificare se mi trovo in LAN locale

MessaggioInviato: 15 gen 2023, 8:52
da alev
Non ho possibilità di verificare nell'arco di pochi giorni, ma mi risulta che il campo "Nome interfaccia" sia legato al PC/Notebook utilizzato e non alla LAN a cui si è collegati