Hoe doe ik een Opslaan als in vba-code, mijn huidige Excel-werkmap opslaan met datumstempel?

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)
                                                    '*****************************

LEAVE A REPLY

Please enter your comment!
Please enter your name here

15 − ten =

Other episodes