[Risolto] Visual Basic for Applications (VBA) e OpenOffice Basic: è possibile una "conciliazione-mediazione"?

Creare una macro - Scrivere uno script - Usare le API
Rispondi
Avatar utente
markinson
Messaggi: 121
Iscritto il: mercoledì 24 giugno 2020, 15:18

[Risolto] Visual Basic for Applications (VBA) e OpenOffice Basic: è possibile una "conciliazione-mediazione"?

Messaggio da markinson »

Salve a tutti! :)

Mi scuso innanzitutto se non ho pubblicato la discussione nella giusta sezione, ma sono molto disorientato, con pochissime idee e quelle poche estremamente confuse. Per cui: siate indulgenti, vi prego.

La questione in premessa è la seguente: ho recuperato, per curiosità personale, un libro scolastico dal titolo "Introduzione alla programmazione in Visual Basic for Applications" (autore Claudio Fornaro).
Come accennato, per curiosità personale e perché al lavoro comunque si utilizza il pacchetto Microsoft Office, ho iniziato a leggerlo, con il principale intento di provare a capire qualcosina di programmazione in VBA.
Tuttavia, sia per la mia "filosofia di vita" sia perché a casa non ho altre soluzioni, posso per il momento esercitarmi solo appoggiandomi a LibreOffice oppure OpenOffice e, in particolare, al loro Basic.

Avrei già pronta una batteria di domande, ma, prima di iniziare, ho ritenuto opportuno chiarire la mia posizione, per comprendere la fattibilità di studiare un libro scritto per VBA, pur potendomi solo esercitare solo in ambiente (per dire) OpenOffice Basic: è realizzabile questo mio intento oppure sono due mondi troppo lontani?

Grazie per ogni suggerimento che, anticipo, sarà propedeutico probabilmente a nuove richieste di aiuto che ho già in caldo ... :)
Ultima modifica di markinson il domenica 19 novembre 2023, 8:14, modificato 3 volte in totale.
OpenOffice 4.1.15 / LibreOffice 7 still - Windows 10 Pro x64
"Facesti come quei che va di notte, che porta il lume dietro e sé non giova, ma dopo sé fa le persone dotte"
Dante (Purgatorio, Canto XXII)
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Visual Basic for Applications (VBA) e OpenOffice Basic: è possibile una "conciliazione-mediazione"?

Messaggio da Gaetanopr »

Ciao, il libro ti servirà per "imparare a programmare", imparare a ragionare da programmatore usando in questo caso il Visual Basic, quindi all'uso dei cicli delle funzioni e a tutti gli strumenti fondamentali per scrivere "programmi" io ho letto guide su diversi linguaggi e tutte mi sono state utili (a risolvere problemi) a prescindere se usi LO - MO o altro (diciamo che l'importante è apprendere le tecniche oltre al linguaggio), sono le tecniche apprese che ti torneranno utili.
Naturalmente se vuoi utilizzare LibreOffice devi necessariamente leggere delle guide per il Basic e le API di LO.

Saluti
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Avatar utente
markinson
Messaggi: 121
Iscritto il: mercoledì 24 giugno 2020, 15:18

Re: Visual Basic for Applications (VBA) e OpenOffice Basic: è possibile una "conciliazione-mediazione"?

Messaggio da markinson »

Gentilissimo Gaetanopr,
grazie innanzitutto per la risposta e le tue puntuali considerazioni.

Avendo un'infarinata dell'era scolastica di programmazione, non posso che condividere quanto da te affermato, soprattutto circa la necessità di approfondire poi nello specifico l'ambiente Basic di Apache OpenOffice ovvero LibreOffice.

Tuttavia, già in principio, mi trovo in difficoltà. Da questa mia difficoltà è scaturita la domanda del thread.
Infatti, come tutti i buoni libri scolastici, il volume in mio possesso propone degli esercizi che, a mio modesto avviso, vanno sempre concretamente provati per saggiare la bontà di quanto poi programmato dal singolo.

Ebbene, mi sono trovato, per esempio, con questo primo problema, che illustro qui soltanto per cercare di spiegarmi meglio: eseguire la sottrazione di due numeri interi inseriti da tastiera.

Nel libro veniva suggerita la seguente serie di istruzioni in VBA:

Codice: Seleziona tutto

Private Sub CommandButton1_Click()
X = InputBox("Inserisci il primo valore")
Y = InputBox("Inserisci il secondo valore")
S = X - Y
Msgbox (S)
End Sub
che, per cercare di far "girare" sotto Basic, ho dovuto trasformare in:

Codice: Seleziona tutto

Private Sub CommandButton1_Click()
Dim X As Integer
Dim Y As Integer
Dim S As Integer
X = 0
Y = 0
S = 0
X = InputBox("Inserisci il primo valore")
Y = InputBox("Inserisci il secondo valore")
S = X - Y
Msgbox (S)
End Sub
Modificato come sopra descritto il codice, le istruzioni sono state correttamente eseguite in Basic e il risultato è stato restituito in modo altrettanto corretto (senza l'inizializzazione delle variabili, invece, mi venivano valori errati).

Questa è solo una piccola esemplificazione.
Non penso che sia stato scritto male l'esempio in VBA nel libro; piuttosto Basic necessita di un, diciamo, migliore dettaglio. Questo ho creduto.
Sarà così? Non lo so francamente.

Comunque, fatte tali ulteriori precisazioni, proverò a chiedere qui sul forum, consapevole che sto leggendo un libro per VBA che devo però in qualche maniera declinare in ambiente Basic di OO o LO.

Grazie in anticipo per ogni ulteriore chiarimento e/o suggerimento! ;)
OpenOffice 4.1.15 / LibreOffice 7 still - Windows 10 Pro x64
"Facesti come quei che va di notte, che porta il lume dietro e sé non giova, ma dopo sé fa le persone dotte"
Dante (Purgatorio, Canto XXII)
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Visual Basic for Applications (VBA) e OpenOffice Basic: è possibile una "conciliazione-mediazione"?

