J'ai un classeur Excel qui sur le bouton du formulaire, cliquez sur Je veux enregistrer une copie du classeur avec le nom du fichier étant la date actuelle.
Je continue d'essayer le suivant ActiveWorkbook.SaveAs ("\\filePath\FormFlow To MSExcel\" & Left(Now(), 10))
mais je reçois Run-time error '1004': Method 'SaveAs' of object'_Workbook' failed.
Quelqu'un peut-il m'aider avec ça? Je suis encore très nouveau dans le développement pour Excel.
Le chemin auquel vous essayez d'accéder n'existe probablement pas. Il semble que vous essayez de sauvegarder dans un emplacement relatif et que vous n’ayez pas d’extension de fichier dans cette chaîne. Si vous devez utiliser des chemins relatifs, vous pouvez analyser le chemin de ActiveWorkbook.FullName
EDIT: Une meilleure syntaxe serait également
ActiveWorkbook.SaveAs Filename:=myFileName, FileFormat:=xlWorkbookNormal
Le moyen le plus simple d’utiliser cette fonction est de commencer par "Enregistrer une macro". Une fois que vous avez commencé l’enregistrement, enregistrez le fichier à l’emplacement de votre choix, avec le nom de votre choix, puis définissez bien sûr le type de fichier, probablement le "classeur activé par macro Excel" ~ ~ 'XLSM'.
Arrêtez l'enregistrement et vous pouvez commencer à inspecter votre code.
J'ai écrit le code ci-dessous qui vous permet d'enregistrer un classeur en utilisant le chemin d'accès du fichier, en le nommant "Evénement [date dans la cellule" A1 "]
Option Explicit
Sub SaveFile()
Dim fdate As Date
Dim fname As String
Dim path As String
fdate = Range("A1").Value
path = Application.ActiveWorkbook.path
If fdate > 0 Then
fname = "Event " & fdate
Application.ActiveWorkbook.SaveAs Filename:=path & "\" & fname, _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
Else
MsgBox "Chose a date for the event", vbOKOnly
End If
End Sub
Copiez le code dans un nouveau module, puis écrivez une date dans la cellule "A1", par exemple. 01-01-2016 -> assigner le sous-marin à un bouton et le lancer. [Note] vous devez créer un fichier de sauvegarde avant que ce script ne fonctionne, car un nouveau classeur est enregistré dans l'emplacement de sauvegarde automatique par défaut!
Il se peut que votre format par défaut ne corresponde pas à l'extension de fichier. Vous devez spécifier le format de fichier avec le nom du fichier, en vous assurant que le format correspond à l'extension:
With someWorkbook
.SaveAs "C:\someDirector\Awesome.xlsm", fileformat:=xlOpenXMLWorkbookMacroEnabled
End With
OTOH, je ne vois pas d'extension sur votre nom de fichier .SaveAs. Peut-être devrez-vous en fournir un lorsque vous le ferez par programme. Cela a du sens - ne pas avoir à fournir d’extension à partir de l’interface graphique est pratique, mais nous, les programmeurs, devons écrire du code non ambigu. Je suggère d'ajouter l'extension et le format correspondant. Voir cette page msdn pour une liste des formats de fichiers. Pour être honnête, je ne reconnais pas beaucoup les descriptions.
xlExcel8 = 56 est le format .xls
xlExcel12 = 50 est le format .xlsb
xlOpenXMLWorkbook = 51 est le format .xlsx
xlOpenXMLWorkbookMacroEnabled = 52 est le format .xlsm
xlWorkbookDefault est également répertorié avec une valeur de 51, ce qui me laisse perplexe car je pensais que le format par défaut pourrait être modifié.
Je sais que ceci est un ancien post mais je cherchais quelque chose de similaire ... Je pense que votre problème était que lorsque vous utilisez Now (), le résultat sera "6/20/2014" ... Ceci est un problème pour un fichier nom comme il a "/" dedans. Comme vous le savez peut-être, vous ne pouvez pas utiliser certains symboles dans un nom de fichier.
À votre santé
J'utilise avec succès la méthode suivante dans un fichier,
Mais revenez avec exactement la même erreur ... Seule la dernière ligne affiche une erreur
Newpath = Mid(ThisWorkbook.FullName, 1, _
Len(ThisWorkbook.FullName) - Len(ThisWorkbook.Name)) & "\" & "ABC - " & Format(Date, "dd-mm-yyyy") & ".xlsm"
ThisWorkbook.SaveAs (Newpath)
Je me débattais, mais le dessous a finalement fonctionné pour moi!
Dim WB As Workbook
Set WB = Workbooks.Open("\\users\path\Desktop\test.xlsx")
WB.SaveAs fileName:="\\users\path\Desktop\test.xls", _
FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False