• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Opslaan als... met VBA

Status
Niet open voor verdere reacties.

jvandervliet

Gebruiker
Lid geworden
23 mrt 2006
Berichten
234
Hallo,

Graag wil ik een bewerkte werkblad onder een andere naam opslaan. Dat lukt.

Alleen wil ik dat niet dat het opgeslagen bestand geopend wordt in plaats het originele bestand van waar ik in werkte. Anders moet ik elke keer het originele bestand opnieuw openen.

Voorbeeld: factuur.xlsm staat geopend waar ik in werk.
Vervolgens klik ik op de knop Factuur opslaan. Factuur wordt opgeslagen onder de de naam wat in cel H2 staat.
Vervolgens wordt de opgeslagen factuur geopend en en factuur.xlsm gesloten. Ik wil namelijk dat factuur.xlsm geopend blijft en de nieuwe niet geopend wordt.

Dit is het code waar mee het gebeurt:

Code:
Sub Opslaan()

'
' De macro is opgenomen op 10-6-2004 door --.

' Controleer of bestand bestaat
If Dir(Range("H2") & ".xls") = Range("H2") & ".xls" Then

' MsgBox ("File komt voor") ' Eenvoudige save, overschrijf bestande bestand
ActiveWorkbook.SaveAs

Else
'MsgBox ("File niet gevonden") ' Maak nieuwe bestand aan
'MsgBox ("File niet gevonden") ' Maak nieuwe bestand aan
ActiveWorkbook.SaveAs FileName:=Range("H2") & ".xls" _
, FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False

End If
 
Gebruik dan ActiveWorkbook.SaveCopyAs
 
Probeer deze eens

Code:
Sub Save()
Dim strName As String
Dim FileName As String
Const Path As String = "C:\...\...\...\...\"
    strName = ActiveWorkbook.FullName
    Application.DisplayAlerts = False
    FileName = Path & Range("H2").Value & ".xlsm"
    ActiveWorkbook.SaveAs FileName, 52
    Application.DisplayAlerts = True
    ActiveWorkbook.Close
    Workbooks.Open strName
End Sub
 
De genoemde code werkt hetzelfde als de code die ik al vermeld heb.

ActiveWorkbook.SaveCopyAs geeft de volgende foutmelding: Schermafbeelding 2020-06-05 om 14.19.53.png
 
Als ik die code run wordt het nieuwe bestand niet geopend en het oude bestand blijft geopend.
 
Ik bedoel die code wat ik gepost heb
 
Met die code wordt er niks opgeslagen, maar dan sluit het bestand. ik wil dat de originele geopend blijft.
 
Wat is er mis met #2?
 
Omdat dat niet het juiste gebruik van SaveCopyAs is.
 
daar staat immers op de lijn van de fout een ietwat 'verweesde' comma !!!:p
 
Die verdwaalde komma weggehaald en dan doet de code het. Alleen blijft het nieuwe bestand open en het originele wordt geloten. Ik wil dat de originele bestand open blijft en de nieuwe bestand niet geopend wordt.
 
Ik weet niet waar je dat vandaan haalt.
Het is zo simpel als dit:
ActiveWorkbook.SaveCopyAs "Pad en naam van je bestand"
 
Probleem is namelijk dat het originele bestand gesloten wordt.


PDF exporteren gaat super met deze code:

Code:
Dim Naam As String
Naam = ActiveSheet.Range("H2")
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=Naam & ".pdf", IgnorePrintAreas:=False, OpenAfterPublish:=True

Als ik de laatste regel verander in:

Code:
[B]ActiveSheet.ExportAsFixedFormat Type:=[B][I]xlOpenXMLWorkbook[/I][/B], FileName:=Naam & ".[B][I]xlsx[/I][/B]", IgnorePrintAreas:=False, OpenAfterPublish:=[I]False[/I]
[/B]

Dat gaat ook niet werken. Idee is hetzelfde. Krijg foutmelding 5: procedureaanroep of het argument is ongeldig.
 
Laatst bewerkt:
Het probleem is dat je niet opvolgt wat @edmoor schreef.
 
Inderdaad, er zijn nu al 4 personen die je een zeer precies raad gegeven hebben nl. gebruik "SaveCopyAs" en dan ga je weer een totale andere richting uit...
Als je het nu gewoon, heel gewoon eens zou doen zo ?

"Je kan een paard naar het water leiden, maar je kan het niet verplichten te drinken" is ook hier van toepassing !
 
Het probleem is het volgende:

De codes werken wel, alleen de originele bestand wordt gesloten terwijl de nieuw opgeslagen bestand het originele bestand in het scherm verschijnt. Net als ik handmatig opslaan als... doe. Dus als ik een nieuwe factuur wil maken, moet ik de originele bestand opnieuw openen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan