Ik heb een Excel-werkmap die op de formulierknop klikt. Ik wil een kopie van de werkmap opslaan met als bestandsnaam de huidige datum.
Ik blijf het volgende proberen
ActiveWorkbook.SaveAs ("\\filePath\FormFlow To MSExcel\" & Left(Now(), 10))
maar ik ontvang Run-time error '1004': Method 'SaveAs' of object'_Workbook' failed.
Kan iemand mij hierbij helpen? Ik ben nog erg nieuw in het ontwikkelen voor Excel.
Antwoord 1, autoriteit 100%
Hoogstwaarschijnlijk bestaat het pad dat u probeert te openen niet. Het lijkt erop dat je probeert op te slaan op een relatieve locatie en je hebt geen bestandsextensie in die string. Als u relatieve paden moet gebruiken, kunt u het pad ontleden vanuit ActiveWorkbook.FullName
BEWERKEN:
Een betere syntaxis zou ook zijn
ActiveWorkbook.SaveAs Filename:=myFileName, FileFormat:=xlWorkbookNormal
Antwoord 2, autoriteit 38%
De eenvoudigste manier om deze functie te gebruiken, is door te beginnen met ‘Een macro opnemen’. Zodra u begint met opnemen, slaat u het bestand op de gewenste locatie op, met de naam die u wilt, en stelt u natuurlijk het bestandstype in, hoogstwaarschijnlijk ‘Excel Macro Enabled Workbook’ ~ ‘XLSM’
Stop met opnemen en u kunt beginnen met het inspecteren van uw code.
Ik heb de onderstaande code geschreven waarmee je een werkmap kunt opslaan met het pad waar het bestand zich oorspronkelijk bevond, met de naam “Gebeurtenis [datum in cel “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
Kopieer de code naar een nieuwe module en schrijf dan een datum in cel “A1”, b.v. 01-01-2016 -> wijs de sub toe aan een knop en start. [Opmerking] u moet een opslagbestand maken voordat dit script werkt, omdat een nieuwe werkmap wordt opgeslagen op de standaard autosave-locatie!
Antwoord 3, autoriteit 4%
Het kan zijn dat uw standaardindeling niet overeenkomt met de bestandsextensie. U dient het bestandsformaat samen met de bestandsnaam op te geven en ervoor te zorgen dat het formaat overeenkomt met de extensie:
With someWorkbook
.SaveAs "C:\someDirector\Awesome.xlsm", fileformat:=xlOpenXMLWorkbookMacroEnabled
End With
OTOH, ik zie geen extensie op uw .SaveAs-bestandsnaam. Misschien moet u er een opgeven wanneer u dit programmatisch doet. Dat is logisch – het is handig om geen extensie te hoeven leveren vanuit de GUI-interface, maar wij programmeurs worden geacht ondubbelzinnige code te schrijven. Ik raad aan om de extensie en het bijbehorende formaat toe te voegen. Zie deze msdn-pagina voor een lijst met bestandsformaten. Om eerlijk te zijn herken ik niet veel van de beschrijvingen.
xlExcel8 = 56 is het .xls-formaat
xlExcel12 = 50 is het .xlsb-formaat
xlOpenXMLWorkbook = 51 is de .xlsx-indeling
xlOpenXMLWorkbookMacroEnabled = 52 is de .xlsm-indeling
xlWorkbookDefault wordt ook vermeld met een waarde van 51, wat me in de war brengt omdat ik dacht dat het standaardformaat kon worden gewijzigd.
Antwoord 4
Ik weet dat dit een oud bericht is, maar ik zocht iets soortgelijks op…
Ik denk dat je probleem was dat wanneer je Now() gebruikt, de uitvoer “20-06-2014” zal zijn… Dit is een probleem voor een bestandsnaam omdat er “/” in staat. Zoals u wellicht weet, kunt u bepaalde symbolen niet in een bestandsnaam gebruiken.
Proost
Antwoord 5
Ik gebruik met succes de volgende methode in één bestand,
Maar kom weer met precies dezelfde fout…
Alleen de laatste regel geeft een fout
Newpath = Mid(ThisWorkbook.FullName, 1, _
Len(ThisWorkbook.FullName) - Len(ThisWorkbook.Name)) & "\" & "ABC - " & Format(Date, "dd-mm-yyyy") & ".xlsm"
ThisWorkbook.SaveAs (Newpath)
Antwoord 6
Ik had het moeilijk, maar het onderstaande werkte uiteindelijk voor mij!
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
Antwoord 7
Dim NuevoLibro As Workbook
Dim NombreLibro As String
NombreLibro = "LibroPrueba"
'---Creamos nuevo libro y lo guardamos
Set NuevoLibro = Workbooks.Add
With NuevoLibro
.SaveAs Filename:=NuevaRuta & NombreLibro, FileFormat:=52
End With
'*****************************
'valores para FileFormat
'.xlsx = 51 '(52 for Mac)
'.xlsm = 52 '(53 for Mac)
'.xlsb = 50 '(51 for Mac)
'.xls = 56 '(57 for Mac)
'*****************************