Comando Dos in Vba



  • Comando Dos in Vba
    di Alfredo (utente non iscritto) data: 13/04/2016 19:19:51

    E' possibile trasformare una riga comando dos in vba excel?

    Ho dei comandi in alcuni files .bat che vorrei far partire cliccando su un pulsante (CommandButton1)
    tipo, creare una macro che esegua il codice (non il files .bat).

    Nella sub che ho postato sotto, faccio partire il file nscmd.bat che contiene questi comandi:
    pause

    %date:~-4%-%date:~3,2%-%date:~0,2%
    %time:~-0,2%_%time:~3,2%_%time:~6,2%
    SET NomeFile1=Backup_%date:~-4%-%date:~3,2%-%date:~0,2%__%time:~-0,2%_%time:~3,2%_%time:~6,2%.7z
    rem qui imposto il nome del files

    @echo off
    Md C:UsersFissoCasaDesktopOld
    rem qui creo una directory

    Copy C:UsersFissoCasaPdbDocumentiMaxim C:UsersFissoCasaDesktopOld
    rem trasferisco un archivio

    del C:UsersFissoCasaPdbDocumentiMaxim /q
    Rem svuoto la cartella dell'archivio

    cd C:Program Files7-Zip
    7z a -V100M -PPassword C:UsersFissoCasaofficina\%NomeFile1% %NomeFile1% C:UsersFissoCasaDesktopOld
    rem zippo splitto archivio copiato in altra dir

    rmdir C:UsersFissoCasaDesktopOld /s /q
    rem cancello la dir old

    Siccome con il vba sono una pippa, se è possibile, potrei avere un esempio di questi comandi che vorrei inserire nella macro (Sub ComBKP()) ?

    Ringrazio chi volesse darmi qualche consiglio/dritta/informazione.
     
    Sub ComBKP()
    ' Esecuzione batch Backup Livello 3
    
        Dim Val
    Val = Shell("C:WindowsNasWeb
    scmd.bat", 1)
    End Sub



  • di patel data: 13/04/2016 19:34:31

    credo che non ne valga la pena, i comandi dos sono più veloci ed efficienti, molti utenti esperti fanno esattamente il contrario di quello che vuoi fare tu





  • di Alfredo (utente non iscritto) data: 13/04/2016 19:44:32

    Grazie Patel per l'interessamento, ma se è possibile, preferirei eseguire i comandi in vba e ti spiego il perchè: Siccome uso queste funzioni su diversi pc usati da utenti smanettoni ogni volta che mi spostano un file .bat o lo eliminano o altro devo rifare tutto il lavoro, invece avendo il tutto raggruppato in excel risolverei.
    Sempre se la cosa sia fattibile!



  • di patel data: 13/04/2016 20:05:54

    ti allego alcuni esempi di comandi dos chiamati da vba
     
    Public Sub rundir1()
    Shell "cmd /c " & "dir | more", vbNormalFocus
    End Sub
    
    Sub CopyDosSubfolders() 'funziona
    Shell "cmd /c xcopy /e /y " & Chr$(34) & "E:prova*.xl*" & Chr$(34) & " " & Chr$(34) & "C:prova" & Chr$(34)
    End Sub
    
    Sub Renamefile()  ' funziona il path non va ripetuto
    Shell "cmd /c ren " & Chr$(34) & "E:prova3.xlsx" & Chr$(34) & " " & Chr$(34) & "3ren.xlsx" & Chr$(34)  ', vbNormalFocus
    End Sub
    
    Sub Renamefile1() ' funziona
    File1 = "E:prova3.xlsx"
    File2 = "3ren.xlsx"
    Shell "cmd.exe /c ""ren """ & File1 & """ """ & File2 & """" ' ok
    End Sub
    
    Sub copia()
    Shell "cmd /c copy " & Chr$(34) & "F:DocumentiExcelfileMacro-VBACsv*.csv" & Chr$(34) & " " & Chr$(34) & "F:downloadall.txt" & Chr$(34)
    End Sub






  • di Alfredo (utente non iscritto) data: 13/04/2016 21:04:36

    Mi prendo un poco di tempo per spulciare e analizzare i tuoi esempi... in parte possono soddisfare la mia richiesta o, forse, del tutto... quindi segno come risolto! Magari torno se non riesco propio... Non basta mai ringraziare persone che aiutano il prossimo, ma fa tanto bello e bene, magari fossimo tutti cosi civili, sempre. GRAZieeeeeee

    Alfredo