09. august 2006 - 15:03Der er
7 kommentarer og 2 løsninger
E-mail med prompt boks
Hej,
Jeg har fået lidt hjælp til at lave en makro, der lader mig afkrydse, hvilke ark i mit projekt som jeg vil sende til printeren. Dvs. jeg trykker på min "Print" knap, herefter sætter jeg kryds i de ark jeg ønsker at printe og så sendes disse til windows default printer.
Jeg kunne godt tænke mig samme funktionalitet, men istedet for at sende arkene til printeren vil jeg gerne have dannet PDF dokumenter. (Gerne et for hvert ark i projektet).
Min print makro ser således ud:
Option Explicit
Sub Printtotal() Dim i As Integer Dim TopPos As Integer Dim SheetCount As Integer Dim PrintDlg As DialogSheet Dim CurrentSheet As Worksheet Dim OriginalSheet As Worksheet Dim cb As CheckBox Application.ScreenUpdating = False
' Check for protected workbook If ActiveWorkbook.ProtectStructure Then MsgBox "Projektmappen er beskyttet!", vbCritical Exit Sub End If
' Add a temporary dialog sheet Set OriginalSheet = ActiveSheet Set PrintDlg = ActiveWorkbook.DialogSheets.Add
SheetCount = 0
' Add the checkboxes TopPos = 40 For i = 1 To ActiveWorkbook.Worksheets.Count Set CurrentSheet = ActiveWorkbook.Worksheets(i) ' Skip empty sheets and hidden sheets If Application.CountA(CurrentSheet.Cells) <> 0 And _ CurrentSheet.Visible Then SheetCount = SheetCount + 1 PrintDlg.CheckBoxes.Add 78, TopPos, 150, 16.5 PrintDlg.CheckBoxes(SheetCount).Text = _ CurrentSheet.Name TopPos = TopPos + 13 End If Next i
' Move the OK and Cancel buttons PrintDlg.Buttons.Left = 240
' Set dialog height, width, and caption With PrintDlg.DialogFrame .Height = Application.Max _ (68, PrintDlg.DialogFrame.Top + TopPos - 34) .Width = 230 .Caption = "Vælg hvilke ark der skal udskrives" End With
' Change tab order of OK and Cancel buttons ' so the 1st option button will have the focus PrintDlg.Buttons("Button 2").BringToFront PrintDlg.Buttons("Button 3").BringToFront
' Display the dialog box OriginalSheet.Activate Application.ScreenUpdating = True If SheetCount <> 0 Then If PrintDlg.Show Then For Each cb In PrintDlg.CheckBoxes If cb.Value = xlOn Then Worksheets(cb.Caption).Select Replace:=False End If Next cb ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True ' ActiveSheet.Select End If
Tak for hjælpen, jeg har selv rodet med det et stykke og har med dit input fået løst den sidste krølle..... "Collate:=True" skal stå efter ActivePrinter.... ellers virker det ikke!!!
Ved du om det er muligt at foreslå et navn på pdf filen baseret på nogle felter i mit regneark... noget i retning af:
....det har du nok desværre ret i. Så skal jeg fra min makro kunne sende koder afsted til min pdf skriver. Jeg har adgang til en udvikler version af et pdf program, så må jeg se om jeg evt. kan finde lidt hjælp til den.
Du får points som tak for hjælpen. En sidste ting... hvis jeg vil benytte samme tankegang til at vedhæfte de valgte ark på en e-mail - hvordan kunne det strikkes sammen? Jeg regner med at det er i samme sektion at jeg skal have skiftet "PrintOut" ud med en form for MailOut!?
Jeg vil tro at en e-mail funktion skal strikkes sammen på den måde du beskriver - men der må jeg desværre melde pas. Jeg ved emnet har været behandlet flere gange på Eksperten, så der skulle være mulighed for finde makro-stumper her som du evt. kan prøve dig frem med.
I det oprindelige svar hvor jeg fandt printmakroen, blev e-mail af ark også behandlet - jeg ved ikke om det er noget du kan bruge.
Evt. skal du lade spørgsmålet stå åbent lidt endu for at se om der er andre der har et bud på hvordan det sidste problem skal klares.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.