Desenvolvi um código para renomear aquivos pdf de uma pasta através do VBA. o Código abre o arquivo (NF), extrai o nome do cliente na nota, fecha o arquivo e renomeia com o nome do cliente. Porém gostaria de fazer através de um laço que pegasse todos os arquivos da pasta e fizesse o mesmo, mas só consegui fazer em um arquivo indicando o caminho dele.
Agradeço qualquer ajuda, e segue o código abaixo:
PublicDeclare PtrSafe Sub Sleep Lib"kernel32" (ByVal dwMilliseconds As LongPtr)
Dim AdobeFile AsStringSub Copiar_Dados_PDF_Start()
Dim AdobeApp AsStringDim StartAdobe
AdobeApp = "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe"
AdobeFile = ThisWorkbook.Path & "\NF\Damires - NF.pdf"
StartAdobe = Shell("" & AdobeApp & " " & """" & AdobeFile & """" & "", 1)
AdobeFile = VBA.Replace(VBA.Right(AdobeFile, VBA.Len(AdobeFile) - VBA.InStrRev(AdobeFile, "\")), ".pdf", "")
Application.OnTime Now + TimeValue("00:00:03"), "FirstStep"EndSubPrivateSub FirstStep()
SendKeys ("^a")
SendKeys ("^c")
Application.OnTime Now + TimeValue("00:00:02"), "SecondStep"EndSubPrivateSub SecondStep()
Dim ws As Worksheet
Dim i!
OnErrorResumeNext
AppActivate Application.Caption
OnErrorGoTo0With ThisWorkbook
.Activate
For i = 1To .Worksheets.Count
If .Sheets(i).Name = "..."Then
.Sheets(i).Activate
.Sheets(i).Cells.Clear
ExitForEndIfNextEndWith
Sheets("...").Range("A1").Activate
SendKeys ("^v")
Sleep 1000
SendKeys ("{RIGHT}")
Application.OnTime Now + TimeValue("00:00:02"), "fechapdf"EndSubPrivateSub fechapdf()
Dim KillPdf AsString
KillPdf = "TASKKILL /F /IM AcroRd32.exe"
Shell KillPdf, vbHide
Application.OnTime Now + TimeValue("00:00:02"), "extrairRazao"EndSubPrivateSub extrairRazao()
Dim Razao AsString
Razao = Sheets("...").Range("A17").Value
pontos = InStr(1, Razao, ":")
qtdeLetras = Len(Razao)
nome = Right(Razao, qtdeLetras - pontos)
Sheets("...").Range("E5").Value = nome
' MsgBox nome
Application.OnTime Now + TimeValue("00:00:02"), "renomeaPfd"EndSubPrivateSub renomeaPfd()
Name "C:\Users\Georgie\Documents\ENVIO DE EMAILS\NF\Damires - NF.pdf"As"C:\Users\Georgie\Documents\ENVIO DE EMAILS\NF\" & Sheets("...").Range("E5").Value & " - NF.pdf"EndSub
Pergunta
Gê Reiz
Bom dia.
Desenvolvi um código para renomear aquivos pdf de uma pasta através do VBA. o Código abre o arquivo (NF), extrai o nome do cliente na nota, fecha o arquivo e renomeia com o nome do cliente. Porém gostaria de fazer através de um laço que pegasse todos os arquivos da pasta e fizesse o mesmo, mas só consegui fazer em um arquivo indicando o caminho dele.
Agradeço qualquer ajuda, e segue o código abaixo:
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.