Dit is een macro: Worksheet opslaan als PDF, met nummer en datum van een cel

Status
Niet open voor verdere reacties.

Speedykepke

Gebruiker
Lid geworden
8 jul 2009
Berichten
75
Hoi,
In bijlage stuur ik een file door, met de macro op mijn wijze (mogelijks niet zo efficiënt, doch deze werkt)
als ik de macro uitvoer op het eerste tabblad (in het rood gekleurd), opent deze wel het Opslaan als,
doch neemt de klant_factuur_datum NIET automatisch over van de betrokken factuur

wanneer ik de macro uitvoer, bv op de andere tabbladen, neemt deze WEL automatisch de nodige gegevens over bij het opslaan.

Er dient toch iets mis te zijn met het eerste tabblad (in het rood gekleurd), dit tabblad heb ik gekopieerd vanuit de originele file der facturen 2015, echter zie ik niet wat hier verkeerd aan is ----> de macro hier niet de gegevens overneemt van de klant_factuur_datum bij het opslaan.

Misschien weet iemand raad hiermee
'n dikke merci op voorhand voor de gedane moeite hoor
ciao Speedy
 

Bijlagen

Klik in dat rode blad in cel G16, klik dan in de formulebalk achter het getal 15136 en druk op de Enter toets.
Probeer het nu nog eens.
 
Er is inderdaad iets fout met de waarde van G16 in het eerste blad.
Deze waarde blijkt 15.136 te zijn (met een punt er tussen). OP andere bladen is dat bvb. 15001 (getal van 5 aansluitende cijfers).
Als je 15136 terug intypt in cel G16 van het eerste blad werkt het wel.
 
echter nog een bijkomend vraagske

hoe kan ik zorgen dat er toch een PUNT staat aangaande het factuurnummer
met de cel G16 aan te passen staat er nu 15136
doch het dient als 15.136 te verschijnen

hoe pas ik dit aan in de marcro?
Dit staat er nu:
FacNr = Range("G16").Value

toitoitoi
Speedy
 
Zo:
FacNr = Format(Range("G16").Value, "##,###")
 
dit is niet OK
FacNr = Format(Range("G16").Value, "##,###")

het resultaat blijft zoals voorheen

Speedy
 
De code is goed. Bekijk het maar eens via F8 (Debug mode). Het kan zijn dat Application.GetSaveAsFilename anders omgaat met een bestandsnaam waar een punt in staat.

Waarom laat je de gebruiker eigenlijk een naam opgeven als je deze al hebt samengesteld?
Verder doe je nog dit: sPath = "C:\users\Documenten\"
En dat gebruik je nergens. Padnaam en bestandsnaam zijn kennelijk bekend.
Dan hoeft de gebruiker daar verder toch niks meer aan te veranderen?

In feite heb je dan hieraan voldoende:
Code:
Sub OpslaanAlsPDF()
    Dim strFileName As String
       
    strFileName = "C:\users\Documenten\" & _
        Range("F7").Value & "_" & _
        Format(Range("G16").Value, "##,###") & "_" & _
        Format(Range("G17"), "dd-mm-yyyy")

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=strFileName, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
End Sub
 
ik kan efkes niet meer volgen
wel nu dit weggehaald uit de macro: sPath = "C:\users\Documenten\"

echter als ik deze code FacNr = Range("G16").Value
verander naar FacNr = Format(Range("G16").Value, "##,###")

krijg ik bij het Opslaan als, terug geen vermelding van de klantnaam_factuurnummer_datum

weet dat ik verre van 'n uitblinker ben aangaande macro's
verre van, geef ik heel grif toe

echter zal ik jou ferm dienen teleur te stellen
je nieuwe opgegeven code, doet hét langs geen kanten bij mij
raar maar waar

Sub OpslaanAlsPDF()
Dim strFileName As String

strFileName = "C:\users\Documenten\" & _
Range("F7").Value & "_" & _
Format(Range("G16").Value, "##,###") & "_" & _
Format(Range("G17"), "dd-mm-yyyy")

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=strFileName, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End Sub

een paar grijze haren bij gekregen deze avond
jij ook?

toitoitoi Speedy
 
Werkt hier prima. Krijg je een foutmelding? Bestaat bij jou de map C:\users\Documenten wel?
 
De map C:\users\Documenten\
lijkt me geen goede, want ik zou verwachten dat het iets zou moeten zijn als
C:\Users\gebruikersnaam\Documenten
of (liever nog):
C:\Users\gebruikersnaam\Documents

EDIT: Edmoor hint naar hetzelfde, zo lijkt het.

Tijs.
 
Als het in de documentenmap van de gebruiker moet worden opgeslagen kan je dit doen:
Code:
Sub OpslaanAlsPDF()
    Dim strFileName As String
       
    strFileName = Environ("USERPROFILE") & "\Documents\" & _
        Range("F7").Value & "_" & _
        Format(Range("G16").Value, "##,###") & "_" & _
        Format(Range("G17"), "dd-mm-yyyy")

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=strFileName, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
End Sub

