Criar pastas automaticamente com VBA

Objetivo: Realizar a criação de pastas automaticamente através do uso de VBA e Excel.

Este código é uma adaptação de outros artigos, para resolver o problema do leitor Orovaldo Colchon Filho que precisava criar 300 pastas para organizar os arquivos da empresa e estava buscando uma forma de automatizar esta tarefa.

Abaixo o código VBA para a geração das pastas:

Public Declare Function SHBrowseForFolder Lib "shell32.dll" Alias _
    "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
Public Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias _
    "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) _
    As Long
Public Type BROWSEINFO
    hOwner As Long
    pidlRoot As Long
    pszDisplayName As String
    lpszTitle As String
    ulFlags As Long
    lpfn As Long
    lParam As Long
    iImage As Long
End Type
 
Private Sub lsCriarPasta(ByVal lPasta As String)
    On Error Resume Next
    MkDir lPasta
End Sub
 
Public Sub lsCriarPastas()
 
    Dim iTotalLinhas    As Long
    Dim i               As Long
 
    iTotalLinhas = Worksheets("Menu").Cells(Worksheets("Menu").Rows.Count, 1).End(xlUp).Row
    i = 1
    While i <= iTotalLinhas
        lsCriarPasta Range("A" & i).Value
        i = i + 1
    Wend
 
    gfMens "Pastas Criadas!"
End Sub

GUT PPTAbraço

Marcos Rieper

Use QR-Code to get this permaking using your Smartphone. QR Code for Criar pastas automaticamente com VBA

9 Comentários

  1. Walter disse:

    Muito bom esse tema. Vai ajudar muitas pessoas…

    Mais uma vez parabéns Marcos!

  2. Djonas disse:

    Oba!
    Pra mim deu o erro “Sub ou Function não definida”, nessa linha: Public Sub lsCriarPastas()
    Se tiver como ajudar, agradeço.

  3. Bom dia Marcos.
    Estamos montando na empresa uma planilha para controle de ações corretivas e montando usando duas planilhas até o momento, a primeiro o local onde serão digitas das informações e a segundo o espelho do relatorio, que sera preenchido automaticamente quando se digita na primeira planilha. O que precisamos é que cada vez que gere um relatório ele seja salvo. Não sei se isso é possível.

    Obrigado e se quiser maiores informações é só pedir.

    Abraço.

  4. Carlos disse:

    Prezado Marcos,
    Ao tentar executar a macro “Criar pastas automaticamente com VBA” está ocorrendo o erro “Sub ou Function não definida”, na linha: Public Sub lsCriarPastas()…
    Poderia indicar-me a razão?
    Grato,
    Carlos

  5. Tulio disse:

    Caro Marcos,

    Percebi que esta macro roda apenas em computadores de 32b, sabe como fazer para adaptar para computadores de 64b?

    Muito Obrigado

    • Marcos Rieper disse:

      Bom dia Túlio,

      Você pode fazer isso colocando a cláusula PTRSAFE depois do declare dos trechos abaixo:

      Public Declare PTRSAFE Function SHBrowseForFolder Lib “shell32.dll” Alias _
      “SHBrowseForFolderA” (lpBrowseInfo As BROWSEINFO) As Long
      Public Declare PTRSAFE Function SHGetPathFromIDList Lib “shell32.dll” Alias _
      “SHGetPathFromIDListA” (ByVal pidl As Long, ByVal pszPath As String) _
      As Long

      Esta cláusula mantém a compatibilidade com o 32 bits para estas declarações.

      Abraço

      Marcos Rieper

  6. Montenegro disse:

    Valeu de mais da conta!
    Quebrou um galhão! Precisava criar 500 pastas para guardar documentos digitalizados de um condomínio.

    Muito bom!

Deixe o seu comentário


 
%d blogueiros gostam disto: