人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【エクセルVBAについての質問です】

クセロ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


よろしくお願いします。




●質問者: pocon
●カテゴリ:コンピュータ
✍キーワード:application AS FN name NeXT
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● gatchan
●1ポイント

これでよろしいでしょうか??

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での動作確認しました

◎質問者からの返答

あ、すみません、ファイル名をページに付加したいということではなく、PDFのファイル名を任意に指定したいという意味です。

通常では、ブック名がPDFファイル名になるかと思うのですが、それを任意にできないかと思いまして。。


2 ● gatchan
●29ポイント

"任意"とはどう任意なのかちょっと伝わらないですが・・・

↓の意味合いであれば、ただ単にユーザーが入力する「"任意"のファイル名」になるんですが。

提示してある文章ではこれ以上の解釈ができないのですが・・・><;

こういうことですか??

以下のコードを厳密に説明するなら、

・任意のファイル名にして

・その任意のファイル名をページのヘッダに付加する

ということになります。(最初の回答ソースを踏襲したとしての話ですが)

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です。

http://xelo.jp/xelopdf/


3 ● airplant
●50ポイント

クセロPDFのファイル名をプロパティとして直接指定する事はできないようです。

替わりにsendkeysでファイル名指定をするという方法があります。

下記のページで、実際にうまく動いている報告がありました。

MSN相談箱 エクセルVBAでPDFを作成したいのですが


入れるとすれば、次のようなコードになるでしょう。

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→新規ブック削除

でできました。

ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