OO5

    
    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