• 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.

Excelsheet opslaan met filenaam uit cel

Status
Niet open voor verdere reacties.

Lauke

Gebruiker
Lid geworden
6 sep 2010
Berichten
58
Ik ben aan het stoeien met Excel2010 en ben een beginner als het gaat om VBA.

Ik ben bezig een opdrachtbon te maken. De bonnen worden digitaal ingevoerd, met daarbij de mogelijkheid deze ook digitaal te versturen. Omdat de bonnen niet meer mogen worden gewijzigd na verzending is het idee een pdf te maken van de bon en die te versturen.

Ik ben inmiddels zover dat ik een bonnummer kan genereren uit de datum en tijd. Het zou handig zijn als dat nummer ook gelijk de bestandsnaam kon worden.

Ik heb inmiddels gevonden hoe ik een excelbestand kan opslaan PDF, echter wil ik graag de naam van de pdf ophalen uit een celwaarde (waar het bonnummer in worde gegenereerd.

Mijn pogingen zijn nog los zand, omdat we nu nog werken met Excel2003 en eind april pas overgaan op 2010. Daarom kan ik het originele bestandje niet opsturen, omdat daarin de te maken code voor het opslaan als PDF direct vastloopt.

De code van de opgenomen macro is:

Code:
Sub SaveAsCelnaamPDF()

    Range("D10").Select
    Selection.Copy
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "Naampje"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\Users\gemoss\Documents\naampje.pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        True
End Sub

"Naampje" is de inhoud van Cel D10. De inhoud van de Cel heb ik nu uit de Formulebalk gehaald.

Kan iemand me op een spoor zetten hoe ik de waarde van een cel (die dus bij ieder bestand veranderd) in de bestandsnaam krijg?

Alvast hartelijk dank.

Lauke
 
Laatst bewerkt:
Code:
Sub SaveAsCelnaamPDF()

Range("D10").Select
Selection.Copy
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "Naampje"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\gemoss\Documents\" & Sheets(1).Range("D10").Value & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
End Sub

Gelieve voor macrocode de codetags (#) te gebruiken.

Niels
 
Excuses Niels28. Ik had het verschil nog niet opgemerkt, ik ga ermee aan de slag! :o

@ Wieter, Dank voor de uitbreiding!!
 
Laatst bewerkt:
Hallo Niels28

Ik heb het getest, je aanvulling werkte niet zoals ik verwachtte. Het bestand werd nog steeds opgeslagen als "naampje".

Ik heb de code van Wieter gebruikt. Direct verzenden vanuit Excel wordt hier (nog) niet op prijs gesteld, dus die sla ik nog effe over.

De code die werkt, volgens mijn wensen is:

Code:
Sub SaveAsCelnaamPDF()

  ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
  "E:\" & Range("D10") & ".pdf", Quality:= _
  xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, _
 OpenAfterPublish:=True
End Sub

De opdrachtbon wordt dan geopend in Acrobat Reader (o.g.) en kan van daaruit gemaild worden.

(Ik heb voor de test een pad naar de E: schijf aangegeven)

Bedankt voor de hulp!! :thumb:

Groet,
Lauke
 
Laatst bewerkt:
Nou dacht ik dat ik er was, echter, loop ik tegen het probleem aan dat de bestandsnaam gelijk is aan het bonnummer. Het bonnummer is de datum en tijd in elkaar gedrukt (jjjjmmddumm;@). Ik krijg het niet voor elkaar deze waarde over te nemen.

Wat ik nu probeerde is een variabele aan te maken "Naam" en die dan te gebruiken.

Code:
Sub SaveAsCelnaamPDF()
    Dim Naam As String
    Naam = Range("N3").Select
  ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
  "E:\" & Naam & ".pdf", Quality:= _
  xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, _
 OpenAfterPublish:=True
End Sub

"String" geeft "waar" als bestandsnaam.
"Integer" geeft "-1"

Wat doe ik fout?

Bijgevoegd het bestandje:
Bekijk bijlage Kopie van Opdrachtbon voor Helpmij.xlsm
 
Code:
Sub SaveAsCelnaamPDF()
    With ActiveSheet
        .ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
            "E:\" & Format(.Range("N3").Value, "yyyymmddhhmm") & ".pdf", Quality:= _
            xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, _
            OpenAfterPublish:=True
    End With
End Sub
 
Hier begrijp ik helemaal niets van....... :shocked:

Nu krijg ik een foutmelding:

Compileerfout:
Kan het project of bibliotheek niet vinden


Na op "Ok" te hebben geklikt wordt de eerste regel (Sub SaveAsCelnaamPDF()) geel gekleurd........

Ik krijg dezelfde melding als ik in mijn code:

Code:
"E:\" & Naam & ".pdf", Quality:= _
aanpas met uw stukje

Code:
"E:\" & Format(.Range("N3").Value, "yyyymmddhhmm") & ".pdf", Quality:= _

Compleet:
Code:
Sub SaveAsCelnaamPDF()
    Dim Naam As String
    Naam = Range("N3").Select
  ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
  "E:\" & Format(.Range("N3").Value, "yyyymmddhhmm") & ".pdf", Quality:= _
  xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, _
 OpenAfterPublish:=True
End Sub

Waar gaat ie fout?
 
Je mist de with en de end with uit het voobeeld van warme bakkertje.
maar waarom pas je die code aan?? hij werkt zo als goed.
Select moet je tot een minimum beperken in je code, deze is meestal ook niet nodig, in jouw geval al helemaal niet.

Je gebruikt verder de variable naam, maar doet er verder niks mee.

Niels
 
Laatst bewerkt:
Waar gaat ie fout?

Dat je je misschien eerst de basisbeginselen van VBA eigen moet maken en proberen een aangereikte code te begrijpen.
Zoals Niels al opmerkte, waarom aan een code iets wijzigen als je niet begrijpt wat je wijzigt ?
 
Ik ben inderdaad beginner en prijs mezelf gelukkig dat het me redelijk goed af gaat. Dat ik een deel van de code vergeet de kopieren, sorry daarvoor maar volgens mij hoort dat bij leren. En wie is er niet zo begonnen? Hebben jullie verder nog tips over boeken die ik over dit onderwerp kan vinden??

Maar goed, terug naar het onderwerp. De variabele "Naam" wordt inderdaad in de laatste code niet gebruikt. Maar dat komt omdat ik twee varianten had, die nu samen in een code terecht kwamen. Vergeten een ' voor te zetten. Volgens mij zat de vraag over de foutmelding ook niet op dat punt.

Toch hartelijk dank voor jullie feedback en hulp :thumb:. Ik ga verder puzzelen. Ik hoop echter dat jullie me willen blijven helpen verder te komen met VBA.

Groet,

Lauke

By the way, het knippen en plakken van de code van Warme bakkertje geeft dezelfde foutmelding, "Compileerfout".
 
Laatst bewerkt:
Ik heb m'n code voor alle zekerheid zojuist nog eens getest en bij mij werkt ze feilloos.
Er wordt netjes een pdf-file gemaakt van je bestelbon en de naam is zoals jij het gewenst had.
Ik ben maw weeral gerustgesteld dat er niks aan mijn code mankeert. ;)
 
@Warme bakkertje: dank voor je reactie.

Nadat ik eerst niet begreep waarom het bij mij fout ging bleek dat er een VBA bibliotheek niet goed ingesteld stond. Vandaar ook dat ik gisteren aan het zoeken en aanpassen ben geweest.

Het lag/ligt dus inderdaad niet aan jou code.

Nogmaals dank voor het meedenken.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan