Vorrei inviare stringhe ad una applicazione exe, riesco ad inviare il carattere TAB in modo da far posizionare il cursore nel campo di immissione ma non ad inserirci un testo, questo il mio codice
Non so che dire a me apre https://web.whatsapp.com/ il contatto indicato su A2 e scrive il messaggio indicato su B2, devo solo inviarlo.
Non ho provato la tua macro in quanto non ho ancora scaricato whatsapp desktop, appena ho due minuti la provo.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Il percorso è C:\Users\gaetano\AppData\Local\WhatsApp\WhatsApp.exe.
Con l'app si può mettere il nome utente invece del numero di telefono, io avevo provato la tua macro per la versione web col nome utente, invece col num di telefono funziona ma aspetta l'invio manuale, quindi non è adatta per spedire messaggi ad una lista di contatti.
Con Excel usando SendKeys riesco a farlo e provavo a farlo anche con libre.
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel ha scritto: ↑giovedì 24 novembre 2022, 20:48
Il percorso è C:\Users\gaetano\AppData\Local\WhatsApp\WhatsApp.exe
Si questo intendevo, ma non esiste e la tua macro va in errore.
Con excel pure a me funziona sempre con whatsapp web, faccio una prova per vedere se riesco ad inviarlo tramite nome contatto.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Sub InvioWhatsApp
doc = ThisComponent
Sh = doc.Sheets(0)
testo = sh.GetCellByPosition(1,1).String
Stringa = "https://web.whatsapp.com/"
Dim shell As Object
Set shell = CreateObject("shell.application")
Set shell2 = CreateObject("WScript.Shell")
shell.Open Stringa
Wait 10000'
For x = 2 To 3
contatti = sh.GetCellByPosition(0, x).String
shell2.SendKeys("{TAB}{TAB}{TAB}{TAB}", True)
Wait 10000'
shell2.SendKeys(contatti, True)
shell2.SendKeys("~", True)
wait 10000
shell2.SendKeys(testo, True)
wait 3000
shell2.SendKeys("~", True)
shell2.SendKeys("{TAB}", True) 'Posiziona il cursore nel campo cerca per il prossimo contatto, se non si usa l'invio multiplo con il ciclo for può
'essere tolto
next x
End Sub
Naturalmente i tempi possono essere accorciati dipende dalle caratteristiche del proprio pc, il primo wait consiglio di lasciarlo a 10000 per dare tempo al pc di aprire whatsapp e posizionare il cursore sul campo cerca.
Purtroppo non riesco a provarla su WhatsApp pc in quanto la macro mi restituisce errore sul percorso.
Un saluto a tutti.
Scusate se mi accodo ad un problema già risolto, ma vorrei sapere se lo stesso risultato è possibile ottenerlo anche in ambiente GNU/Linux.
Ho provato su LO il codice scritto da @patel e @Gaetanopr ma non funziona.
All'istruzione " Set shell = CreateObject("shell.application") " mi restituisce il seguente errore:
"Errore nel creare l'oggetto. Formato non valido: impossibile caricare il modulo."
Esiste una possibile soluzione?
Saluti
Geo
Per puro divertimento ho voluto implementare la macro per inviare pure gli allegati, allego file aggiornato dove nella cella C2 basta indicare il nome del file da allegare(che deve trovarsi nella cartella che si apre di default quando si seleziona allega documento), nella macro ho impostato diversi tempi di attesa per visualizzare tutte le operazioni che vengono compiute.
patel ha scritto: ↑mercoledì 30 novembre 2022, 9:49
Funziona perfettamente, ma non esiste il modo di indicare la cartella? mi si apre Desktop che io non uso mai.
Certo, ti basta inserire il nome del file completo di percorso C:\Users\Gaetano\Downloads\doc.pdf
Comunque il percorso rimane in memoria, nel senso che se manualmente indichi il percorso della cartella dei tuoi file successivamente viene usata questa, ma è sempre meglio indicare il percorso completo.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Non ho più provato, in pratica sul percorso che dovrebbe avere non la trovo e andando sul collegamento facendo Proprietà > Percorso è presente una serie di caratteri indecifrabili, l'ho subito disinstallata . Nel fine settimana penso di dedicarci un pò di più tempo.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Ciao geovign
la tua domanda "ma vorrei sapere se lo stesso risultato è possibile ottenerlo anche in ambiente GNU/Linux" attiva una considerazione che spesso viene ignorata. LibreOffice è stato progettato per essere ambiente multipiattaforma, ed i comandi e funzioni Basic e le API sono progettate per lavorare indipendentemente dalla piattaforma, e risulterebbe esistente in Basic una routine SendKeys Deprecata che genera un errore.
La funzione CreateObject, comune in molti linguaggi, viene definita da Pitonyak come : "CreateObject(obj_type) Able to create any standard type, more flexible than CreateUnoStruct and CreateUnoService" e quindi dovrebbe essere usata con i nomi dei Service presenti nelle API.
La funzione usata nella soluzione proposta Set shell2 = CreateObject("WScript.Shell") riesce a creare (con mia meraviglia!!) un oggetto COM di una dll wshom.ocx specifica dell'ambiente Windows, e precisamente in linguaggio di Windows Script Host che gestisce per l'appunto tale ambiente, ed usata nei file vbs (visual basic script) che tra l'altro molti antivirus bloccano per la potenziale possibilità di essere un virus.
Penso che una strada da studiare sia in ambiente python dove esiste un modulo selenium (Selenium è una libreria Python utilizzata per l’automazione del browser web) con una funzione send_keys, ma mi sembra piuttosto complesso. Nel caso fosse trovata una soluzione, tale funzione potrebbe essere lanciata dal Basic.
Ultime notizie: ho letto che WScript e Visual Basic Script verranno in futuro tolti da Windows a causa dei molti virus che lo utilizzano !!!