Sviluppare funzionalita su Microsoft Office con VBA rmDir non funziona sotto MAC-OS

Login Registrati
Stai vedendo 14 articoli - dal 1 a 14 (di 14 totali)
  • Autore
    Articoli
  • #50939 Score: 0 | Risposta

    ABRAMO48
    Partecipante
      1 pt

      Buongiorno,

      premesso che ACTIVEX non funziona sotto MAC-OS, e quindi il filessystemobject non è accessibile, l'unico comando disponibile per cancellare una directory sotto MAC-OS è rmDir.

      Bene, lo accetta, ma da errore in esecuzione. 

      Ma perché?

      (Allego il messaggio la schermata col messaggio di errore e quella con la macro di prova)

      Sub X_KILL_FX()
          Set MM = Workbooks("LOGISTA_MACRO.xls").Worksheets("MACRO")
          PERCORSOW = "PROVA:"
          PERCORSOX = MM.Range("A34").Value & MM.Range("F34") & PERCORSOW
          MsgBox PERCORSOX
          RmDir PERCORSOX
          'Dim FSO As Object
          'Set FSO = CreateObject("scripting, filessystemobject")

       

       

      Messaggio di errore

      Allegati:
      You must be logged in to view attached files.
      #50942 Score: 0 | Risposta

      alexps81
      Moderatore
        58 pts

        Ciao, io non posseggo un MAC quindi non posso esserti molto di aiuto. Da una ricerca fatta, potrebbe essere che il problema derivi o dal percorso inesistente (se ricordo bene i percorsi in ambiente MAC-OS sono costruiti in formato simile a /Users/nomeutente/cartella quindi con il carattere "/" al contrario di Windows che utilizza "\"). Altro problema potrebbe essere che il comando RmDir funziona a patto che la cartella specificata nel percorso NON contiene dei file all'interno e per questo motivo genera errore.

        Oltre al comando RmDir hai preso in considerazione anche il comando Kill? Ovvero cancellare prima i file e poi la cartella tramite RmDir.

        #50943 Score: 0 | Risposta

        alexps81
        Moderatore
          58 pts

          Ad esempio:

          Sub elimina_File_e_Cartella()
              Dim path As String
              Dim filePath As String
              
              path = "/Users/nomeutente/CartellaPrincipale/" 'tuo percoso
              filePath = Dir(path & "*")
              Do While filePath <> ""
                  On Error Resume Next
                  Kill path & filePath
                  On Error GoTo 0
                  filePath = Dir()
              Loop
          
              On Error Resume Next
              RmDir path
              On Error GoTo 0
          
              MsgBox "La cartella " & path & " è stata eliminata!"
          End Sub
          #50945 Score: 0 | Risposta

          vecchio frac
          Senior Moderator
            272 pts

            ABRAMO48 ha scritto:

            MsgBox PERCORSOX

            Come dice Alex i percorsi sono costruiti con un separatore diverso in Windows rispetto al Mac pero' vogliono comunque un separatore. Non hai mostrato l'esito dell'istruzione che ho quotrato, che sarebbe stato interessante per stabilire se effettivamente sia questo il punto (magari nelle celle che compongono PERCORSOX il separatore c'e' gia' ma non lo sappiamo perche' non si vede dalle immagini allegate).

            Trovo pertinente anche l'osservazione successiva di Alex sul fatto che la cartella deve essere vuota per essere cancellata con rmdir.

             

            #50954 Score: 0 | Risposta

            ABRAMO48
            Partecipante
              1 pt

              Allora, questo il codice VBA:

              Sub X_RMDIR()
              '
              Dim NOMEDIRW As String
                  Set MM = Workbooks("LOGISTA_MACRO.xls").Worksheets("MACRO")
                  
                  NOMEDIRW = "PROVA"
                  PERCORSOW = MM.Range("A34").Value & MM.Range("F34")
                  
              MsgBox PERCORSOW & NOMEDIRW
              If DIR(PERCORSOW & NOMEDIRW, vbDirectory) = "" Then
                  MsgBox NOMEDIRW & " - IL FOLDER NON ESISTE"
              Else
                  MsgBox NOMEDIRW & " - IL FOLDER ESISTE"
                  RmDir PERCORSOW & NOMEDIRW
              End If
              '
              End Sub

              i messaggi sono allegati.

              Allegati:
              You must be logged in to view attached files.
              #50958 Score: 0 | Risposta

              ABRAMO48
              Partecipante
                1 pt

                altri allegati ...

                Ho letto, non ricordo più dove, ma ora lo cerco, che non è una questione di codice o di VBA ma di permessi di accesso alle directory, tipo il permesso di essere modificata da una macro. Ma era un problema in ACCESS e non trovavo il riscontro in EXCEL.

                Ora provo a ricercarla , mi sembra in Substack ...

                Allegati:
                You must be logged in to view attached files.
                #50960 Score: 0 | Risposta

                ABRAMO48
                Partecipante
                  1 pt

                  l'ho ritrovato, ecco il link:

                  https://stackoverflow.com/questions/51304332/rmdir-path-file-access-error-vba

                  Riuscite a distrigare sta matassa ...

                  Grazie carissimi !!!

                   

                   

                  #50961 Score: 0 | Risposta

                  ABRAMO48
                  Partecipante
                    1 pt

                    Insomma tradotto in italiano (automaticamente in Crome) dice:

                    "Come avete detto tutti, non sembra un problema di codice. Ho approfondito un po' e sembrava un problema con le mie impostazioni Macro in Office.

                    In Access, sono andato su File >> Opzioni >> Centro protezione >> Impostazioni Centro protezione e ho impostato Macro su Abilitato.

                    Ora la cartella di destinazione è stata eliminata correttamente."

                    In ACCESS, capite? Ma a cosa corrisponde in EXCEL? ... "le impostazioni di Macro" ???

                     

                    #50962 Score: 0 | Risposta

                    vecchio frac
                    Senior Moderator
                      272 pts

                      In Excel e' simile dal momento che e' sempre suite Office.

                      File \ Opzioni di Excel \ Centro protezione \ Impostazioni centro protezione \ Impostazioni delle macro 

                      Io pero' non attiverei le macro indiscriminatamente, e' una misura di protezione minima ma dovrebbe restare com'e'.

                      #50963 Score: 0 | Risposta

                      ABRAMO48
                      Partecipante
                        1 pt

                        ehehe .. grazie Vecchio Frac ... ma sono sotto MAC-OS (vedi allegato) ... mannaggia! 

                        Sotto Excel/file poi non so dove andare ...

                        Allegati:
                        You must be logged in to view attached files.
                        #50965 Score: 0 | Risposta

                        Oscar
                        Partecipante
                          45 pts

                           Kill per i File 

                          ma se ne hai tanti

                          mydir/* oppure  mydir/.*

                           RmDir elimina la cartella quando è vuota

                           

                          Da un mio File  prima elimino i File poi la cartella 

                           DefPath = "C:\Users\" & Environ("userName") & "\" & "desktop\temp\"
                          Kill DefPath & "storico.zip"
                          Kill DefPath & "storico.txt"
                          RmDir "C:\Users\" & Environ("userName") & "\desktop\temp\"

                          #50966 Score: 0 | Risposta

                          ABRAMO48
                          Partecipante
                            1 pt

                            Ma la cartella è già vuota ... (e poi MAC-OS non accetta caratteri jolly)

                            Ma sembra che ho trovato la soluzione in un altro modo: usando NAME.

                            Il mio problema era quello di "svuotare" una cartella con le copie dei file della mia procedura (gestione ordine tabacchi, sono 12 file in una cartella + 4 in un'altra).

                            Ogni volta che si entra nella procedura (e in altri momenti il programma salva tutti i file in una directory con data e ora.

                            Directory poi registrate nella schermata di controllo e poi gestite per poter, eventualmente, ripristinare una situazione precedente (come puoi vedere sullo sfondo dei messaggi negli allegati).

                            Bene, occorreva per non accumulare directory su directory, via via che aggiungevo una directory di salvataggio eliminassi ogni volta la più vecchia, o meglio la spostassi da SAVE in una SAVE_OLD.

                            Insomma creavo in SAVE_OLD una directory con lo stesso nome, gli copiavo i file da quella originale, eliminavo i file dall'originale e a questo punto dovevo eliminare l'originale "vuota". ecco perchè usavo rmDir.

                            Tutto questo perchè non trovavo una funzione per muovere una directory ... invece no, NAME fa tutto questo per File e Directory non cambia solo il nome di un file o directory ma li sposta anche secondo il percorso indicato.

                            Rimane il fatto che rmdir non funziona sotto MAC-OS ...

                            Grazie ragazzi! Siete formidabili e poi così solleciti nelle risposte che non vi batte nessuno. IL programma che ho fatto per gestire i tabacchi è formidabile, ma quando leggo i vostri appunti rimango scioccato dalle vostre conoscenze del VBA rispetto alle mie! Vi invidio e vi ammiro con tutto il cuore.

                            Presto vi ricontatterò sottoponendovi in un'altra discussione, se c'è modo di intercettare la digitazione in una cella per inserire un RETURN automatico se si batte una lettera. Devo riportare dei codici e ogni volta A INVIO, C INVIO, ... oppure -2,5 INVIO (e qui va bene) ma poi R INVIO ... potessi eliminare l'INVIO quando batto una lettera ...

                            A presto risentirci, vi voglio bene.

                             

                             

                             

                             

                            #50967 Score: 0 | Risposta

                            vecchio frac
                            Senior Moderator
                              272 pts

                              Non conosco Mac ma stavo leggendo (sempre su Stackoverflow) un trucco con l'api system. Ti lascio il link perche' il thread e' lungo e in inglese e bisogna digerirlo ma sembra interessante (per chi ha Mac almeno):

                              https://stackoverflow.com/questions/6136798/vba-shell-function-in-office-2011-for-mac

                              ABRAMO48 ha scritto:

                              Presto vi ricontatterò sottoponendovi in un'altra discussione, se c'è modo di intercettare la digitazione in una cella per inserire un RETURN automatico se si batte una lettera.

                              Apri un'altra discussione ma la perplessita' che ho e' questa: hai bisogno di inserire dei caratteri in una cella separati con Invio? L'editing delle celle non e' molto avanzato in Excel. Chiaramente nella prossima discussione farai degli esempi piu' illuminanti   

                              #50968 Score: 0 | Risposta

                              Oscar
                              Partecipante
                                45 pts

                                Allora se  rmdir non funziona sotto MAC-OS ... niente 

                                IL codice VBA è uno solo non esiste uno per Windows e uno per Mac ,l'unica differenza sta nella piattaforma che sono diverse 

                              Login Registrati
                              Stai vedendo 14 articoli - dal 1 a 14 (di 14 totali)
                              Rispondi a: rmDir non funziona sotto MAC-OS
                              Gli allegati sono permessi solo ad utenti REGISTRATI
                              Le tue informazioni: