Ricerca drive USB

Creare una macro - Scrivere uno script - Usare le API
Rispondi
Avatar utente
LUGIUDANI
Messaggi: 400
Iscritto il: martedì 27 marzo 2012, 12:29

Ricerca drive USB

Messaggio da LUGIUDANI »

Ciao a tutti, eccomi qui con un altro problema che spero mi sappiate risolvere.
Sto utilizzando una chiavetta USB per archiviare dei dati e da un formulario database vorrei aprire questo archivio tramite macro.
La macro per aprirlo l'ho già fatta, solo vorrei creare un'altra macro da collegare all'apertura per l'identificazione automatica del drive dove è inserita la chiavetta.

Siccome all'interno delle macro del database ci sono dei percorsi che deve seguire per l'apertura di determinati file della chiavetta... se non trova il drive non me li apre perchè nella riga di comando ho impostato una lettera diversa.

Non so se mi sono spiegata bene... comunque sono a vostra disposizione per ogni chiarimento.

La macro per l'apertura, ad esempio, della finestra di dialogo del menu è la seguente...

Codice: Seleziona tutto

	Sub AperturaMenu
         MioMenu = LoadDialog("Standard","DlgMenu")
	oDialogModel = MioMenu.Model
	oDialogModel.step = 3
	path = ConvertToURL("E:\Progetto BilancioFamiliare\IMMAGINI\")
	oDialogModel.cmdContanti.ImageURL = ConvertToURL(path + "Contanti.png")
	oDialogModel.cmdFatture.ImageURL = ConvertToURL(path + "Fatture.png")
	oDialogModel.cmdDB.ImageURL = ConvertToURL(path + "Vai database.png")
	oDialogModel.cmdMediateca.ImageURL = ConvertToURL(path + "Vai film.png")
	oDialogModel.cmdPromemoria.ImageURL = ConvertToURL(path + "Promemoria.png")
	oDialogModel.cmdRubrica.ImageURL = ConvertToURL(path + "Rubrica.png")
	oDialogModel.cmdRisparmi.ImageURL = ConvertToURL(path + "Salvadanaio.jpg")
	oDialogModel.cmdNegozio.ImageURL = ConvertToURL(path + "Negozio.jpg")
	oDialogModel.cmdArchivio.ImageURL = ConvertToURL(path + "Archivio.png")
	oDialogModel.cmdChiudiDB.ImageURL = ConvertToURL(path + "Chiudi.png")
	oDialogModel.cmdPrelievi.ImageURL = ConvertToURL(path+"Bancomat.png")
	oDialogModel.cmdPrelievi2.ImageURL = ConvertToURL(path+"Bancomat.png")
	oDialogModel.cmdMovimenti.ImageURL = ConvertToURL(path+"Portafoglio.png")
	oDialogModel.cmdMovimenti2.ImageURL = ConvertToURL(path+"Portafoglio.png")
	oDialogModel.cmdReports.ImageURL = ConvertToURL(path + "Report.png")
	oDialogModel.cmdReports2.ImageURL = ConvertToURL(path + "Report.png")
	MioMenu.getControl("dfDataOdierna").text = Date
	PulsantiContabilitaOFF()
	MioMenu.execute()
End Sub


La riga di comando che vorrei modificare è questa:

path = ConvertToURL("E:\Progetto BilancioFamiliare\IMMAGINI\")

perchè se la chiavetta non è inserita nel drive E non mi inserisce, in questo caso, le immagini sui pulsanti.
Ultima modifica di LUGIUDANI il mercoledì 9 aprile 2014, 10:35, modificato 2 volte in totale.
Openoffice.org 3.2
vladko
Messaggi: 1637
Iscritto il: martedì 3 agosto 2010, 8:02

Re: Ricerca drive USB

Messaggio da vladko »

Attenzione, non c'è un buon consiglio di usare una chiavetta usb per file di database ;-)
AOO 3.4.1 AOO341m1(Build:9593) Linux Mint Debian/Mate 64bit java 1.6.0.22 XP PRO/32bit
con Base --> sempre backup!!!
Se problema è Risolto --> Inserire [Risolto]nel titolo come spiega qui, grazie :-)
Avatar utente
LUGIUDANI
Messaggi: 400
Iscritto il: martedì 27 marzo 2012, 12:29

Re: Ricerca drive USB

Messaggio da LUGIUDANI »

Per quale motivo Vladko? Al momento ci sto lavorando e non ho avuto problemi
Openoffice.org 3.2
vladko
Messaggi: 1637
Iscritto il: martedì 3 agosto 2010, 8:02

Re: Ricerca drive USB

Messaggio da vladko »

file corrotti.
è spesso che qui viene a lamentarsi di peersone che hanno problemi con chiavette.
Il motivo è sopratutto che i file di openoffici è su file compressi e quando i database sono grossi c'è errori sui file.
ti raccomando tanto backup, ci sono script e programmini che fanno tutto dasoli in pochi secondi, ma recuperare un file corrotto può portare tanto lavoro e tante parole cattive :-)
AOO 3.4.1 AOO341m1(Build:9593) Linux Mint Debian/Mate 64bit java 1.6.0.22 XP PRO/32bit
con Base --> sempre backup!!!
Se problema è Risolto --> Inserire [Risolto]nel titolo come spiega qui, grazie :-)
Avatar utente
LUGIUDANI
Messaggi: 400
Iscritto il: martedì 27 marzo 2012, 12:29

Re: Ricerca drive USB

Messaggio da LUGIUDANI »

Grazie vladko del consiglio... come hai già detto tu sto facendo a ogni modifica dei backup per sicurezza e al momento non mi ha portato ancora a dire brutte parole come dici tu! :D Comunque alla mia domanda non c'è macro che risponda?
Openoffice.org 3.2
Avatar utente
LUGIUDANI
Messaggi: 400
Iscritto il: martedì 27 marzo 2012, 12:29

Re: Ricerca drive USB

Messaggio da LUGIUDANI »

 Editato: Modificato da charlie da "tutto maiuscolo" a caratteri normali 
Non c'e' nessuno che puo' aiutarmi a capire come fare una macro che vada a ricercarmi la directory giusta a seconda del nome file da ricercare?
Openoffice.org 3.2
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 9067
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Ricerca drive USB

Messaggio da charlie »

Per cortesia non gridare!
Anche i vecchi utenti hanno bisogno di una rispolveratina del regolamento?: viewtopic.php?f=1&t=2#p223
charlie
macOS 15.5 Sequoia: Open Office 4.1.16 - LibreOffice 25.8
http://www.charlieopenoffice.altervista.org
vladko
Messaggi: 1637
Iscritto il: martedì 3 agosto 2010, 8:02

Re: Ricerca drive USB

Messaggio da vladko »

AOO 3.4.1 AOO341m1(Build:9593) Linux Mint Debian/Mate 64bit java 1.6.0.22 XP PRO/32bit
con Base --> sempre backup!!!
Se problema è Risolto --> Inserire [Risolto]nel titolo come spiega qui, grazie :-)
Avatar utente
LUGIUDANI
Messaggi: 400
Iscritto il: martedì 27 marzo 2012, 12:29

Re: Ricerca drive USB

Messaggio da LUGIUDANI »

Scusa Charlie ma è da luglio che nessuno mi sapeva dare una dritta e pensavo che la mia richiesta di informazioni era stata messa nel dimenticatoio. La scrittura utilizzata non era di certo un urlo era solo un modo per evidenziare che aspettavo con ansia un aiuto!
Comunque grazie Vladko... ora darò un'occhiata al tuo link... spero di saltarne fuori!
Openoffice.org 3.2
Avatar utente
LUGIUDANI
Messaggi: 400
Iscritto il: martedì 27 marzo 2012, 12:29

Re: Ricerca drive USB

Messaggio da LUGIUDANI »

Ciao Vladko, ho letto il tuo link e devo ammettere che l'avevo già visionato ma non mi dava nessun aiuto concreto al mio problema.
In pratica io ho inserito un database nel "C:\" denominato MENU nel quale vado a scegliere determinati programmi che dovrebbero aprirsi alla digitazione di un pulsante. Per esempio ho creato un pulsante MEDIATECA che alla digitazione mi va ad aprire un'altro database che però è situato nella porta F:\.
Quello che sto cercando di fare è di creare una macro che mi dia la possibilità di non immettere a "mano" la porta di riferimento ma che mi andasse a fare la ricerca in automatico.

La macro che ho visto nel link che mi hai suggerito è la seguente e ho cercato di adattarla, ma non è corretta. L'errore sta nel oPathSettings perchè mi riporta il percorso del database MENU e non quello dove è situato il database MEDIATECA. Come faccio a modificare il percorso?

Codice: Seleziona tutto

Sub ApriMediateca
oPathSettings = createUnoService("com.sun.star.util.PathSettings")
ConvertFromURL (oPathSettings.Module)
FullPath = ConvertFromURL (oPathSettings.Module)
' esempio: F:\Programmi\OpenOffice\Bin\OpenOffice.org 3\Basis\Program'
CropPath=right(FullPath, 35,2)
' evidenzia le subfolder della directory madre di OOo
' esempio \Bin\OpenOffice.org 3\Basis\Program'
CropPosition = InStr (ConvertFromURL (oPathSettings.Module), CropPath)
' individua la posizione dove interrompere la stringa del
OOoFolder=mid(ConvertFromURL (oPathSettings.Module) , 1,CropPosition)
'F:\Programmi\OpenOffice\
fRelativePathOOo = OOoFolder & "Progetto Mediateca\MEDIATECA.odb"
fRelativePathFile =  OOoFolder & "Progetto Mediateca\MEDIATECAodb"
' insert URL of the file you want to open. That file must be inside main OOo Folder or inside one of its subfolder
Shell(fRelativePathOOo,,fRelativePathFile)
End Sub
Openoffice.org 3.2
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Ricerca drive USB

Messaggio da unlucky83 »

su un sistema linux saprei come farlo, ma su windows non sò
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Ricerca drive USB

Messaggio da unlucky83 »

Chi sa usare c++ forse ci capisce qualcosa
http://www.openoffice.org/api/docs/cpp/ ... mation-641

Se riesci a far partire tramite la funzione Shell questo comando ms-dos (quindi per windows):

Codice: Seleziona tutto

mountvol > infodischi.txt 
ti ritrovi nel file infodischi.txt le lettere a cui sono associati i volumi montati.
Ho provato ad eseguire tramite macro:

Codice: Seleziona tutto

