ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Visual Basic User's ClubコミュのExcelファイルのPDF変換

  • mixiチェック
  • このエントリーをはてなブックマークに追加
どうもはじめまして。
まだVBやって3ヶ月ぐらいの初心者です。
今、ExcelファイルをPDFに変換するツールを
VB6作成中なんですがよくわからないので
質問させていただきます。
開発環境は↓
Windows XP Professional Version 2002 Service Pack 2
Visual Basic 6.0(SP6)
Acrobat 6.0 Pro      です。

おおまかな仕様としては
・フォルダ内にあるExcelファイルをPDFに一括変換(個別指定可)
・Excel内部Sheet毎にPDFを作成する
・変換したPDFの名称を変更し指定フォルダに移動
・保存先、ファイル名指定のダイアログ表示無
と、こんな感じでしょうか。
プリンタドライバに"Adobe PDF"を指定するように組んでます。

PDFに変換する事は出来るんですが
ダイアログで保存先指定を行わないと
PDFはMy DocumentsにExcelのファイル名を継承して保存されます。

名前変更とファイル移動のロジックは記述してあるんですが
うまく動作してくれません。↓
xlSheet.PrintOut Copies:=1, ActivePrinter:="Adobe PDF"
FileCopy "作成PDF名.pdf","新規PDF名.pdf"
Kill "作成PDF名.pdf"
印刷とコピーの間にMsgBoxとか書くと
正常に移動してくれます。
原因としてはどんな事があげられ解決法はどうなるのか
教えていただけないでしょうか?
ちなみに構文エラーなどのエラーは出てないです。
長文になりましたがよろしくお願いします。

コメント(5)

FileCopyの瞬間に、まだPDFのファイルができあがってないんじゃないのかな。と。。。
>かずまおさん
ステップイン実行で時間の間隔をあけても
CopyFileとKillが実行されずファイル移動が行えませんでした。。。
Timerを使って印刷、コピー、削除を順番に処理を実行するようにしてTimerのインターバルを調整するとうまくいくタイミングが分かると思います。

こんな感じでやるとDoEventsを使わずに処理がいったんWindowsに返るのと、時間のかかる処理のタイミングが取りやすくなると思います。
caseを増やすとかIfで条件を追加すればうまくいくタイミングが見つけられると思いますよ。

select case mode
case 0
印刷処理
mode=1

case 1
コピー処理
mode=2

case 2
削除処理
timer1.Enabled=False
end select
>やっすんさん
ばっちりエラー番号はありました。。。

>るりるりさん
やっぱり処理速度の問題ですよね・・・
どかっとファイル作ってどかっと移動するのと
どっちがいいのか検討中ですが
提案していただいたロジックを使わせていただこうと思います。

>かずまおさん、やっすんさん、るりるりさん
回答ありがとうございます(シ_ _)シ

ちなみに、VBでAdobe PDFの印刷設定って変更可能でしょうか?
フォントを送信する にチェックいれたりとか・・・

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Visual Basic User's Club 更新情報

Visual Basic User's Clubのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング