Print side | Luk vindue

Knappe til print (PDF)

Udskrevet fra: Dansk Regneark Forum
Kategori: Hjælp til regneark.
Forum navn: Makro og VBA
Forum beskrivelse: Hjælp til Makroer og VBA-programmering
Web-adresse: https://forum.excel-regneark.dk/forum_posts.asp?TID=290
Udskrevet den: 04.Dec.2024 kl. 20:38


Emne: Knappe til print (PDF)
Besked fra: Madsborre
Emne: Knappe til print (PDF)
Posteringsdato: 19.Mar.2011 kl. 16:46
Hej Dansk Regneark forum! 

Jeg har siddet og kigget lidt og må sige der er nogle skarpe hjerne her inde! :-) jeg fandt en ligende indlæg som næsten besvarede
mit spørgsmål desværre kunne det ikke rigtigt lykkes for mig..

Det er sådan at der i office 2011 til Mac er et faktura udkast, som jeg ønsker at bruge 
til mit lille hobby firma :-)

Det jeg gerne vil have tilføjet er en knap som ved klik automatiks gennem fakturaen 
som pdf, i en bestemt mappe med fakturanr. (celle D2) som navnet. 

Ved ikke om det kan lade sig gøre men håber :-) 

Rigtig god weekend!

Mads.



Svar:
Besked fra: Allan
Posteringsdato: 19.Mar.2011 kl. 21:28
Hej Mads,
 
Jeg mener at Excel 2011 til Mac understøtter VBA (Makroer) på samme vis som til Windows
Jeg prøver at poste en kode som gemmer den aktive ark som PDF, navngivet med teksten i D2.
 
SaveDir står til C:\Test\, dette skal jo nok laves om til MAC-syntaks, men ellers burde den virke.
 
Sub Print_To_PDF()
SaveDir = "C:\test\" 'Skal altid afsluttes med \
Filename = Range("D2") 'Filens navn
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=SaveDir & Filename & ".pdf", Quality:= _
    xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
    OpenAfterPublish:=False
End Sub

 

//Allan



Besked fra: Madsborre
Posteringsdato: 19.Mar.2011 kl. 21:58
Hej Allan :-)

Jeg har fået lavet dette og det virker som jeg gerne vil have det, næsten :-)

Det jeg savner er at den .pdf fil jeg få lavet og gemt faktisk også bliver printet.
Og at den på en eller anden måde ikke overskrive hvis fakturanr. allerede eksistere :-)
Kan man lave noget så den selv er fortløbenden for hver gange arket bliver åbnet? eller sådan?
Eller bare så den ikke overskrive allerede eksisterende filer?

p.s jeg er gået over til at lave det i office 2007 på i windows XP :-)

Sub Udskriv_og_Gem_Som_pdf()

Dim ArkNavn, DataSti, Filnavn As String
Dim objFolders As Object
Set objFolders = CreateObject("WScript.Shell").SpecialFolders

ArkNavn = "Ark1" 'Navnet på den fane som skal udskrives
DataSti = "E:\Firma\Faktura\" 'Der hvor filen skal gemmes, husk at afslutte med \
Filnavn = "Faktura_" & Sheets(ArkNavn).Range("D2").Value

'Tjekker om mappen 'DataSti' eksisterer, hvis ikke oprettes den
If Dir(DataSti, vbDirectory) = "" Then
    MkDir DataSti
End If

'Printer det aktive ark
'Sheets(ArkNavn).PrintOut

'Gemmer det aktive ark som .pdf
Sheets(ArkNavn).ExportAsFixedFormat _
    Type:=xlTypePDF, _
    Filename:=DataSti & Filnavn, _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=False
MsgBox "Filen er gemt som " & DataSti & Filnavn & ".pdf", vbInformation
End Sub




Besked fra: Madsborre
Posteringsdato: 20.Mar.2011 kl. 00:50
Hej Allan :-)

Det er lykkes mig at lave en knap mere som ved klik tilføjer et nyt faktura nummer ud fra en .txt fil. 
Så burde jeg heller ikke kunne komme til at overskrive en faktura når jeg gemmer..
Men hvis du kender en anden løsning på det med overskrivelse af eksistrenden dokumenter vil jeg gerne have hjælp der :-)


Besked fra: Allan
Posteringsdato: 20.Mar.2011 kl. 11:33
Jeg synes nok jeg kunne genkende koden :-) Fedt den kan bruges igen Tongue
 
At lagre fakturanummer i en tekstfil kan være ganske udmærket,
Denne kode tjekker om fakturanummeret er ledigt, hvis ikke, findes det næste ledige nummer og der prøves igen.
Prøv den lige af, jeg har ikke testet den, men bare skrevet den i hånden.
 
Sub Udskriv_og_Gem_Som_pdf()
Dim ArkNavn, DataSti, Filnavn As String
Dim objFolders As Object
Set objFolders = CreateObject("WScript.Shell").SpecialFolders
ArkNavn = "Ark1" 'Navnet på den fane som skal udskrives
DataSti = "E:\Firma\Faktura\" 'Der hvor filen skal gemmes, husk at afslutte med \
Filnavn = "Faktura_" & Sheets(ArkNavn).Range("D2").Value
'Tjekker om mappen 'DataSti' eksisterer, hvis ikke oprettes den
If Dir(DataSti, vbDirectory) = "" Then
 MkDir DataSti
End If
Igen:
'Hvis fakturanummer eksisterer, findes det næste ledige nummer
If Dir(DataSti & Filnavn & ".pdf") <> "" Then
    Sheets(ArkNavn).Range("D2").Value = Sheets(ArkNavn).Range("D2").Value + 1
    GoTo Igen
Else
    'Printer det aktive ark
    Sheets(ArkNavn).PrintOut
    'Gemmer det aktive ark som .pdf
    Sheets(ArkNavn).ExportAsFixedFormat _
    Type:=xlTypePDF, _
    Filename:=DataSti & Filnavn, _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=False
    MsgBox "Filen er gemt som " & DataSti & Filnavn & ".pdf", vbInformation
End If
End Sub
 
//Allan


Besked fra: Madsborre
Posteringsdato: 20.Mar.2011 kl. 15:22
Vil det sige at denne kode, når jeg trykker på knappen, tildeler arket et faktura nummer men selv tjekker i mappen om der
allerede er en faktura med det nummer?


Besked fra: Allan
Posteringsdato: 20.Mar.2011 kl. 17:33
Citat: Madsborre Madsborre skrev:

Vil det sige at denne kode, når jeg trykker på knappen, tildeler arket et faktura nummer men selv tjekker i mappen om der
allerede er en faktura med det nummer?
Lige nøjagtig.
Hvis fakturanummeret i D2 allerede er brugt (Der er en fil med samme nummer), vil koden lægge én til indtil den finder et ledigt nummer.
På denne måde kan du sikre at du aldrig overskriver en faktura.
 
//Allan



Print side | Luk vindue