test=Shell("C:\Windows\System32\mountvol.exe",10," > C:\Users\[nome utente]\infodischi.txt"
ma il valore di test è sempre 0 :evil:
Comunque se riesci a crearti questo file, aprendolo con un'altra macro puoi andarti a leggere le lettere associate ai dischi. Con un ciclo for controlli in quali di questi dischi si trovano i file che stai cercando.
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Ricerca drive USB

Messaggio da unlucky83 »

Trovata una via grazie a questa pagina:

Codice: Seleziona tutto

https://forum.openoffice.org/en/forum/viewtopic.php?f=20&t=14220
Allego un file ods che ha le macro per estrapolare tutti i drive dei dischi, manca solo la macro per controllare se il file esiste in quel drive.
Basta eseguire la macro "Main",badando bene di impostare i percorsi per il Desktop e la cartella sysstem32 di winzoz.
Ho usato windows 7, quindi chi usa questo OS dovrebbe soltanto modificare il nome utente, a meno che non si chiami Barbara come mia sorella a cui sfilo il portatile :lol:

p.s.
con linux i comandi di shell vengono lanciati tranquillamente con la funzione shell di openoffice..con windows invece è un bel impiccio
Allegati
TrovaDriveUsb.ods
Va creata una cartella manualmente in questa versione
(9.23 KiB) Scaricato 140 volte
Ultima modifica di unlucky83 il domenica 13 aprile 2014, 17:21, modificato 1 volta in totale.
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Ricerca drive USB

Messaggio da unlucky83 »

LUGIUDANI sembrava una cosa urgente e sei sparita...o hai dimenticato questa discussione?
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Avatar utente
LUGIUDANI
Messaggi: 400
Iscritto il: martedì 27 marzo 2012, 12:29

Re: Ricerca drive USB

Messaggio da LUGIUDANI »

No unlucky83, ma sai si sta avvicinando il Natale e quindi è periodo di preparativi, decorazioni e regali! Comunque, alla fine ho inserito il mio file direttamente nel drive dove avevo gli altri file da richiamare e quindi vado direttamente a ricercare il documento con questa macro, evitando di scrivere il percorso:

Codice: Seleziona tutto

Function FormatURL(Path() As Variant)
	Dim i, szPath$
	For i = LBound(Path()) To (UBound(Path()) - 1)
		szPath$ = szPath$ + Path(i) + "/"
	Next i
	FormatURL = szPath
end Function

Sub vaiProgrammi(Indirizzo)
dim szPath as string
	oDoc = ThisComponent
	szPath = FormatURL(Split(oDoc.Location, "/"))	
	Shell = CreateObject("shell.application")
	Shell.open ConvertToURL(szPath + Indirizzo)
End Sub
Poi trafugando un pò ho trovato anche questa macro, ma sto ancora cercando di capire che voce inserire al posto di sInPath$:

Codice: Seleziona tutto

Function ScegliUnaDirectory(Optional sInPath$) As String
  Dim oDialog As Object
  Dim oSFA As Object
  Dim s As String

  Rem Puoi quindi utilizzare com.sun.star.ui.dialogs.OfficeFolderPicker
  oDialog = CreateUnoService("com.sun.star.ui.dialogs.FolderPicker")
  oSFA = createUnoService("com.sun.star.ucb.SimpleFileAccess")
  
  If IsMissing(sInPath) Then
    oDialog.setDisplayDirectory(GetWorkDir())
  ElseIf oSFA.Exists(sInPath) Then
    oDialog.setDisplayDirectory(sInPath)
  Else
    s = "La Directory '" & sInPath & "' non esiste"
    If MsgBox(s, 33, "Errore") = 2 Then Exit Function
  End If
  
  If oDialog.Execute() = 1 Then
    ChooseADirectory() = oDialog.getDirectory()
  End If
End Function
Ho visto anche la tua macro ma volevo trovare un modo per non inserire il percorso come costante come hai fatto tu. Grazie comunque del suggerimento. :super:
Openoffice.org 3.2
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Ricerca drive USB

Messaggio da unlucky83 »

:mrgreen: Giusto, Natale è alle porte
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Avatar utente
LUGIUDANI
Messaggi: 400
Iscritto il: martedì 27 marzo 2012, 12:29

Re: Ricerca drive USB

Messaggio da LUGIUDANI »

Per la ricerca del drive USB alla fine ho risolto in questo modo:

Codice: Seleziona tutto

 
'Funzione che apre un percorso
Function FormatURL(Path() As Variant)
	Dim  i, szPath$
	For i = LBound(Path()) To (UBound(Path()) - 1)
		szPath$ = szPath$ + Path(i) + "/"
	Next i
	FormatURL = szPath
end Function

Sub ApriDialog
dim oDoc, oDialog, oDialogModel as object
dim sdir, szPath as string
	oDialog = LoadDialog("Standard","Dialog1")
        oDialogModel = oDialog.Model
	oDoc = ThisComponent
	szPath  = FormatURL(Split(oDoc.Location,"/"))
	sdir = Left(szPath,11)
       'all'interno della parentesi va scritto il percorso da eseguire per la ricerca di una immagine, omettendo la dicitura: file:///, e la directory 
	oDialogModel.Pulsante.ImageURL = ConvertToURL(sdir + Salva.png) 
Openoffice.org 3.2
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Ricerca drive USB

Messaggio da patel »

Grazie per aver condiviso la soluzione, ma il codice allegato non funziona preso a sé stante
-------------------
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
LUGIUDANI
Messaggi: 400
Iscritto il: martedì 27 marzo 2012, 12:29

Ricerca drive USB

Messaggio da LUGIUDANI »

Ciao patel, sì è vero non funziona da sè e proprio ora che ho cambiato la chiavetta su un'altra porta, vedo che neanche la soluzione che avevo trovato è funzionante.
Uff... siccome calc prende i dati da un database, bisogna che il database venga registrato nella porta giusta per azionarlo.
Ci vorrebbe una macro che andasse a modificare anche il driver del database, ma credo sia impossibile!
Openoffice.org 3.2
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Ricerca drive USB

Messaggio da unlucky83 »

Ciao...la mia soluzione non la preferisci solo per il fatto che devi dare l'url del desktop? Se così fosse, si potrebbero fare un paio di modifiche e dovrebbe andare bene. Se vuoi, sviluppo quella strada
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Avatar utente
LUGIUDANI
Messaggi: 400
Iscritto il: martedì 27 marzo 2012, 12:29

Re: Ricerca drive USB

Messaggio da LUGIUDANI »

Ciao...
Si, esatto; aspetto di vedere l'altra soluzione che proponi.
Openoffice.org 3.2
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Ricerca drive USB

Messaggio da unlucky83 »

Ti allego un altro file, provalo.
Devi solo personalizzare una costante

Codice: Seleziona tutto

REM  *****  BASIC  *****
rem mettere il percorso di un file presente nella chiavetta con il drive mancante
Public const percorsotest as string=":\casper\filesystem.manifest"
quindi, facendo riferimento al tuo primo messaggio, potresti mettere:

Codice: Seleziona tutto

Public const percorsotest as string=":\Progetto BilancioFamiliare\IMMAGINI\Contanti.png"
al termine dell'esecuzione della macro "main", il drive trovato è salvato nella variabile globale "drivegiusto"
Allegati
TrovaDriveUsb2.ods
(10.36 KiB) Scaricato 113 volte
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Avatar utente
LUGIUDANI
Messaggi: 400
Iscritto il: martedì 27 marzo 2012, 12:29

Re: Ricerca drive USB

Messaggio da LUGIUDANI »

Ok, vedrò di dargli un'occhiata, intanto grazie!
Openoffice.org 3.2
Rispondi