クセロPDFでのPDFファイル出力時、任意のファイル名をつけたいのですが、以下のコードに補足いただけますでしょうか?
Dim objPrinter As Object
Dim Fname As Variant
FN = "C:\vba\test.pdf"
For Each objPrinter In CreateObject("Shell.Application").Namespace(4).Items
If objPrinter.Name Like "クセロPDF*" Then
End If
Next
ActiveSheet.PrintOut
よろしくお願いします。
これでよろしいでしょうか??
Sub print_out() Dim objPrinter As Object Dim Fname As Variant FN = "C:\vba\test.pdf" For Each objPrinter In CreateObject("Shell.Application").Namespace(4).Items 'MsgBox objPrinter.Name If objPrinter.Name Like "クセロPDF*" Then 'MsgBox objPrinter.Name With ActiveSheet.PageSetup .LeftHeader = "" '左に表示 .CenterHeader = FN '中央に表示 .RightHeader = "" '右に表示 End With End If Next ActiveSheet.PrintOut '以下を有効にするとヘッダー表示を初期化します With ActiveSheet.PageSetup .LeftHeader = "" '左に表示 .CenterHeader = "" '中央に表示 .RightHeader = "" '右に表示 End With End Sub
※Vista+xls2003での動作確認しました
"任意"とはどう任意なのかちょっと伝わらないですが・・・
↓の意味合いであれば、ただ単にユーザーが入力する「"任意"のファイル名」になるんですが。
提示してある文章ではこれ以上の解釈ができないのですが・・・><;
こういうことですか??
以下のコードを厳密に説明するなら、
・任意のファイル名にして
・その任意のファイル名をページのヘッダに付加する
ということになります。(最初の回答ソースを踏襲したとしての話ですが)
Sub print_out() Dim objPrinter As Object Dim Fname As Variant FN = "C:\vba\test.pdf" FN = InputBox("ファイル名を任意に指定します", "ファイル名指定", FN)'これで任意に変えるということ?? For Each objPrinter In CreateObject("Shell.Application").Namespace(4).Items 'MsgBox objPrinter.Name If objPrinter.Name Like "クセロPDF*" Then 'MsgBox objPrinter.Name With ActiveSheet.PageSetup .LeftHeader = "" '左に表示 .CenterHeader = FN '中央に表示 .RightHeader = "" '右に表示 End With End If Next ActiveSheet.PrintOut '以下を有効にするとヘッダー表示を初期化します With ActiveSheet.PageSetup .LeftHeader = "" '左に表示 .CenterHeader = "" '中央に表示 .RightHeader = "" '右に表示 End With End Sub
単にinputboxを使っただけですが、こういうことではない??
すみません、違います。
エクセルexample.xls任意シートのクセロでの印刷時、ファイル名を指定したいということです。
クセロはPDFwriterです。
クセロPDFのファイル名をプロパティとして直接指定する事はできないようです。
替わりにsendkeysでファイル名指定をするという方法があります。
下記のページで、実際にうまく動いている報告がありました。
入れるとすれば、次のようなコードになるでしょう。
For Each objPrinter In CreateObject("Shell.Application").Namespace(4).Items If objPrinter.Name Like "クセロPDF*" Then ActiveSheet.PrintOut ' 秒数は適宜調整ください Application.Wait Now + TimeValue("00:00:03") With CreateObject("Wscript.Shell") .SendKeys FN .SendKeys "%S" End With Exit For End If Next ' ActiveSheet.PrintOut
ありがとうございます。
XeloPDFDriver.exeとやらが、ローカル内を検索してもみつからず、msconfigでもみつからずでして。。
・・・が、解決策が見つかりました。
ようするにファイル名でpdfが作られるならファイル名に名前を入れてしまえば良いのだと、
Activesheetを任意名新規ブックにコピー→PDF作成→新規ブックclose→新規ブック削除
でできました。
ありがとうございました。
あ、すみません、ファイル名をページに付加したいということではなく、PDFのファイル名を任意に指定したいという意味です。
通常では、ブック名がPDFファイル名になるかと思うのですが、それを任意にできないかと思いまして。。