From: Frustrated on
Hi,

I'm trying to write a macro that will print a number of worksheets to
different PDF files. I've used the macro recorder to generate sample code,
and it uses ExecuteExcel4Macro to execute the print function.

My problem is that when the code runs, the print dialog box waits for me to
give it a file name (I don't want the default) and to click 'Save'. This is
what I want to automate so that there is no user interaction. This is the
code that the macro recorder made for me:

ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,""Adobe PDF on Ne01:"",,TRUE,,FALSE)"

I'm assuming that one or more of the missing parameters from the Print call
are what I need to set, but I have no idea what the missing parameters do.
In the past, I've used SendKeys to interact with dialog boxes, but that isn't
working either. I'm running Office 2007, if that makes a difference.

Can anyone help with this? Thanks!


From: Jim Thomlinson on
Not sure if this helps...

Public Sub PageSetupXL4M( _
Optional LeftHead As String, Optional CenterHead As String, _
Optional RightHead As String, Optional LeftFoot As String, _
Optional CenterFoot As String, Optional RightFoot As String, _
Optional LeftMarginInches As String, Optional RightMarginInches As
String, _
Optional TopMarginInches As String, Optional BottomMarginInches As
String, _
Optional HeaderMarginInches As String, Optional FooterMarginInches As
String, _
Optional PrintHeadings As String, Optional PrintGridlines As String, _
Optional PrintComments As String, Optional PrintQuality As String, _
Optional CenterHorizontally As String, Optional CenterVertically As
String, _
Optional Orientation As String, Optional Draft As String, _
Optional PaperSize As String, Optional FirstPageNumber As String, _
Optional Order As String, Optional BlackAndWhite As String, _
Optional Zoom As String)

'based on a post by John Green in
'microsoft.public.excel.programming
'on 21 January 2001:
'http://google.com/groups?selm=VA.00000b2f.0028c7e5%40mara9"
Const c As String = ","
Dim pgSetup As String
Dim head As String
Dim foot As String
If LeftHead <> "" Then head = "&L" & LeftHead
If CenterHead <> "" Then head = head & "&C" & CenterHead
If RightHead <> "" Then head = head & "&R" & RightHead
If Not head = "" Then head = """" & head & """"
If LeftFoot <> "" Then foot = "&L" & LeftFoot
If CenterFoot <> "" Then foot = foot & "&C" & CenterFoot
If RightFoot <> "" Then foot = foot & "&R" & RightFoot
If Not foot = "" Then foot = """" & foot & """"

pgSetup = "PAGE.SETUP(" & head & c & foot & c & _
LeftMarginInches & c & RightMarginInches & c & _
TopMarginInches & c & BottomMarginInches & c & _
PrintHeadings & c & PrintGridlines & c & _
CenterHorizontally & c & CenterVertically & c & _
Orientation & c & PaperSize & c & Zoom & c & _
FirstPageNumber & c & Order & c & BlackAndWhite & c & _
PrintQuality & c & HeaderMarginInches & c & _
FooterMarginInches & c & PrintComments & c & Draft & ")"
Application.ExecuteExcel4Macro pgSetup
End Sub
--
HTH...

Jim Thomlinson


"Frustrated" wrote:

> Hi,
>
> I'm trying to write a macro that will print a number of worksheets to
> different PDF files. I've used the macro recorder to generate sample code,
> and it uses ExecuteExcel4Macro to execute the print function.
>
> My problem is that when the code runs, the print dialog box waits for me to
> give it a file name (I don't want the default) and to click 'Save'. This is
> what I want to automate so that there is no user interaction. This is the
> code that the macro recorder made for me:
>
> ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,""Adobe PDF on Ne01:"",,TRUE,,FALSE)"
>
> I'm assuming that one or more of the missing parameters from the Print call
> are what I need to set, but I have no idea what the missing parameters do.
> In the past, I've used SendKeys to interact with dialog boxes, but that isn't
> working either. I'm running Office 2007, if that makes a difference.
>
> Can anyone help with this? Thanks!
>
>