Chiusura cartella & VBA

di il
10 risposte

Chiusura cartella & VBA

Salve a tutti.

Con questa routine nel VBA di word apro una specifica cartella:

Sub CARTELLEAPERTURACartellaMIAAPRI()
  Dim FSO  
  Dim CartellaSelezione As String
  Dim Messaggio As String     
       Set FSO = CreateObject("Scripting.FileSystemObject")
          If FSO.FolderExists(CartellaMIA) Then
               shell ("explorer.exe " & CartellaMIA), vbMaximizedFocus
                   Else
              Exit Sub
          End If

End Sub

Funziona perfettamente.

Ma come devo adattarla se invece volessi CHIUDERE quella specifica cartella?

Grazie per i suggerimenti.

10 Risposte

  • Re: Chiusura cartella & VBA

    Non è affatto facile come credi.

    Devi usare delle API apposite  

  • Re: Chiusura cartella & VBA

    19/09/2023 - oregon ha scritto:


    Non è affatto facile come credi.

    Devi usare delle API apposite  

    Ti ringrazio per la risposta.

    Conosco le API di windows.

    Puoi cortesemente essere più preciso? Quali API?

  • Re: Chiusura cartella & VBA

    Leggi qui

    https://answers.microsoft.com/it-it/msoffice/forum/all/chiudere-finestre-di-windows-tramite-vba/71ac8d74-d43e-4145-bc61-a46ec29fa972

  • Re: Chiusura cartella & VBA

    Ti ringrazio per il suggerimento.

    Seguendo il link che mi hai indicato ho trovato questa routine che chiude tutte le cartelle aperte

    Option Explicit
    Private Declare Function SendMessage Lib "user32" _
                                        Alias "SendMessageA" _
                                        (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long
    Private Declare Function FindWindow Lib "user32" _
                                       Alias "FindWindowA"  (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

    Private Const SC_CLOSE = &HF060&
    Private Const WM_SYSCOMMAND = &H112
    Private Const EXPLORER_CLASSNAME As String = "CabinetWClass"

    Sub CARTELLETutteChiudi()
     Dim iExplhwnd As Long
       iExplhwnd = FindWindow(EXPLORER_CLASSNAME, vbNullString)
          Do Until Not CBool(iExplhwnd)
             SendMessage iExplhwnd, WM_SYSCOMMAND, SC_CLOSE, ByVal 0&
               iExplhwnd = FindWindow(EXPLORER_CLASSNAME, vbNullString)
          Loop
    End Sub

    Ma se invece volessi chiudere soltanto una cartella specifica?

    Immagino che dovrei inserire una riga all'interno del ciclo Do Until Not CBool

  • Re: Chiusura cartella & VBA

    Il codice inseriscilo tra tag CODE nel forum (tasto <>)

    Comunque tieni presente che puoi indicare nel secondo parametro della FindWindow il titolo della finestra

  • Re: Chiusura cartella & VBA

    22/09/2023 - oregon ha scritto:


    Il codice inseriscilo tra tag CODE nel forum (tasto <>)

    Comunque tieni presente che puoi indicare nel secondo parametro della FindWindow il titolo della finestra

    Grazie della risposta.

    Che cosa intendi per titolo della finestra?

    Quindi dovrei inserirlo al posto di vbNullString?

  • Re: Chiusura cartella & VBA

    Il titolo della finestra. Mi sembra che non ci siano dubbi su cosa intendo.

  • Re: Chiusura cartella & VBA

    05/10/2023 - oregon ha scritto:


    Il titolo della finestra. Mi sembra che non ci siano dubbi su cosa intendo.

    Scusa la mia ignoranza , ma intendi semplicemente la path della finestra?

  • Re: Chiusura cartella & VBA

    Quello che c'è nel titolo, in alto

    Nelle finestre di windows la barra del titolo è quella im alto

  • Re: Chiusura cartella & VBA

    Grazie.

    05/10/2023 - oregon ha scritto:


    Quello che c'è nel titolo, in alto

    Nelle finestre di windows la barra del titolo è quella im alto

Devi accedere o registrarti per scrivere nel forum
10 risposte