いつもお世話になっております。
経過時間(秒)の数値表示でも、プログレスバーの表示でも良いのですが
可視化したいのです。
VBAの進捗表示は可能ですが、その中でVBA以外の処理に依存中は進
捗状況の表示処理も中断されてしまいます。
具体的には、VBAの一連の処理の中でPDFをエクセルに変換する処理
が含まれますが、この処理が一番時間がかかり、その進捗状況もリアルタ
イムで可視化できればと思っています。
他のアプリが動作中も、強引にVBAの中で動くことのできるタイマー処
理などがあればと可能だと思うのですが、知識がありません。
その他良い方法があればご教示いただきたいと質問させていただきました。
よろしくお願いします。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
Acrobat を COM で呼び出して処理させているのですね。
Acrobat が途中経過を呼び出し側に出力する仕様になっていない以上無理だと思います。
呼び出し側の VBA でできることと言えば、処理する 「何か」 の単位に対するステップ数の進捗表示ぐらいかと。
進捗表示させたい工程にどんな処理が含まれているのかわかりませんが、例えば単純に 「とあるフォルダーにある PDF ファイル群をすべて Excel ファイルに変換する」 だったら処理対象のファイル数が分母になり、1ファイル終わるごとにカウントアップするとか。
ご指導ありがとうございます。
おっしゃる通りで、Acrobatへ処理を投げたステップで、その処理が終わるまで
VBAでは次のステップへ進まないのが、問題なのです。
そこで、先にタイマーを起動しておいて、そのあとでPDF→EXCEL変換処理を行う
ことができないかと思っています。
昔VB6の時代ではTimerコントロールを使ったことがありましたがVBAにはTimer
コントロールはありませんね。
またAPIのtimeSetEventを使って、試してみましたが、うまくいったり、フリーズ
したりと、極めて不安定で使い物になりませんでした。
他に方法がないものかと、博識な皆様のご意見・ご指導を仰ぎたくお願いいたし
ます。
No.4
- 回答日時:
お疲れさまです。
なかなか大変ですね。
ご質問者さまは、ステータスバーや、ユーザーフォームとかでストップウォッチの様なものは作成できますでしょうか?
もし作成ができれば、それも動かしながら、PDF変換マクロを実行すれば良いと思います。
もし、変換処理でメモリを食ってしまい、ストップウォッチのカウントアップもされなくなってしまう場合は、別の手段が必要です。
また、ご連絡頂ければと思います。
No.3
- 回答日時:
お疲れさまです。
毎回決まって5秒でしたら5秒のカウントダウンをステータスバーに表示すればよいと思います。
PDFファイルによって秒数が変わるとカウントダウンは厳しいので経過時間を秒数で表示させ、その処理が終了したらカウントアップを中止するとともにステータスバーの表示をやめればよいと思います。
頑張ってください!!
再度のご指導ありがとうございます。
変換所要時間は、PDFファイルのザイズによって大きく異なります。
>PDFファイルによって秒数が変わるとカウントダウンは厳しいので経過時間を秒数で表示させ.......
変換中は経過時間も表示させることができません。変換中も経過時間をリアルに表示できればいいのですが.......。
No.2
- 回答日時:
お疲れさまです。
PDFをエクセルに変換する処理をどの様に記述しているかわかりませんが、
もし、単一の命令で一気に処理を投げかけその処理が終了するまで待っているのであると
プログレスバーや、経過時間を表示させるのは厳しいかもしれません。
私は、長い処理を行う時は、処理をステップに区切り、ステータスバーにステップ1経過時間●●分の様に
表示させています。
これは、例えばですが、STEP1開始時のシステム時刻を変数に格納し、表示させる直前のシステム時刻から
引かせて表示等をさせていますが、どこにこの記述を埋め込むかは、プログラムの作りで違ってきます。
これも、処理が細切れでところどころにスクリプトが記載できることが前提ですので、ご了承ください。
さっそくのご指導ありがとうございました。
おっしゃる通り、PDF変換は、次のような処理でおこなっております。
Sheets("XXXX").Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePD・・・・・・・
なので、区切りに可視化のための処理を組み込むことができないのです。
この変換処理中も、処理を強引に横取りできるタイマー処理のようなものが
VBAで存在していればいいのですが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数指定セルの可視セルのみを別シートに転記するVBAについて 2 2022/05/27 21:19
- Excel(エクセル) エクセルVBA 特殊フォルダのパスを取得の方法を教えてください 3 2022/09/02 13:14
- Excel(エクセル) エクセル VBA実行中のApplication.ScreenUpdatingについて 3 2023/07/13 21:06
- Visual Basic(VBA) エクセル 2つの列にある値の完全一致を抜き出すVBA 15 2022/12/15 03:22
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) EXCEL VBAで教えてください。 1 2022/12/22 04:20
- 車検・修理・メンテナンス 車が故障しました。 4 2022/11/28 22:58
- 仕事術・業務効率化 指示に対して疑問で返してくる人の考えが分からない。 7 2022/07/29 14:14
- Visual Basic(VBA) VBA 「,」・空白・カタカナ等の複数条件のマクロ 2 2023/08/23 11:57
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
ProgressBarを用いる場合、全体の処理数の求め方(Do Loop文に関して)。
Visual Basic(VBA)
-
長い時間かかるマクロが実行中かどうかを表示したい
Excel(エクセル)
-
Excel VBAで「プログラム実行」ボタンと「プログラム停止」ボタンをつけたい
Excel(エクセル)
-
-
4
VBA 数値を文字列として貼付したい
Excel(エクセル)
-
5
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
6
ブック名、シート名を他のモジュールからも参照可能にする方法
Access(アクセス)
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
9
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
10
excel VBA プログレスバーについて(初心者)
Visual Basic(VBA)
-
11
EXCELのVBAで作業ファイルを閉じてもメモリの解放をしなくて困っています
Excel(エクセル)
-
12
マクロ実行時、ユーザーフォームにラベルのテキストが表示されません。
Access(アクセス)
-
13
エクセル マクロ オートフィルの終点の指定について
Excel(エクセル)
-
14
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
15
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
16
VBAで別モジュールへの変数の受け渡し方法
Visual Basic(VBA)
-
17
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
18
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
19
VBAでワークシートを引数としてサンプル関数に渡したい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マクロで、次のコードへ行く前...
-
シグナル 6(SIGABRT)とは?
-
Excel VBA セルの名前があるか...
-
エクセル VBAで複数セル選択時...
-
private subモジュールを他のモ...
-
StatusStripの表示が更新されな...
-
ExcelのVBAで、選択したファイ...
-
VBA フォルダ内の全てブックの...
-
iPhoneのニューラルエンジンっ...
-
【VBA】エラー処理で別プロシー...
-
Excelプロセスが消えない
-
順番に処理させたい
-
ProgressBarを用いる場合、全体...
-
【C#/Java?】try-catchでcatch...
-
UWSCでの例外処理について
-
VBA マクロ 英語版WINDOWSで全...
-
【VBA】IE操作し過ぎてアクセス...
-
"ソース内に指定したキーワード...
-
“try/catch”と“if/else”
-
条件文でelseはつけるべき?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
private subモジュールを他のモ...
-
IF文に時間(何時から何時ま...
-
マクロで、次のコードへ行く前...
-
特定の名前のオートシェイプの...
-
シグナル 6(SIGABRT)とは?
-
特定のファイルを他のプロセス...
-
ExcelのVBAで、選択したファイ...
-
Excel VBA セルの名前があるか...
-
どう増強すべきか
-
Word VBA。各マクロの間に待ち...
-
【VBA】エラー処理で別プロシー...
-
UWSCのTHREADについて
-
シェルスクリプトでファイル内...
-
ドリブン??
-
Functionで戻り値を複数返す方法
-
iPhoneのニューラルエンジンっ...
-
エクセル VBAで複数セル選択時...
-
COBOL OCCURSで指定したデータ...
-
【Vb.net】プリンタジョブの取得
おすすめ情報
お礼の文に誤りがありました。
ActiveSheet.ExportAsFixedFormat Type:=xlTypePD・・・・・・・
は、エクセルをPDFに変換する処理の部分でした。
(本プロセスには、この処理もあり、同じく時間がかかるため同様に進捗状況を
しりたいのですが)
PDFをエクセルに変換する部分は
lRet = objAcroAVDoc.Open(PDF_NAME, "")
Set objAcroPDDoc = objAcroAVDoc.GetPDDoc()
Set jso = objAcroPDDoc.GetJSObject
jso.SaveAs PDF_NAME, "com.adobe.acrobat.xlsx" でした。
各行の所要時間をしらべて、均一であれば各行間に、進捗可視化処理を挿入してみます。
試してみました。
jso.SaveAs TEMP, "com.adobe.acrobat.xlsx" で1番時間を要しており
5秒程度かかっていました。この5秒間の時間の経過も可視化できればと思
っています。