タイトル | : VBでAcrobatを使いPDF化する |
記事No | : 12849 |
投稿日 | : 2008/07/31(Thu) 20:20 |
投稿者 | : D5 |
お忙しい所失礼します。 VB6でExcelファイルをAcrobatを使いPDF化してます。 Acrobatは8のプロフェッショナルです。 たまに再現性がないエラーが出てしまい困っています。
エラー内容は 「実行時エラー '429': ActiveX コンポーネントはオブジェクトを作成できません。」 です。
再現できればどこで落ちてるのか分かるのですが、再現性が無い為に困っております。 ネット以外にも色々と調べており原因を探ってはいるのですが、これと言ったものが分からず本気で困っております。。。 不適切かも知れませんがこのプログラムでおかしい点はありますでしょうか?
Public Function bln_XlsPdf_fnc(ByVal xlsFile As String) As Boolean
Dim strFileName As String Dim strPdfFile As String Dim pdDoc As AcroPDDoc 'アクロバットPDFドキュメント Dim acroObjApp As New AcroApp 'アクロバットアプリケーションを生成 Dim acroObjAvDoc As New AcroAVDoc 'アクロバットドキュメントを生成 Dim fsoFile As File 'ファイル Dim fs On Error GoTo ERR_TRAP 'エラートラップ開始 bln_XlsPdf_fnc = False '// Acrobatでオープンする前にファイルがあるかないかDirで聞く、無い場合は一時スリープをかけ再度聞く strFname = Dir(xlsFile) If strFname = "" Then For i = 1 To 10 DoEvents strFname = Dir(strFileName) If strFname <> "" Then Exit For Sleep (500) Next i End If Set fs = CreateObject("Scripting.FileSystemObject") Set fsoFile = fs.GetFile(xlsFile)
'Acrobat表示設定 acroObjApp.Hide
'エクセルファイルをアクロバットで開く '開くと自動的にPDF化される。 '予期しないエラーが起こった場合メッセージボックスを出した後ERR_TRAPへ If Not acroObjAvDoc.Open(fsoFile.Path, fsoFile.Name) Then MsgBox "『ファイル名:" & xlsFile & "』" & vbCrLf & vbCrLf & "EXCELファイルをアクロバットでオープンできません。", vbCritical, "PDFファイル作成" GoTo ERR_TRAP End If
Set pdDoc = acroObjAvDoc.GetPDDoc() strFileName = Left(fsoFile.Name, Len(fsoFile.Name) - 4) strPdfFile = fsoFile.ParentFolder & EN & strFileName & ".pdf" 'PDFファイルを保存する。 '予期しないエラーが起こった場合メッセージボックスを出した後ERR_TRAPへ If Not pdDoc.Save(3, strPdfFile) Then MsgBox "『ファイル名:" & strPdfFile & "』" & vbCrLf & vbCrLf & "PDFファイルをアクロバットで保存できません。", vbCritical, "PDFファイル作成" GoTo ERR_TRAP End If '閉じる Call acroObjAvDoc.Close(1)
'Acrobatアプリケーションの終了 acroObjApp.Exit 'オブジェクトの破棄 Set pdDoc = Nothing Set acroObjAvDoc = Nothing Set acroObjApp = Nothing
Set fsoFile = Nothing Set fs = Nothing bln_XlsPdf_fnc = True On Error GoTo 0 Exit Function ERR_TRAP:
Call acroObjAvDoc.Close(1) 'Acrobatアプリケーションの終了 Call acroObjApp.Exit 'オブジェクトの破棄 Set pdDoc = Nothing Set acroObjAvDoc = Nothing Set acroObjApp = Nothing
Set fsoFile = Nothing Set fs = Nothing
Call ERROR_TRAP(Err, "bln_XlsPdf_fnc") 'エラー内容をメッセージボックスにて表示
End Function
以上です。 引数のByVal xlsFile As StringはPDF化するExcelのPath先が入ってます。 このプログラムはかなりの数のExcel帳票をPDF化します。 多い時は何万件と言うExcelをPDF化します。 Excel1つの容量は最大で5MBあるやつもあります。 シート数も最大で70くらいあるExcelも存在します。 どうやら容量が大きかったりシートが多いExcelの時にこのエラーが発生する様です。 自分的にはExcelが上記の様な時、acroObjAvDoc.Openで開こうと思っても時間がかかる為に、次のPDFになるExcelが入ってきてどんどんキューに溜まる為メモリ不足になるのかな?と思ってるのですが…。 実際、メモリをかなり積んでるPCでは起きにくい(又は起きない)事も確認してます。
それともそもそも何かおかしな点があるのでしょうか? 大変申し訳ありませんが、何か少しでも解決策があればと思い投稿してみました。 よろしくお願いします。
|