Notifications
Clear all

ajuda com macro (criar diretório)

7 Posts
2 Usuários
0 Reactions
1,773 Visualizações
(@rilton)
Posts: 232
Reputable Member
Topic starter
 

Prezados, bom dia

Tenho uma macro onde ela cria uma pasta no disco C: do meu PC com o nome pedido de venda e salva um determinado arquivo .xlsx. Estou precisando adapta-la para que ao executar a macro, além dela criar a pasta pedido de venda, ela criará também uma pasta com o ano e mês atual e depois salvará o arquivo na pasta vigente.

Vejam o código abaixo, tem como implementa-lo?

Sub ExportaDados()
Dim Nome As String, NomeCopia As String, nPlan As String, Caminho As String
Dim UltLinha As Long
'Define valores para as variaveis
    'Guarda o nome da Planilha
    nPlan = ActiveSheet.Name
    'Guarda o nome do arquivo atual
    Nome = ActiveWorkbook.Name
    'Determina qual o local a ser salvo o novo arquivo
    Caminho = "c:Pedidos de Venda"
    'Determina o nome para o novo arquivo
    NomeCopia = "Pedido de Venda_" & Range("b4").Value & "_" & Format(Date, "dd-mmm-yyyy")
    ' Determina a qtde de planilhas no novo arquivo=1
    'seleciona a planilha em questão
    Sheets("Pedido").Select
    'cria um novo arquivo
    Sheets("Pedido").Copy

    'Renomeia a nova planilha
    ActiveSheet.Name = nPlan
        'Verifica se o diretorio existe, se não existir, cria
            If (Dir(Caminho, vbDirectory) = "") Then
                MkDir (Caminho)
            End If
        'Verifica se o arquivo já existe, se existir, deleta
            If (Dir(Caminho & NomeCopia & ".xlsx") <> "") Then
                Existe = MsgBox("  Arquivo Existente" & Chr(13) & _
                "Deseja Substitui-lo?", vbExclamation + vbYesNo, "Atenção")
               
                If Existe = vbYes Then
                    Kill Caminho & NomeCopia & ".xlsx"
                Else
                    GoTo sai
                End If
            End If
           
    'Salva o novo arquivo no caminho especificado
    ActiveWorkbook.SaveAs Caminho & NomeCopia & ".xlsx", CreateBackup:=False
    'Fecha o novo arquivo
  
             
    Windows(Nome).Activate
    Range("A3").Select
    Application.CutCopyMode = False
    'Retorna a qtde de planilhas ao padrão (3)
    Application.SheetsInNewWorkbook = 3
sai:

End Sub
 
Postado : 27/06/2014 7:21 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Consegue adaptar?
http://www.mrexcel.com/archive/VBA/2737b.html

Att

 
Postado : 27/06/2014 7:59 am
(@rilton)
Posts: 232
Reputable Member
Topic starter
 

Desculpa Alexandre, não consegui adaptar!

 
Postado : 27/06/2014 8:19 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Experimente assim:

Sub ExportaDados()
Dim Nome As String, NomeCopia As String, nPlan As String, Caminho As String
Dim sCaminho As String, sPath As String
Dim UltLinha As Long
'Define valores para as variaveis
'Guarda o nome da Planilha
nPlan = ActiveSheet.Name
'Guarda o nome do arquivo atual
Nome = ActiveWorkbook.Name
'Determina qual o local a ser salvo o novo arquivo
Caminho = "c:Pedidos de Venda"
sCaminho = Format(Date, "YYYY-MMM")
sPath = Caminho & sCaminho & ""
'Determina o nome para o novo arquivo
NomeCopia = "Pedido de Venda_" & Range("b4").Value & "_" & Format(Date, "dd-mmm-yyyy")
' Determina a qtde de planilhas no novo arquivo=1
'seleciona a planilha em questão
Sheets("Pedido").Select
'cria um novo arquivo
Sheets("Pedido").Copy

'Renomeia a nova planilha
ActiveSheet.Name = nPlan
'Verifica se o diretorio existe, se não existir, cria
    If (Dir(Caminho, vbDirectory) = "") Then
        MkDir (Caminho)
    End If
'Verifica se o sub diretorio existe, se não existir, cria
    If (Dir(sPath, vbDirectory) = "") Then
        MkDir (sPath)
    End If

'Verifica se o arquivo já existe, se existir, deleta
    If (Dir(sPath & NomeCopia & ".xlsx") <> "") Then
        Existe = MsgBox("  Arquivo Existente" & Chr(13) & _
                "Deseja Substitui-lo?", vbExclamation + vbYesNo, "Atenção")
        If Existe = vbYes Then
            Kill sPath & NomeCopia & ".xlsx"
        Else
            GoTo sai
        End If
    End If
               
'Salva o novo arquivo no caminho especificado
ActiveWorkbook.SaveAs sPath & NomeCopia & ".xlsx", CreateBackup:=False
'Fecha o novo arquivo
Windows(NomeCopia & ".xlsx").Close
Sheets(nPlan).Activate
Range("A3").Select
Application.CutCopyMode = False
'Retorna a qtde de planilhas ao padrão (3)
Application.SheetsInNewWorkbook = 3
sai:

    End Sub
 
Postado : 27/06/2014 10:05 am
(@rilton)
Posts: 232
Reputable Member
Topic starter
 

Reinaldo, boa tarde!!!

Não querendo abusar, como ficaria o código acima se fosse para gerar o arquivo em PDF e sava-lo nas pasta criada.

Minha intenção é ter dois botões de comando:

Um com a opção de gerar o arquivo em excel; e

outro com a opção de gerar o arquivo em pdf.

Grato!

 
Postado : 27/06/2014 12:09 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

De uma olhada viewtopic.php?f=10&t=1046&hilit=+*pdf*&start=10

 
Postado : 27/06/2014 12:29 pm
(@rilton)
Posts: 232
Reputable Member
Topic starter
 

Reinaldo, tentei adapta-la

mas não estou conseguindo. Veja o código:

Sub Macro1()
Dim Pasta As String, MyPath As String, sMyPath As String, sPath As String

Pasta = ActiveSheet.Range("P1").Value
arq = "Pedido" & "-" & Range("b5").Value & " " & Format(Date, "dd-mmm-yyyy") & ".pdf"
MyPath = "c:Teste"
sMyPath = Format(Date, "YYYY-MMM")
sPath = MyPath & sMyPath & ""
'Indica em que local a pasta estará , pode ser C: ou d: ou e:....
'Verifica se o diretorio existe
If (Dir(MyPath, vbDirectory) = "") Then
MsgBox "Diretório - " & MyPath & Pasta & " - Não encontrado"
' se não existir, cria se quiser
 MkDir (MyPath)
End If

If (Dir(sPath, vbDirectory) = "") Then
        MkDir (sPath)
    End If

'Verifica se o arquivo já existe, se existir, deleta
'If (Dir(Arquivo) <> "") Then
' Kill Arquivo
'End If

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
Path & Pasta & "" & arq, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True

End Sub
 
Postado : 30/06/2014 9:08 am