Eu estou procurando uma solução VBA para fazer tarefas simultâneas, como renomear o arquivo ativo, escolha a pasta onde salvar o arquivo renomeado e excluir a versão antiga do arquivo. O diálogo "Salvar como" permite as duas primeiras partes deste requisito, mas não exclui o ex. Arquivo.
Uma boa solução para esse problema foi publicada por Oliver Salzburg , que também é membro deste fórum e postou < href="https://superuser.com/questions/591143/how-to-simultaneously-rename-a-file-in-ms-office-and-delete-old-version"> aqui . No entanto esse código funciona apenas para o Microsoft Word eu tentei para o Microsoft excel com pouca modificação (ActiveDocument para ActiveWorkbook) destinado a excel mas ainda não funciona no Excel. O código VBA de Oliver Salzburg com pequenas modificações, como segue aqui
Sub MacroXL()
' Store original name
Dim sOriginalName As String
sOriginalName = ActiveWorkbook.FullName
' Save As
Dim sFilename As String, fDialog As FileDialog, ret As Long
Set fDialog = Application.FileDialog(msoFileDialogSaveAs)
ret = fDialog.Show
If ret <> 0 Then
sFilename = fDialog.SelectedItems(1)
Else
Exit Sub
End If
Set fDialog = Nothing
' Don't replace the original file
If sFilename = sOriginalName Then Exit Sub
ActiveWorkbook.SaveAs2 Filename:=sFilename, FileFormat:= _
wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _
:=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
:=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False, CompatibilityMode:=14
' Delete original
Kill sOriginalName
End Sub
Enquanto o erro de depuração é exibido como anexado:
Nestelocal:
ActiveWorkbook.SaveAsFilename:=sFilename,FileFormat:=_wdFormatXMLDocument,LockComments:=False,Password:="", AddToRecentFiles _
:=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
:=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False, CompatibilityMode:=14
Espero que o @Oliver Salzburg ou alguém com habilidade VBA consiga resolver o menor problema acima. Agradeço antecipadamente.