VBA Renommer fichier Excel
Bonjour,
J'utilise une macro sur un fichier excel (appelé A) pour générer un email contenant deux pièces jointes, un pdf et un fichier excel (appelé B) tout deux enregistré en local.
J'aimerais que le fichier excel en local (le B) qui est joint dans mon email sois renommé en fonction de contenu d'une cellule présente dans mon fichier excel contenant ma macro (le A).
Ma macro:
Sub EnvoyerEmail_known()
'définition des variables
Dim oOutlook As Outlook.Application
Dim WasOutlookOpen As Boolean
Dim oMailItem As Outlook.MailItem
Dim Body As String
Dim Subject As Variant
PreparerOutlook oOutlook
Set oMailItem = oOutlook.CreateItem(0)
With oMailItem
.To = XXX
.CC = "XXX"
.Subject = Worksheets("XXX").Range("E3").Value
.Body = Worksheets("XXX").Range("A18").Value
.Attachments.Add ("C:\Users\XXX\Documents\PROJECTS\XXX\XXX.pdf")
.Attachments.Add ("C:\Users\XXX\Documents\PROJECTS\XXX\A.xlsx") : Fichier à renommer
.Display
End With
If (Not (oMailItem Is Nothing)) Then Set oMailItem = Nothing
If (Not (oOutlook Is Nothing)) Then Set oOutlook = Nothing
Exit Sub
EnvoyerEmailErreur:
If (Not (oMailItem Is Nothing)) Then Set oMailItem = Nothing
If (Not (oOutlook Is Nothing)) Then Set oOutlook = Nothing
MsgBox "Le mail n'a pas pu être envoyé...", vbCritical, "Erreur"
End Sub
Merci
Bonjour alexis0906,
veux-tu renommer le fichier original avant de l'envoyer ou bien faire une copie de celui-ci sous un autre nom avant de l'envoyer ?
Bonjour, merci de votre réponse,
J'ai trouvé la solution entre temps:
Sub EnvoyerEmail()
Dim oOutlook As Outlook.Application
Dim WasOutlookOpen As Boolean
Dim oMailItem As Outlook.MailItem
Dim Body As String
Dim Subject As Variant
Dim fichier As String
Dim Nomfichierexcel As String
Dim Chemin As String
Nomfichierexcel = Worksheets("XXXXX").Range("G1").Value + ".xlsx"
'If (
'Kill "C:\Users\XXXXX\Documents\PROJECTS\XXXXX\XXXXXXX\temp.xlsx"
FileCopy "C:\Users\XXXX\Documents\PROJECTS\XXXXXX\XXXXXX.xlsx", "C:\Users\XXXXXXXX\Documents\PROJECTS\XXXXX\XXXXX\temp.xlsx"
Name "C:\Users\XXXX\Documents\PROJECTS\XXXX\XXXXXXX\temp.xlsx" As "C:\Users\XXXXXXX\Documents\PROJECTS\XXXX\XXXXX\" + Nomfichierexcel
PreparerOutlook oOutlook
Set oMailItem = oOutlook.CreateItem(0)
With oMailItem
.To = Destinataire
.CC = "XXXX@XXX.com"
.Subject = Worksheets("RFQ").Range("E3").Value
.Body = Worksheets("TEXTE_known").Range("A18").Value
.Attachments.Add ("C:\Users\daveal\Documents\PROJECTS\RFQ\XXXXXX.pdf")
.Attachments.Add "C:\Users\daveal\Documents\PROJECTS\RFQ\XXXXXXXX\" + Nomfichierexcel
.Display
End With
'nettoyage...
If (Not (oMailItem Is Nothing)) Then Set oMailItem = Nothing
If (Not (oOutlook Is Nothing)) Then Set oOutlook = Nothing
Exit Sub
EnvoyerEmailErreur:
If (Not (oMailItem Is Nothing)) Then Set oMailItem = Nothing
If (Not (oOutlook Is Nothing)) Then Set oOutlook = Nothing
MsgBox "Le mail n'a pas pu être envoyé...", vbCritical, "Erreur"
End Sub
Private Sub PreparerOutlook(ByRef oOutlook As Object)
On Error GoTo PreparerOutlookErreur
On Error Resume Next
'vérification si Outlook est ouvert
Set oOutlook = GetObject(, "Outlook.Application")
If (Err.Number <> 0) Then 'si Outlook n'est pas ouvert, une instance est ouverte
Err.Clear
Set oOutlook = CreateObject("Outlook.Application")
Else 'si Outlook est ouvert, l'instance existante est utilisée
Set oOutlook = GetObject("Outlook.Application")
oOutlook.Visible = True
End If
Exit Sub
PreparerOutlookErreur:
MsgBox "Une erreur est survenue lors de l'exécution de PreparerOutlook()..."
End Sub