2011-12-16 13 views
2

ファイルを常にPDF形式で印刷するようExcelに強制する方法はありますか?何らかの理由で私が(このサイトや他のサイトで)見つけた標準コードはうまくいかないようです。ここでExcel 2007/2010でのPDFへの保存のみを許可

は、私が使用しているコードです:

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _ 
cFileName, Quality:=xlQualityStandard, IncludeDocProperties:=True, _ 
IgnorePrintAreas:=False, _ 
OpenAfterPublish:=False 

私は、ファイル名をキャプチャするための簡単な入力ボックスを持っている、と私は何かをやってからそれらを防ぐためにしたいと思います。理想的には、このコードをBeforeSaveイベントとBeforePrintイベントに入れて、唯一できることはPDFに印刷することです。これは可能ですか?

+1

あなたのコードが動作するのではなく、何をしますか? –

+0

完全なパスを入力しないと、入力ボックスにファイル名のパス(例:C:\ Users \ SONY \ Desktop \ Book1.pdf – Ian

+0

)が含まれていることを確認してください。現在のパス?一度これを実行すると、デフォルトにパスを上書きする予定だったので、名前だけを気にします。 – Jay

答えて

0

このようなエラーが発生しているか、コードを実行していますか?

「オートメーションエラー:呼び出されたオブジェクトがそのクライアントから切断されました」はい、その後

http://support.microsoft.com/kb/813120

で以下のコードを使用して、下のリンクを見ている場合はExcel 2000でのエラーメッセージ

ワークシート

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 
    Macro1 
    End Sub 

は、新しいモジュールに次のコードを追加します

Sub Macro1() 
    cfilename = "C:\Users\SONY\Desktop\Book1.pdf" 'you can use the input box method to get the desired file name and location 
     ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
      cfilename, Quality:=xlQualityStandard, _ 
      IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ 
      False 
    End Sub 
+0

いいえ私は何のエラーもありません - それは保存されません。エラーはありません。 – Jay

+0

コードを実行するとどうなりますか? – Ian

+0

エラーはありませんが、PDFファイルは生成されません。それは実行されているようですが、出力はありません。 – Jay

0

私は以前、Excelと組み合わせてopensource PDFPrinterを使用しました。ここで私が書いたコードのいくつかは、あなたが望むことをするようです。おそらく、これを自分のソリューションの出発点として使うことができますか?

'Print the saved file as a pdf in the same directory

KTCurrentFilePath = ActiveWorkbook.Path 'Store current FilePath 

'Define Variables for PDF printjob 

Dim pdfjob As Object 

Dim KTPDFName As String 

Dim KTPDFPath As String 

Dim KTPCurrentPrinter As String 

'Set Variable Values

KTPDFName = Range("MyPDFName").Value & ".pdf" 

KTPDFPath = ActiveWorkbook.Path & Application.PathSeparator 

KTPCurrentPrinter = Application.ActivePrinter 

'Check if worksheet is empty and exit if so

If IsEmpty(ActiveSheet.UsedRange) Then Exit Sub 

'Start PDF Engine

Set pdfjob = CreateObject("PDFCreator.clsPDFCreator") 

On Error GoTo 0 

With pdfjob 

    If .cStart("/NoProcessingAtStartup") = False Then 

     MsgBox "Can't initialize PDFCreator.", vbCritical + _ 

      vbOKOnly, "PrtPDFCreator" 

      Application.ActivePrinter = KTPCurrentPrinter 

     Exit Sub 

    End If 

    .cOption("UseAutosave") = 1 

    .cOption("UseAutosaveDirectory") = 1 

    .cOption("AutosaveDirectory") = KTPDFPath 

    .cOption("AutosaveFilename") = KTPDFName 

    .cOption("AutosaveFormat") = 0 ' 0 = PDF 

    .cClearCache 

End With 

'Print the document to PDF

ActiveSheet.PrintOut copies:=1, ActivePrinter:="PDFCreator" 

'Wait until the print job has entered the print queue

Do Until pdfjob.cCountOfPrintjobs = 1 

    DoEvents 

Loop 

pdfjob.cPrinterStop = False 

'Wait until PDF creator is finished then release the objects

Do Until pdfjob.cCountOfPrintjobs = 0 

    DoEvents 

Loop 

pdfjob.cClose 

Set pdfjob = Nothing 

'Reset Printer to default

Application.ActivePrinter = KTPCurrentPrinter 

End Sub

よろしく、

ロバートIlbrink

+0

Robert - is PDFを作成するためのアドインが必要ですか? Excelが組み込まれていると思いましたか? – Jay

関連する問題