Notifications
Clear all

FAZER A MACRO USAR O NOME DO ARQUIVO

6 Posts
3 Usuários
0 Reactions
968 Visualizações
(@fabio-maia)
Posts: 0
New Member
Topic starter
 

BOM DIA AMIGOS,
TENHO UMA PLANILHA "A", E TENHO A MACRO QUE PEGA INFORMACÕES DESTA E PASSA PARA OUTRA PLANILHA "F", E VOLTA A TELA PARA A PLANILHA 'A', PARA EU CONTINUAR MEU TRABALHO.
A QUESTÃO, EU PRECISO CRIAR AS PLANILHAS 'B', 'C', 'D', ENTAO EU QUERIA RENOMEAR A PLANILHA 'A' E A MACRO USAR O NOME DA PLANILHA PARA ATUALIZAR, ASSIM NÃO PRECISO SEMPRE EDITAR A MACRO. OBRIGADO!!!
EX.Range("N12:P12").Select
Range("P12").Activate
Selection.Copy
Sheets("F").Select
Range("A3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.Goto Reference:="FSE"
Application.CutCopyMode = False
Selection.Copy
Range("A4").Select
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=-21
Windows("A.xls").Activate
Sheets("ENTRADA").Select

 
Postado : 01/06/2014 5:41 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Windows("A.xls").Activate

Quando você diz planilha, significa arquivo (xls .....)?...ou guia?

Caso seja um arquivo, então use uma célula para renomear o arquivo, mas lembre-se o arquivo deve está fechado.

Eu não entendi muito bem sua dúvida. :?

O exemplo abaixo salva o arquivo baseado na célula.

Option Explicit 
Sub SvMe() 
Fonte:http://www.vbaexpress.com/kb/getarticle.php?kb_id=38
     'Saves filename as value of A1 plus the current date
     
    Dim newFile As String, fName As String 
     ' Don't use "/" in date, invalid syntax
    fName = Range("A1").Value '<- Veja aqui que será salvo com o nome que está na célula
     'Change the date format to whatever you'd like, but make sure it's in quotes
    newFile = fName & " " & Format$(Date, "mm-dd-yyyy") 
     ' Change directory to suit your PC, including USER NAME
    ChDir _ 
    "C:Documents and Settings USER NAME Desktop" 
    ActiveWorkbook.SaveAs Filename:=newFile 
     
End Sub 

Att

 
Postado : 01/06/2014 7:54 am
(@gtsalikis)
Posts: 2373
Noble Member
 

Bom dia,

Primeiro, não utilize letras maiúsculas, isso é o mesmo que gritar. (Além de ser uma convensão para a informática, é desagradável mesmo).

Segundo, eu não entendi muito bem a sua dúvida, vc quer fechar o arquivo "A.xls", renomeá-lo como "B.xls", abrir e rodar a macro novamente?

Outra coisa, pelo código que vc postou, não tem a mudança de arquivo (pasta de trabalho), que é o que vc destacou em vermelho.

Parece que v usou o gravador de macros, e colou somente um pedaço do código todo. O ideal é colocar o código completo, e a planilha compactada tb.

Em todo caso, seguem 2 possibilidades (alterações em vermelho):

1. Usando um inputbox, assim vc digita diretamente o nome da planilha quando precisar:

Dim nome_da_planilha As String
Range("N12:P12").Select
Range("P12").Activate
Selection.Copy
Sheets("F").Select
Range("A3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.Goto Reference:="FSE"
Application.CutCopyMode = False
Selection.Copy
Range("A4").Select
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=-21
nome_da_planilha = inputbox("digite o nome da planilha:")
Windows(nome_da_planilha).Activate

Sheets("ENTRADA").Select

2. Pegando automaticamente o nome da planilha quando começar a rodar o código:

Dim nome_da_planilha As String
nome_da_planilha = ThisWorkbook.Name

Range("N12:P12").Select
Range("P12").Activate
Selection.Copy
Sheets("F").Select
Range("A3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.Goto Reference:="FSE"
Application.CutCopyMode = False
Selection.Copy
Range("A4").Select
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=-21
Windows(nome_da_planilha).Activate
Sheets("ENTRADA").Select

Porém, se tivesse o código completo e a planilha, daria pra melhorar esse código.

Abs

 
Postado : 01/06/2014 8:11 am
(@fabio-maia)
Posts: 0
New Member
Topic starter
 

Ok Gilmar, agradeço muito, começando pela dica ética, com certeza nunca mais cometerei esse erro! Obrigado mesmo!
A duvida era essa mesma, fechar o arquivo "A" renomea-lo e abrir novamante como "B", foi resolvido com seu segundo exemplo.
Na planilha tenho 3 dessas macros, só não funcionou na de salvar, criei uma macro que fecho os arquivos e ja salvo os mesmos no pem drive. Então os arquivos são sempre substituidos e atualizados no pem drive(backup), segue código abaixo, se for possivel me ajudar, eu agradeço!!!
Onde é "NOVO", eu sempre tenho que corrigir com o nome da planilha nova.

Obrigado novamente!
Fabio Maia

Sub SALVAR()
'
' SALVAR Macro
'

'
Range("B4:C4").Select
ActiveWorkbook.Save
ChDir "E:PLANILHAS"
ActiveWorkbook.SaveAs Filename:="E:PLANILHASNOVO.xls", FileFormat:= _
xlExcel8, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False

ActiveWorkbook.Close
End Sub

 
Postado : 01/06/2014 11:25 am
(@gtsalikis)
Posts: 2373
Noble Member
 

tenta assim:

Sub SALVAR()
'
' SALVAR Macro
'
Dim nome_da_planilha As String
nome_da_planilha = ThisWorkbook.Name
nome_da_planilha = "E:PLANILHAS" & nome_da_planilha

'
Range("B4:C4").Select
ActiveWorkbook.Save
ChDir "E:PLANILHAS"
ActiveWorkbook.SaveAs Filename:= nome_da_planilha, FileFormat:= _
xlExcel8, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False

ActiveWorkbook.Close
End Sub

 
Postado : 01/06/2014 11:58 am
(@fabio-maia)
Posts: 0
New Member
Topic starter
 

perfeito!!! obrigado mais uma ves!!!

 
Postado : 01/06/2014 5:54 pm