weet dat ik verre van 'n uitblinker ben aangaande macro's
verre van, geef ik heel grif toe

Dat geeft helemaal niks. Dat kan ook niet allemaal direct maar is een leerproces.
En Helpmij is daarvoor een prima vraagbaak :)
 
Laatst bewerkt:
Hoi edmoor,
je code toegepast en oh wat een wonder, deze werkt perfect!
Echter wel een kleine aanpassing dienen te doen, nl:
strFileName = Environ("USERPROFILE") & "\Documents\
gewijzigd naar:
strFileName = Environ("USERPROFILE") & "\Documenten\

en daar waar op G16 (factuurnummer) Getal opgeslagen als tekst
dit NIET hoeven te converteren naar getal
als dat geen enorm pluspunt is hé
een wonder boven wonder!

HARTELIJK dank voor de vele hulp welke ik hiervoor kreeg, van jou en de overige personen
wat ben ik gelukkig!

doie - Speedy
 
Wil je zeggen dat strFileName = Environ("USERPROFILE") & "\Documents\
een foutmelding genereert? Kan ik me (eerlijk gezegd) niet voorstellen, want is "internationaler" dan strFileName = Environ("USERPROFILE") & "\Documenten\
en zou op alle recente versies Windows moeten werken.
Doe maar eens:
[Windows-toets]r toetscombinatie -> %USERPROFILE%\Documenten\
en
[Windows-toets]r toetscombinatie -> %USERPROFILE%\Documents\
EDIT: Je zult zien dat Documenten een niet-bestaande map is (of eentje die je zelf extra hebt aangemaakt) terwijl Documents je Mijn Documenten map laat zien.

Verder graag gedaan vanuit mijn kant (Edmoor heeft natuurlijk veel meer gedaan).

Graag nog deze vraag als opgelost aangeven: Klik (ingelogd op het forum en deze vraag open) op "Zet status opgelost" op de donkerblauwe horizontale balk, bijna bovenaan deze webpagina [die met "Zet status opgelost", "Onderwerp opties" etc.]

Tijs.
 
Laatst bewerkt:
Hallo dnties,
inderdaad, strFileName = Environ("USERPROFILE") & "\Documents\
gaf bij mij een foutmelding
diende strFileName = Environ("USERPROFILE") & "\Documenten\ te zijn
[Windows-toets]r toetscombinatie -> %USERPROFILE%\Documenten\ ---> deze is OK
raar maar waar
zo zie je maar hé

ik zet deze topic als afgehandeld
toitoitoi Speedy
 
Ok, apart. Evengoed fijn dat je ermee geholpen bent.

Edit, toevoeging:
Met
Code:
Set WshShell = CreateObject("WScript.Shell")
strFileName = WshShell.SpecialFolders("MyDocuments")
Danwel (ik denk dat een trailing "\" toegevoegd moet worden, daar ik niet denk dat een trailing "\" uit de code hierboven aan strFilename is gehangen):
Code:
Set WshShell = CreateObject("WScript.Shell")
strFileName = WshShell.SpecialFolders("MyDocuments")&"\"
had het ook moeten kunnen fixen.

Tijs.
 
Laatst bewerkt:
Dan ben ik nog wel even benieuwd naar de exacte foutmelding die deze geeft:
strFileName = Environ("USERPROFILE") & "\Documents\"

Want wat Tijs erover zegt in #15 klopt als een bus en is precies de reden waarom ik dat gebruikte.
 
Laatst bewerkt:
zie foutmelding in bijlage edmoor, wanneer strFileName = Environ("USERPROFILE") & "\Documents\ wordt ingesteld

de map Documenten werd niet door mezelf aangemaakt
deze was reeds voorzien in mijn systeem bij ingebruikname van Vista, door mij destijds zelf geactiveerd
zie tevens de bijlage hoe dit staat bij mij

ik bekijk nog eens grondig wat Tijs doorgegeven heeft
'k zal eens uittesten en zien wat dit geeft

doei - Speedy
 

Bijlagen

  • Fout Macro_Documents.jpg
    Fout Macro_Documents.jpg
    42,9 KB · Weergaven: 98
  • Documenten.jpg
    Documenten.jpg
    57,8 KB · Weergaven: 86
Hoi,

Ik zie alleen dat er een geel gedeelte is waaruit blijkt dat de code daar gestopt is met een melding.
De melding zelf zit er echter niet bij.
In het andere plaatje laat je zien dat er Documenten staat. Dat klopt, maar dat is alleen in de Verkenner zo.
Op Windows niveau is het Documents en dat zie je daar niet.
Ik ben dus nog steeds benieuwd naar de foutmelding.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan