Notifications
Clear all

Criar nova pasta em local especifico

16 Posts
1 Usuários
0 Reactions
2,073 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia a todos , vou usar este código na planilha anexa ,

Sub Gerar_Programação()

 Dim Nome, NomeCopia As String
Dim UltLinha As Long
Desprot
    Rows("99:99").Select
    Selection.AutoFilter
    ActiveWindow.ScrollColumn = 1
    ActiveSheet.Range("$A$99:$A$5000").AutoFilter Field:=3, Criteria1:="S"
    
    UltLinha = ActiveSheet.Range("C65000").End(xlUp).Row + 1
    
    Cid = Range("A100").Value
    Alim = Range("B100").Value
    Disposit = Range("F68").Value
    Reexibir_Para_Edição
     
   ActiveSheet.Range("D100:G" & UltLinha & " , I100:I" & UltLinha & ",T100:T" & UltLinha & ",W100:W" & _
   UltLinha & ",Z100:Z" & UltLinha & ",AB100:AD" & UltLinha & ",AF100:AF" & UltLinha & ",AI100:AI" & _
   UltLinha & ",AL100:AL" & UltLinha & ",AN100:AN" & UltLinha & ",AP100:AQ" & UltLinha).Select
   
  Selection.Copy
  
  
  Nome = ActiveWorkbook.Name
  
       NomeCopia = "Executar " & Left(ActiveSheet.Name, Len(ActiveSheet.Name))
          Workbooks.Add
              
    Range("A3").Select
   ActiveSheet.Paste
   
   somat = ActiveSheet.Range("E65000").End(xlUp).Row + 1
   Range("A1").Value = "Cidade:"
   Range("B1").Value = Cid
   Range("D1").Value = "Dispositivo_Aliment.:"
   Range("E1").Value = Disposit & "_" & Alim
   Range("K1").Value = "Executor/Data:"
   Range("A2").Value = "Ponto 1"
   Range("A2").Value = "Ponto 1"
   Range("B2").Value = "Ponto 2"
   Range("C2").Value = "Coord. do Ponto1"
   Range("D2").Value = "Coord. do Ponto2"
   Range("E2").Value = "US's"
   Range("F2").Value = "Faixa 10M"
   Range("G2").Value = "Faixa 15M"
   Range("H2").Value = "Abertura "
   Range("I2").Value = "Bambu M²"
   Range("J2").Value = "Aceiro"
   Range("K2").Value = "Cerca Viva"
   Range("L2").Value = "Cipó"
   Range("M2").Value = "Podar Arv."
   Range("N2").Value = "Cortar Arv."
   Range("O2").Value = "Arv. Silvic."
   Range("P2").Value = "Arv. Silvic.   > Q 5"
   Range("Q2").Value = "Abert. Acesso"
   Range("R2").Value = "Observação"
   Range("D" & somat).Value = "Total em US's"
 
   Mesclar
   AjustarImpr
   AjustaBordas
   Ajustar
   
   Rows("1:1").RowHeight = 33
    
   Cells(somat, 5).Value = Application.WorksheetFunction.Sum(Range("E3:E" & somat))
   
Range("E" & somat & ":" & "H" & somat).Select
    Selection.Merge
    
     Range("E" & somat).Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = -0.149998474074526
        .PatternTintAndShade = 0
    End With
   
      ActiveWorkbook.SaveAs NomeCopia
   Range("A3").Select
   Windows(Nome).Activate
   Reexibir_Para_Edição
   Desprot
    Application.CutCopyMode = False
    Selection.AutoFilter
        ActiveSheet.Range("A100").Select
        Prot
End Sub

Porem na linha ; Workbooks.Add e ActiveWorkbook.SaveAs NomeCopia
Precisava que fosse o seguinte;
1- A "pasta de trabalho gerada" fosse com somente uma planilha e com o nome da planilha "original" e não Plan1 , Plan2 e Plan3 como está sendo.

2- O salvamento É em local não determinado(não sei nem qual o critério e onde esta sendo salvo). Existe como determinar no código que seja Verificado em C: se existe uma Pasta de Arquivos com o nome de Controle de Execução de Faixa ; caso haja , salvar dentro desta pasta de arquivos a "pasta de trabalho gerada" , se não houver a pasta de arquivos Controle de Execução de Faixa , então tomar a seguinte providencia Criar,Novo,Pasta de Arquivos e nomear com Controle de Execução de Faixa e então proceder o salvamento.

Para entender , no anexo; clicar em Gerar_Programação

Por hora muito obrigado a todos.

 
Postado : 11/03/2013 11:28 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

alguem?

 
Postado : 12/03/2013 8:39 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Sempre que um arquivo novo é salvo, se não especificado, o mesmo e salvo no diretorio padrão do seu excel.

Segue a rotina que utiliza; com modificações para atender o descrito.
Veja se lhe atende

Sub Gerar_Programação()

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 = Left(ActiveSheet.Name, Len(ActiveSheet.Name))
'Guarda o nome do arquivo atual
Nome = ActiveWorkbook.Name
'Determina qual o local a ser salvo o novo arquivo
Caminho = "c:Controle de Execução de Faixa"
'Determina o nome para o novo arquivo
NomeCopia = "Executar " & nPlan
' Determina a qtde de planilhas no novo arquivo=1
Application.SheetsInNewWorkbook = 1
Desprot    
    Rows("99:99").Select
    Selection.AutoFilter
    ActiveWindow.ScrollColumn = 1
    ActiveSheet.Range("$A$99:$A$5000").AutoFilter Field:=3, Criteria1:="S"
       
    UltLinha = ActiveSheet.Range("C65000").End(xlUp).Row + 1
       
    Cid = Range("A100").Value
    Alim = Range("B100").Value
    Disposit = Range("F68").Value
    Reexibir_Para_Edição
         
    ActiveSheet.Range("D100:G" & UltLinha & " , I100:I" & UltLinha & ",T100:T" & UltLinha & ",W100:W" & _
                     UltLinha & ",Z100:Z" & UltLinha & ",AB100:AD" & UltLinha & ",AF100:AF" & UltLinha & ",AI100:AI" & _
                     UltLinha & ",AL100:AL" & UltLinha & ",AN100:AN" & UltLinha & ",AP100:AQ" & UltLinha).Select
Selection.Copy
'Cria um novo arquivo
Workbooks.Add
    
'Salva os dado copiados no novo arquivo
Range("A3").Select
ActiveSheet.Paste
'Renomeia a nova planilha
ActiveSheet.Name = nPlan
    
    somat = ActiveSheet.Range("E65000").End(xlUp).Row + 1
    Range("A1").Value = "Cidade:"
    Range("B1").Value = Cid
    Range("D1").Value = "Dispositivo_Aliment.:"
    Range("E1").Value = Disposit & "_" & Alim
    Range("K1").Value = "Executor/Data:"
    Range("A2").Value = "Ponto 1"
    Range("A2").Value = "Ponto 1"
    Range("B2").Value = "Ponto 2"
    Range("C2").Value = "Coord. do Ponto1"
    Range("D2").Value = "Coord. do Ponto2"
    Range("E2").Value = "US's"
    Range("F2").Value = "Faixa 10M"
    Range("G2").Value = "Faixa 15M"
    Range("H2").Value = "Abertura "
    Range("I2").Value = "Bambu M²"
    Range("J2").Value = "Aceiro"
    Range("K2").Value = "Cerca Viva"
    Range("L2").Value = "Cipó"
    Range("M2").Value = "Podar Arv."
    Range("N2").Value = "Cortar Arv."
    Range("O2").Value = "Arv. Silvic."
    Range("P2").Value = "Arv. Silvic.   > Q 5"
    Range("Q2").Value = "Abert. Acesso"
    Range("R2").Value = "Observação"
    Range("D" & somat).Value = "Total em US's"

        Mesclar
        AjustarImpr
        AjustaBordas
        Ajustar
       
    Rows("1:1").RowHeight = 33
       
    Cells(somat, 5).Value = Application.WorksheetFunction.Sum(Range("E3:E" & somat))
       
    Range("E" & somat & ":" & "H" & somat).Select
    Selection.Merge
       
    Range("E" & somat).Select
        With Selection.Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorDark1
            .TintAndShade = -0.149998474074526
            .PatternTintAndShade = 0
        End With
'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(NomeCopia) <> "") Then
        Kill NomeCopia
    End If
'Salva o novo arquivo no caminho especificado
    ActiveWorkbook.SaveAs Caminho & NomeCopia
'Fecha o novo arquivo
    ActiveWorkbook.Close
       
       Range("A3").Select
       Windows(Nome).Activate
       Reexibir_Para_Edição
       Desprot
    Application.CutCopyMode = False
    Selection.AutoFilter
    ActiveSheet.Range("A100").Select
        Prot
'Retorna a qtde de planilhas ao padrão (3)
Application.SheetsInNewWorkbook = 3
End Sub
 
Postado : 13/03/2013 6:55 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Reinaldo , exatamente isso ,
Porem me apresentou um 1 problema aqui , é o seguinte:
se eu clicar em Gerar_Programação uma vez , beleza funciona perfeitamente , porem se eu clicar novamente , como o arquivo com aquele nome já existe, ele pergunta se quero substituir o arquivo ; se eu responder SIM beleza o código roda normal , porém se responder NÃO ai dá erro , o método save as falhou ; como contornar isso?

 
Postado : 16/03/2013 6:46 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Se o arquivo existir o que pretende fazer?

 
Postado : 16/03/2013 8:11 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

se responder SIM , sobrepor o arquivo existente , se responder Nâo , sair do código

 
Postado : 16/03/2013 8:14 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

ah outra coisa;
Adaptei esta parte em negrito, logo após :
'Salva o novo arquivo no caminho especificado
ActiveWorkbook.SaveAs Caminho & NomeCopia

If MsgBox("Arquivo Salvo com Sucesso em " & Chr(13) & Chr(13) & Caminho _
& Chr(13) & Chr(13) & " Nome do Arquivo : " & nPlan & Chr(13) & Chr(13) & Chr(13) & "Deixar Arquivo Aberto?" _
, vbQuestion + vbYesNo, "Deixar " & nPlan & " Aberto?") = vbYes Then
Else
GoTo Fechado
End If
GoTo Aberto
'Fecha o novo arquivo
Fechado:
ActiveWorkbook.Close
Aberto:

Range("A3").Select
Windows(Nome).Activate
Reexibir_Para_Edição
Desprot
Application.CutCopyMode = False
Selection.AutoFilter
ActiveSheet.Range("A100").Select
'Retorna a qtde de planilhas ao padrão (3)
Application.SheetsInNewWorkbook = 3
Prot
End Sub
Porém se eu "Gerar_Programação" e novamente clicar no botão estando o "arquivo Gearado" aberto; queria que o botão Gerar_programação , deixe de funcionar e se clicado me de a msgbox "arquivo gerado/aberto com o mesmo nome"

 
Postado : 16/03/2013 8:22 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Talvez assim

Sub Gerar_Programação()

    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 = Left(ActiveSheet.Name, Len(ActiveSheet.Name))
    'Guarda o nome do arquivo atual
    Nome = ActiveWorkbook.Name
    'Determina qual o local a ser salvo o novo arquivo
    Caminho = "c:Controle de Execução de Faixa"
    'Determina o nome para o novo arquivo
    NomeCopia = "Executar " & nPlan
    ' Determina a qtde de planilhas no novo arquivo=1
    Application.SheetsInNewWorkbook = 1
    Desprot
        Rows("99:99").Select
        Selection.AutoFilter
        ActiveWindow.ScrollColumn = 1
        ActiveSheet.Range("$A$99:$A$5000").AutoFilter Field:=3, Criteria1:="S"
           
        UltLinha = ActiveSheet.Range("C65000").End(xlUp).Row + 1
           
        Cid = Range("A100").Value
        Alim = Range("B100").Value
        Disposit = Range("F68").Value
        Reexibir_Para_Edição
             
        ActiveSheet.Range("D100:G" & UltLinha & " , I100:I" & UltLinha & ",T100:T" & UltLinha & ",W100:W" & _
                         UltLinha & ",Z100:Z" & UltLinha & ",AB100:AD" & UltLinha & ",AF100:AF" & UltLinha & ",AI100:AI" & _
                         UltLinha & ",AL100:AL" & UltLinha & ",AN100:AN" & UltLinha & ",AP100:AQ" & UltLinha).Select
    Selection.Copy
    'Cria um novo arquivo
    Workbooks.Add
       
    'Salva os dado copiados no novo arquivo
    Range("A3").Select
    ActiveSheet.Paste
    'Renomeia a nova planilha
    ActiveSheet.Name = nPlan
       
        somat = ActiveSheet.Range("E65000").End(xlUp).Row + 1
        Range("A1").Value = "Cidade:"
        Range("B1").Value = Cid
        Range("D1").Value = "Dispositivo_Aliment.:"
        Range("E1").Value = Disposit & "_" & Alim
        Range("K1").Value = "Executor/Data:"
        Range("A2").Value = "Ponto 1"
        Range("A2").Value = "Ponto 1"
        Range("B2").Value = "Ponto 2"
        Range("C2").Value = "Coord. do Ponto1"
        Range("D2").Value = "Coord. do Ponto2"
        Range("E2").Value = "US's"
        Range("F2").Value = "Faixa 10M"
        Range("G2").Value = "Faixa 15M"
        Range("H2").Value = "Abertura "
        Range("I2").Value = "Bambu M²"
        Range("J2").Value = "Aceiro"
        Range("K2").Value = "Cerca Viva"
        Range("L2").Value = "Cipó"
        Range("M2").Value = "Podar Arv."
        Range("N2").Value = "Cortar Arv."
        Range("O2").Value = "Arv. Silvic."
        Range("P2").Value = "Arv. Silvic.   > Q 5"
        Range("Q2").Value = "Abert. Acesso"
        Range("R2").Value = "Observação"
        Range("D" & somat).Value = "Total em US's"

            Mesclar
            AjustarImpr
            AjustaBordas
            Ajustar
           
        Rows("1:1").RowHeight = 33
           
        Cells(somat, 5).Value = Application.WorksheetFunction.Sum(Range("E3:E" & somat))
           
        Range("E" & somat & ":" & "H" & somat).Select
        Selection.Merge
           
        Range("E" & somat).Select
            With Selection.Interior
                .Pattern = xlSolid
                .PatternColorIndex = xlAutomatic
                .ThemeColor = xlThemeColorDark1
                .TintAndShade = -0.149998474074526
                .PatternTintAndShade = 0
            End With
    '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
        ActiveWorkbook.Close
          
        Range("A3").Select
        Windows(Nome).Activate
           Reexibir_Para_Edição
           Desprot
        Application.CutCopyMode = False
        Selection.AutoFilter
        ActiveSheet.Range("A100").Select
       Prot
    'Retorna a qtde de planilhas ao padrão (3)
    Application.SheetsInNewWorkbook = 3
sai:
    End Sub
 
Postado : 16/03/2013 8:40 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Reinaldo isto mesmo;
Mas no código que postei acima tem a linha de msgbox

If MsgBox("Arquivo Salvo com Sucesso em " & Chr(13) & Chr(13) & Caminho _
& Chr(13) & Chr(13) & " Nome do Arquivo : " & nPlan & Chr(13) & Chr(13) & Chr(13) & "Deixar Arquivo Aberto?" _
, vbQuestion + vbYesNo, "Deixar " & nPlan & " Aberto?") = vbYes Then

se no salvamento , eu escolher deixar o "arquivo gerado" ABERTO, quando eu clico em gerar programação novamente, me dá o erro permissão negada , erro na linha
Kill Caminho & NomeCopia & ".xlsx"
acho que porque tá tentando deletar um arquivo que está aberto.

 
Postado : 17/03/2013 8:20 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

como identifico se o arquivo ta abero e mando fecha-lo?

 
Postado : 18/03/2013 9:50 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Uma possibilidade, conforme suport da fabriquinha do Tio Bill.
http://support.microsoft.com/kb/291295/pt-br

 
Postado : 18/03/2013 10:26 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Desculpe-me pela ignorancia, mas não consegui adaptar aqui.
Segue o anexo para auxilio no entendimento.

é o seguinte,
1-clicar em gerar programação.
2- No msgbox se quer deixar o "gerado" aberto, clicar em SIM,
3-Clicar novamente em Gerar_programação ,
4- clicar em substituir arquivo
AI DÁ O ERRO.

 
Postado : 18/03/2013 12:13 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

continuo tentando , mas sem sucesso.

 
Postado : 19/03/2013 1:44 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Alguem tem alguma dica?

 
Postado : 20/03/2013 2:02 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

veja se esta no rumo esperado

 
Postado : 21/03/2013 7:38 am
Página 1 / 2