Messaggio da Gaetanopr »

Ricordati che le InputBox restituiscono sempre del testo, in Basic come in MO non è obbligatorio dichiarare e inizializzare le variabili come in altri linguaggi, però per non incorrere ad errori improvvisi che ti faranno girare la testa è sempre meglio procedere alla dichiarazione delle variabili e non all' inizializzazione come avviene per Python che è obbligatorio.
Ti consiglio di leggere questa guida https://www.brescianet.com/appunti/vari ... ce_ita.pdf
Ti basta fare così

Codice: Seleziona tutto

Private Sub CommandButton1_Click()
Dim X As Integer
Dim Y As Integer
Dim S As Integer
X = InputBox("Inserisci il primo valore")
Y = InputBox("Inserisci il secondo valore")
S = X + Y
Msgbox (S)
End Sub
Oppure puoi convertire il testo in valore numerico, naturalmente se digiti un testo non convertibile la macro andrà in errore.

Codice: Seleziona tutto

Private Sub CommandButton1_Click()
X = InputBox("Inserisci il primo valore")
Y = InputBox("Inserisci il secondo valore")
S = Int(X) + 	Int(Y)
Msgbox (S)
End Sub

In questi casi è sempre meglio effettuare una verifica del dato digitato tramite la funzione IsNumeric

Saluti
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Avatar utente
markinson
Messaggi: 121
Iscritto il: mercoledì 24 giugno 2020, 15:18

Re: Visual Basic for Applications (VBA) e OpenOffice Basic: è possibile una "conciliazione-mediazione"?

Messaggio da markinson »

:super:

Grazie ancora una volta del tuo tempo e dei suggerimenti!

Pur non volendo andare fuori argomento, visto che la questione posta da me nel thread aveva carattere puramente generale e ricognitivo (diciamo così), se posso, alcune considerazioni aggiuntive.
Gaetanopr ha scritto: sabato 11 novembre 2023, 17:07 Ricordati che le InputBox restituiscono sempre del testo ...
Il dubbio mi era venuto! Tanto è vero che per "forzare" la variabile ad essere numerica mi ero inventato la seguente espressione:

Codice: Seleziona tutto

X = InputBox("Inserisci il primo valore") + 0
Gaetanopr ha scritto: sabato 11 novembre 2023, 17:07 ... per non incorrere ad errori improvvisi che ti faranno girare la testa è sempre meglio procedere alla dichiarazione delle variabili e non all' inizializzazione come avviene per Python che è obbligatorio.
Sono ricorso alla inizializzazione un po' per (vecchissima) deformazione (quando secoli addietro programmavo qualcosina), per altro verso perché facendo girare più volte le istruzioni mi venivano fuori risultati completamente errati.
Gaetanopr ha scritto: sabato 11 novembre 2023, 17:07 Ti consiglio di leggere questa guida https://www.brescianet.com/appunti/vari ... ce_ita.pdf
Andrò a prendere senz'altro la guida! Ho già creato una cartella ad hoc per la sperimentazione della "mia" programmazione ... :oops:
Gaetanopr ha scritto: sabato 11 novembre 2023, 17:07 In questi casi è sempre meglio effettuare una verifica del dato digitato tramite la funzione IsNumeric
Cercherò di studiarmi anche questa funzione, ma davvero sono alle primissime armi in questo mondo e, francamente, non saprei nemmeno come utilizzarla al momento ... :P

Grazie ancora!
OpenOffice 4.1.15 / LibreOffice 7 still - Windows 10 Pro x64
"Facesti come quei che va di notte, che porta il lume dietro e sé non giova, ma dopo sé fa le persone dotte"
Dante (Purgatorio, Canto XXII)
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Visual Basic for Applications (VBA) e OpenOffice Basic: è possibile una "conciliazione-mediazione"?

Messaggio da patel »

http://www.pitonyak.org/oo.php
Qui troverai molti esempi di programmazione
-------------------
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
Avatar utente
markinson
Messaggi: 121
Iscritto il: mercoledì 24 giugno 2020, 15:18

Re: Visual Basic for Applications (VBA) e OpenOffice Basic: è possibile una "conciliazione-mediazione"?

Messaggio da markinson »

Grazie, patel! :super:

Ho già inserito il sito da te suggerito tra i miei preferiti e scaricato il seguente materiale:
  • OpenOffice.org Macros Explained.odt V4.1(aggiornato al 18 settembre 2023!),
  • Incomplete comments on VBA,
  • PDF Incomplete comments on VBA,
laddove, per gli ultimi due documenti (aggiornati al 2007), nella descrizione l'autore Andrew Pitonyak espressamente afferma: "Some years ago, I compared VBA and OOo Basic based on the language syntax. I never finished.".

In pratica, almeno dal titolo del file, esattamente ciò che cercavo! ;)

Ho ritenuto comunque di darmi una specie di metodo, ossia di studiare in progressione, evitando di saltare da una risorsa all'altra. Adesso desidererei terminare, se e quando possibile, il testo citato nell'incipit del thread, poi passerò pian piano alle altre risorse.
Purtroppo mi sono già un po' arenato QUI, forse non sono stato chiaro a sufficienza ...
OpenOffice 4.1.15 / LibreOffice 7 still - Windows 10 Pro x64
"Facesti come quei che va di notte, che porta il lume dietro e sé non giova, ma dopo sé fa le persone dotte"
Dante (Purgatorio, Canto XXII)
Rispondi