L'oggetto Workbooks/Spreadsheets
|
|
| Visualizza I nomi di tutte le cartelle attive |
| VBA |
Sub MyProc
Dim wbk as Workbook
For Each wbk in Workbooks
msgbox wbk.Name
next
End Sub
|
| SB |
Sub ListDocs
Dim oDocs As Object, oDoc As Object
REM include la libreria "Tools"
GlobalScope.BasicLibraries.LoadLibrary("Tools")
oDocs = StarDesktop.getComponents().createEnumeration()
Do While oDocs.hasMoreElements()
oDoc = oDocs.nextElement()
REM ignora alcuni documenti che non sono librerie.
REM per esempio: IDE
If HasUnoInterfaces(oDoc, _
"com.sun.star.frame.XModel") Then
REM non ricercare se non è un indirizzo
If oDoc.hasLocation() Then
REM usa FileNameOutOfPath incluso in OOo
MsgBox FileNameOutOfPath(oDoc.getURL()) &_
" è di tipo " & GetDocumentType(oDoc)
End If
End If
Loop
End Sub
|
| Note: oDoc.nextElement() richiama tutti I documenti aperti incluso i documenti Writer (Word processor di OpenOffice). Di conseguenza non verranno restituiti non i documenti Calc attivi. |
|
|
| Apre il documento "MiaCartella" che si trova nella stessa directory del documento attivo. |
| VBA |
Sub MyProc
Dim NewWorkbook as Workbook
set NewWorkbook = Workbooks.Open _
(ActiveWorkbook.Path & "\MiaCartella.xls")
End Sub
|
| SB |
Sub MyProc
Dim DirectoryName as String
Dim NewWorkbook as Object
Dim NoArgs()
Rem Si suppone che la variabile DirectoryName contenga
Rem l’’ indirizzo del documento attivo
NewWorkbook = StarDesktop.loadComponentFromURL _
("file:///" & DirectoryName & "/MiaCartella.sxc", _
"_blank",0 ,NoArgs() )
End Sub
|
| Note: Più avanti spiegheremo come ottenere la directory del documento attivo. Mentre la macro VBA funziona indistintamente in qualsiasi situazione. La macro SB non può essere associata ad alcun evento. Il modulo seguente invece funziona se associato all’evento di apertura del documento. |
|
|
| Apre "MiaCartella" che si trova nella stessa directory del documento attivo ed esegue la macro associata all’evento di apertura del documento. |
| VBA |
Sub MyProc
Dim NewWorkbook as Workbook
set NewWorkbook = Workbooks.Open (ActiveWorkbook.Path _
& "\MiaCartella.xls")
NewWorkbook.RunAutoMacros xlAutoOpen
End Sub
|
| SB |
Sub MyProc
Dim DirectoryName as String
Dim NewWorkbook as Object
Dim Args(0) as new com.sun.star.beans.PropertyValue
Rem Assume DirectoryName variable contains directory
Rem location of the currently active workbook
Args(0).Name = "MacroExecutionMode"
Args(0).Value = _
com.sun.star.document.MacroExecMode.ALWAYS_EXECUTE
NewWorkbook = StarDesktop.loadComponentFromURL _
("file:///" & DirectoryName & "/MiaCartella.sxc", _
"_blank",0 ,Args() )
End Sub
|
|
|
| Chiude il documento aperto nell’esempio precedente. |
| VBA |
NewWorkbook.Close
|
| SB |
NewWorkbook.Close(False)
|
|
|
| Esegue una macro quando il documento viene aperto. |
| VBA |
Procedura predefinita di Excel Workbook_Open() associate al modulo workbook.
|
| SB |
Macro assegnata all’evento "Open Document" nella sequenza Tools > Macros > Macro > Assigned....
|
| Note: In SB l’argomento dell’istruzione Wait è il numero di millisecondi di attesa. Nel tempo di attesa la procedura VBA tiene il processore occupato al 100%, in SB questo non succede. |
|
|
| Esegue una macro quando il documento viene chiuso. |
| VBA |
Procedura predefinita di Workbook_BeforeClose() associate al modulo workbook.
|
| SB |
Macro assegnata all’evento "Close Document" nella sequenza Tools > Macros > Macro > Assigned....
|
|
|
| Ottenere il nome del file della cartella attiva. |
| VBA |
Sub MyProc
ActiveWorkbook.Name
End Sub
|
| SB |
Sub MyProc
Dim URLStr as String
Dim FileName as String
REM Carica la libreria "Tools"
GlobalScope.BasicLibraries.LoadLibrary("Tools")
REM Il codice presuppone che il file sia salvato.
REM in modo che possieda un indirizzo.
URLStr = ThisComponent.getURL()
FileName = FileNameOutOfPath(URLStr)
End Sub
|
| Note: Formato dell’indirizzo dei documenti: "file:////".. |
|
|
| Ottenere la directory del file della cartella attiva. |
| VBA |
Sub MyProc
ActiveWorkbook.Path
End Sub
|
| SB |
Sub MyProc
Dim URLStr as String
Dim Path as String
REM carica la libreria "Tools"
GlobalScope.BasicLibraries.LoadLibrary("Tools")
URLStr = ThisComponent.getURL()
Path = DirectoryNameoutofPath(URLStr, "/")
End Sub
|
|
|
|