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

Cognolato Studio 2005