Criar pastas automaticamente com VBA

Solver e VBA no Excel 2010
Solver e VBA no Excel 2010
24 de abril de 2011
Copiar Planilha e Enviar como Anexo por Email com Outlook VBA
Copiar Planilha e Enviar como Anexo por Email com Outlook VBA
1 de maio de 2011

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

Abraço

Marcos Rieper


Clique aqui e leia mais sobre Excel VBA. https://www.guiadoexcel.com.br/vba/ O Guia do Excel foi criado por Marcos Rieper e oferece artigos, dicas, tutoriais e modelos de planilhas prontas. Aqui você encontra tudo sobre Excel, seja de nível básico, intermediário,  avançado e VBA. O Guia do Excel oferece diversos materiais completamente gratuitos para download. Navegue em nosso site e confira! Conheça também a nossa Loja do Excel https://loja.guiadoexcel.com.br/
Cursos

Curso Excel Completo – Curso Excel Básico + Curso Excel Avançado – Acesso Vitalício

R$218,00 R$179,00

COMPRAR
Cursos

Curso Excel Master – Curso Excel Básico + Curso Excel Avançado + Curso VBA Excel + LP – Acesso Vitalício

R$357,00 R$249,00

COMPRAR
Cursos

Curso Excel PRO – Curso Excel Avançado + Curso VBA Excel + Lógica de programação – Acesso Vitalício

R$258,00 R$199,00

COMPRAR
Cursos

Curso Excel Web – Curso VBA Excel + Lógica de programação + Curso Web Scraping VBA- Acesso Vitalício

R$388,90 R$309,00

COMPRAR

18 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!

  7. Prezado Marcos, sou iniciante no VBA, não consegui usar seu código devido ao meu PC ser versão 64 bits, como posso fazer para converter o código para uso em 64 bits ? desde já muito obrigado !

    • Marcos Rieper disse:

      Olá Paulo,

      Apenas inclua PtrSafe:

      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

  8. Deu certo aqui obrigado Marcos, você é Fera !!!!

  9. Jose disse:

    Boa noite gostaria de saber um pouco mais sobre é código pois tenho que gerar um plan para cada dia do ano e e pegar o dados e inserir dentro da planilha para fazer conciliação bancária poderia me ajudar?

  10. Renald disse:

    Olá

    Esta dando erro

    Public Sub lsCriarPastas()

  11. Renald disse:

    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()…

  12. Bruno disse:

    Marcos, boa noite!

    É possível criar as pastas inserindo e cada uma um ou mais arquivos? No meu caso são imagens JPEG.

    Aguardo seu retorno.

    Obrigado

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Inscreva-se no nosso canal do Youtube!


Junte-se ao nosso canal do Youtube. Começamos em abril de 2016, mas já temos mais de 06:00 h de treinamentos gratuitos e este número irá aumentar. Vídeos novos todos os sábados.