TOP サイトマップ(旧) 2026年1月28日 管理人 210件のコメント ■お知らせ 当ページの「サイトマップ(旧)」はココに移動しました。そちらをご利用下さい。時期を見て、当ページは削除します。 ▼ サイトの紹介 ▼ 当サイトの使い方 ▼ Excel ▼ Acrobat ▼ ダウンロード ▼ SDK ▼ 備考 ▼ その他&メモ ▼日本語の資料 ▼ Acobat OLE 以外の選択 【更新日:2026/01/27 (11版)】
管理人様 いつもお世話になっております。 先日はご回答いただきありがとうございます。 パスワードをかける際ですが、パスワードの長さに制限はありますでしょうか。 今、最終試験を行っておりますが、パスワードをかけたファイルが一致しないパスワードを入力しても開けてしまう現象が発生しています。 お手数をおかけしますが、ご確認のほどよろしくお願いいたします。
NAO さんへ とりあえず判った範囲で返答します。 QPDFでパスワードを掛けたPDFに対して、イロイロと再現テストをしたら、確かに短いパスワードでも開く事を確認しました。 同様にAdobe Acrobat XI Proアプリ本体でもパスワードを掛けてみました。 パスワードは Acrobat 7.0互換 128-bit AESです。(40では無いです。) 結果は同じで短いパスワードでも開きます。 よって、これはPDFファイル本体のパスワード・セキュリティの問題と推測されます。 それで対策案も考えてみました。 パスワードのキー長を40bitから256bitにすると短いパスワードで開かなくなります。 qpdf.exe --encrypt youser@pass "" 256 -- in.pdf in-pass.pdf 但し、これでも完璧かは確認できない。(・・ 以上はQPDFコマンドライン・ツールの話です。 スイマセン。時間切れです。 パスワード関連もセキュリティ関連の話も詳しくないので、全て1つ1つ調べながら返答しています。 最後に Cpdf でもパスワードは掛けれます。 Acrobat X互換の256ビットAES暗号化(AES256ISO)。 cpdf -encrypt AES256ISO youser@pass charles in.pdf -o in-pass.pdf
NAO さんへ パスワードの文字数が32文字までは 40 bit でも大丈夫でした。 キー長(bit)を上げると、PDFを見れる Acrobat Reader のバージョンが上がってしまいます。まだまだ低いバージョンのPDFビュアー(Acrobat Reader等)を使っているユーザーがいますから、その点を考慮する必要があるのではないかと思っています。 逆にその方がイイのなら bit を上げた方がイイでしょう。 長いパスワード(50文字以上?)を設定して、実際に使う時は48文字でも開けてしまう件をネット検索してみましたが、それらしき情報は無かったです。ひょっとして誰も気が付いてない?のではないでしょうか。 この長いパスワードの件は人力での調査はチョット不可能です。出来たら検証プログラムを作ろうかと検討しています。 昨日から調査した結果をひとまず、ご連絡します。 <22:11 追加> 31文字でした。人力調査です。 この現象はユーザーパスワード、オーナーパスワード共に同じ現象です。 検証プログラムで調査出来る事がある程度は推測できたので、もう一度、最初から見直して、そしてチョット時間を置いて、それから再度検証を行います。 重要な部分です。焦ると見落とす事が結構有るので、こうゆう場合は途中で少し時間を置く様に心がけています。 <2017/10/05 22:49 追加> 検証プログラムを作りました。 訂正します。32文字までです。 暗号化方式は「40、128」のどちらでも良いです。下位の互換性を考えると「40」がイイかもしれません。 なお、この結果は(再検証後に)後日まとめページを追加する予定です。 以上、報告します。
管理人さんへ このサイトを作っていただき,ありがとうございます。 エクセルのマクロを勉強し始めて1ヶ月弱の,完全な初心者の私でもPDFのテキストを検索して検索語句に該当するページを抽出することが出来ました。あまり理解はできてないのですが…一応動くモノが作れました。日常的な事務作業が自動化でき,業務が効率化されました。なんとお礼を申し上げて良いのかわかりませんが,一応コメントさせて頂きます。
管理人さんへ 2月初めにこのサイトに入らせていただきました。PDFの扱い満載なので驚いております。これからいろいろと参考にさせていただきます。 ところでひとつ悩んでいることがあります。PDF内のあるテキストを検索すして、それにファイルへのリンクを埋め込みたいと思うのですが、リンクを埋めるのにはどのようにしたらよいのでしょうか、よろしければご教示いただけないでしょうか。
西村 さん はじめまして。 < ▼ 2020-02-18 17:19 > 大変遅くなりました。 その様な機能は無かった様な気がしますが・・。 現在、再度の確認中です。 もうしばらくお待ち下さい。 < ▼ 2020-02-19 19:21 > 記憶の範囲で調べましたが、テキストにファイルを開くアクションを設定するプログラミング的な機能は見つかりませんでした。 しかし、制限は有りますが「似たような機能」を持たせることは可能かもしれません。現在、その部分で「技術的な可能性」を確認中です。 その制限ですが。 ・PDFファイル、又はHtmlファイル以外は開けない。 と言うものです。 リンクしたいファイルの種類を教えて下さい。
管理人さん 西村です。早速のご連絡をありがとうございます。出張のため返事が遅くなりまして申し訳ございません。お手数をおかけし恐縮です。 リンクしたいのはPDFファイルです。 PDF内で「ある接続名」がありまして、これにリンクを埋めたいと考えていました。「ある接続名」は拡張子なしのファイル名となっております。 現在以下のようにやっております。 1)この接続名をトリプルクリックして選択状態にする 2)AcroExchApp.MenuItemExecute("Copy")でクリップボードにコピー 3)クリップボードから接続名を取得 4)接続名からフルパスを作成し、PDFファイルを開く という手順でやってみたのですが、これ(トリプルクリック)がなんともまどろっこしかったので、リンクを埋められないかと、お尋ねした次第です。お手数をおかけしますが、よろしくおねがいします。
西村 さんへ。 こちらで提案できる機能のイメージが以下です。 テキスト「PDF」の上の破線の枠にマウスポインターを持って行くとクリック操作が可能になります。そこをクリックすると指定したPDFファイルを開きます。 実際は「PDF」テキストの上に破線の枠を表示した透明のボタンを配置しています。そのボタンにはローカルファイルのPDFファイルを開くためのAcrobatJavaScriptが埋め込まれています。 この処理は全てVBAで行いました。 サンプルをダウンロードできるようにこの後で行います。 <2020/02/23 21:53 追加> 以下のDropBoxからダウンロードして下さい。 ダウンロード先:LinkText-012.zip ※非常に難解なロジックのサンプルです。 「標準モジュール:AddButtonFields」の中の関数「Func_AddButtonFields」の形で入っています。 サンプルは完成形では無く、特殊な文字列(半角英字の複数行)での検索の場合のロジックが④に入っていますが、未完成です。それ以外は十分にテストしたつもりです。 但し、西村さんの希望にそう形にするには改造が更に必要になると勝手に予想しています。 上記サンプルは過去で度々質問を受けた部分がいくつか含まれているので、時間ができたら整理してサイトで公開する予定です。 ご検討ください。 <2020/02/23 22:24 追加> サンプル中の以下のコード .SetBorderColor "RGB", 0, 0, 1, 0 の第2から第4引数の部分「0,0,1」は色指定のコードです。UIColorコードで指定します。サンプルファイルの"UIColor"シートに一覧が有るので参考にしてください。 サンプルには当サイトに解説が無いコードが有ります。ネット検索すれば出てきますが、英語での解説ばかりで、しかも参考にならないものが多いです。こちらに聞いていただいても結構です。
管理人さん 早々とご教示いただきまして有難うございます。ダウンロードいたしました。これから勉強させていただきます。PDFへの操作が必要のことがありまして2月のはじめから勉強をしていましたが、なかなか思うようにいかず、管理人さんのページにめぐりあいました。このようなページを作り上げていることに驚いてしまいました。 ダウンロードコードを勉強し頑張りたいと思います。ただ恐らく私にとってかなりの難関かと思いますが、管理人さんのご教示を無駄にしないよう心得るつもりです。 本当にありがとうございました。
西村 さんへ 現在、ツギハギだらけのロジックの①、②、③、④の部分を縮小化中です。出来次第、アップします。それ以外の部分はそのままです。 それと「ある接続名」の部分の説明をもう少し詳しく教えていただければ、多少は考慮した関数に出来上がるかもしれません。公開できる範囲での例で結構です。「ある接続名」は複数の種類が有るのか。無限なのか。等。
管理人さん ご連絡をありがとうございます。ご親切な対応をいただきまして、ますます恐縮の限りです。 申し遅れましたが、私は3D-CADでプラント配管設備の設計をしております。ご存知かと思われますが、そのさい工事用図面として配管のひとつの範囲をスプール図(=アイソメ図=2.5次元的に一本線で配管ラインと寸法や属性が描画されたもの)をPDFファイルで出力いたします。このPDFは多いときで1000枚前後になることもあります。 スプール図一枚はそれで完結している場合もありますが、殆どは部分的(いわば途切れ途切れの状態)に出力されます。このとき途切れた位置に接続先が、例えば次のような表現で1行に描画されます。 「SD-001-50A-B1-H75」 しかし、一段前には必ず「CONT. ON」または「CONT. FROM」という空白を含む文字列があります。次のようにすべて1行ずつの描画です。 CONT. ON SD-001-50A-B1-H75 「接続先」には空白は許されません。この接続先に「.pdf」をつけて保存をいたします。ここまではマクロで自動で処理できています。 いままでは接続先名に番号をつけて探しやすいようにしておりましたが、プロジェクトによってはそれが許されない場合があります。 図面のチェックは必須なので、数百枚ともなりますと、これが実は大変な苦労なのです。いままでは都度ファイルを検索しておりましたが、これほどバカバカしい作業はありません。 前々から改善したいと思っておりましたが、ついに2月「これではあかん!」の結果が先のコメントさせていただきました内容です。 たびたび管理人さんのご親切に甘えることになり、本当に申し訳ない気持ちです。
管理人さん 西村です。申し訳ありません。追記いたします。 >>「ある接続名」は複数の種類が有るのか。無限なのか。等。 「接続名」は無限ではありません。一枚のPDFに最大でも20くらいかなと思います。だいたいは5、6くらいかと思われます。
西村 さんへ。 具体的な説明をありがとうございます。 サンプルは出来上がりましたが、公開は少し後にします。 少し質問が有ります。 Q1)「一段前」とは「一行前」の意味でしょうか? Q2)「CONT.ON」+「SD-001-50A-B1-H75」が頁をまたがる場合がありますか? Q3)「SD-001-50A-B1-H75」 の桁数(17桁)は固定ですか? Q4)「SD-001-50A-B1-H75」 のフォーマット(ハイフンの位置)は固定ですか? Q5)「SD-001-50A-B1-H75」 の接続先ファイル名は「x:\aaa\bbb\SD-001-50A-B1-H75.pdf」みたいな感じになるのでしょうか? Q6)サンプルを頂けますか? テスト用に2ファイルお願いします。接続先のPDFは不要です。これに関してはまたご連絡します。 出来るだけ実用的なサンプルを作りたいと思っています。
管理人さん いつも早速のご連絡をありがとうございます。お手数ばかりをおかけして申し訳ございません。。 Q1)「一段前」とは「一行前」の意味でしょうか? ■一行前です。ただ図面ですので、行としての定義は私の説明不足です。つまり、接続先と一行前の文字列は、他の接続先の定義がある場合、同じ行(この行と表現してしまったのが私のミスです)にあることもあるかもしれません。数センチ離れたりしているケースです。ただ文字列としてはお互い一つのカタマリで、必ずCONT. xxは接続先のその一行前にあります。 Q2)「CONT.ON」+「SD-001-50A-B1-H75」が頁をまたがる場合がありますか? ■ご質問にうまく答えているのか心配ですが、文字列が分断されることは決してありません。ただ接続名が違うシートに複数あることはザラです。 先のコメントにお伝えしていなかったのですが、一つのファイルには場合によっては数ページが出力されます。その理由は、ある部分の配管がひとつのページに描画するにはスペースがないというケースです。そのときはひとつのファイルに数ページのPDFが出力されます。 Q3)「SD-001-50A-B1-H75」 の桁数(17桁)は固定ですか? ■いいえ、固定ではありません。プロジェクトによって様々です。 この例は、「スチーム配管」の「ドレン(余分な流体を本来の目的がいに使わず捨てる」が「001というエリア(認識のための番号に過ぎません)」で、口径が「パイプ外形が50A(60.5mm)」で、枝分かれとしての認識記号が「B1」で、「保温が75mm」ですよ、といった例ですが、これはプロジェクトによって表現は様々です。ただ、全てにおいて似かよっています。 Q4)「SD-001-50A-B1-H75」 のフォーマット(ハイフンの位置)は固定ですか? ■いいえ、そうではありません。これこそは前の説明を裏切る場合が多くあります。例えば、流体の後ろに口径を持ってきたり、流体名が長かったり違ったり、プロジェクトによって様々です。 Q5)「SD-001-50A-B1-H75」 の接続先ファイル名は「x:\aaa\bbb\SD-001-50A-B1-H75.pdf」みたいな感じになるのでしょうか? ■ご指摘のとおりです。 Q6)サンプルを頂けますか? テスト用に2ファイルお願いします。接続先のPDFは不要です。これに関してはまたご連絡します。 ■了解いたしました。ご連絡をお待ちいたします。送付方法をお知らせいただけますでしょうか。 最後に、私は、このように管理人さんにお手数をおかけして、また管理人さんのご都合も無視してしまうようなご厚意に甘えて良いものか、何度も自問しております。都合の良い私の気持ちかもしれませんが、そのうえでお願いを申し上げることをお許しください。
管理人様 スキャナーで取り込んだPDFファイルの処理をVBAでしようとしています。 スキャナーで取り込んだデータは名称未設定.PDFで表示されているのですが、そのデータを選ぶ方法がわかりません。 スキャナーで取り込んだデータだけにして Set objAcroPDDoc = objAcroAVDoc.GetPDDoc にしても 0が入るだけで そのあと別名で保存しようとして lRet = objAcroPDDoc.save(PDSaveFull, BkName) としても0となりエラーとなります。 どのサンプルみても最初にファイルオープンしてファイルのオブジェクトを割り当ててから始まっています。 すでにオープンしているファイルにオブジェクトを割り当てる方法はどうすればよいのでしょうか? OS WINDOWS10 エクセル2016 アクロバット プロ DC
瀬尾 さん はじめまして。 申し訳有りませんが、質問内容が理解できません。 なお、当サイトはVBA言語に関する質問は受けていません。VBAに関する解説もしていません。VBAに関しては他の立派な解説サイトへお願いします。
管理人さんへ VB6で表示中の任意のフォームを指定したファイル名でPDFにしたいのですが、ご教授願えませんか。(ビットマップをPDFに変換するサンプルは見かけるのですが) ・Windows10 ・Acrobat Pro DC ・VB6
ひーさん はじめまして。 指定した画面(VB6)のイメージをPDFファイルに直接変換する方法は当サイトには無い(はず?)です。 ただ、(記憶が間違いでなければ)VB6のフォームならばデスクトップ上の位置(Top , Left)と自身フォームのサイズ(Height , widht)が分かるので、その画面をキャプチャーできると思っています。VB6からのキャプチャーのサンプルはネット上にも多数見受けられます。それを使って 1)指定画面(=フォーム)をキャプチャーし、画像ファイルに保存。 2)その画像ファイルをPDFへ変換。 となると思っています。 ご検討下さい。
管理人さん このサイトのサンプルを参考に、vbaからPDFのしおりを作成し、JavaScriptの[this.getURL('http://~’);]でwebのリンクを自動設定しています。 作成されたPDFのしおりをクリックすると、AcrobatReaderからはurlが表示されるのですが、Acrobatからでは反応がありません。 手動で[しおりのプロパティ]ー[アクション]の[Webリンクを開く]でurlを設定するとAcrobatでも表示されます。 vbaで[Webリンクを開く]を設定する事は可能でしょうか? サイトの内容を理解しきれず恐縮ですが、ご教示お願いします。 Windows10 64bit Acrobat DC pro
M さん はじめまして。 >・・Acrobatからでは反応がありません。 >手動で[しおりのプロパティ]・・・Acrobatでも表示されます。 環境の問題と思われます。予想です。 1)Acrobatの「環境設定」で分類「JavaScript」の「Acrobat JavaScriptを使用」がオフ(=使用不可)になっている。オンにして下さい。 動作確認はしてませんが・・。ご確認ください。 ▼2021/6/18 14:25 追加 どうやら予想は外れたみたい?です。 別の原因を考えます。
管理人さん 早々のご回答ありがとうございます。 気づかずお礼が遅れてしまい申し訳ございません。 おっしゃる通り予想とは違うようです。 しおりのアクションをvbaで設定するのは難しいでしょうか? 重ねての質問で申し訳ございませんが、ご指導よろしくお願いします。
M さんへ。 Readerでは開くのに、Acrobatでは駄目と言う事は、 Acrobat内の(Acrobat JavaScriptの)動作環境と考えられます、・・が。 >手動で[しおりのプロパティ]ー[アクション]の[Webリンクを開く]・・ 開くと言うことはファイアウォールでAcrobatアプリがブロックされたない証拠です。またWebリンクが動作すると言うことは、その環境設定に関する部分は問題ない。Webリンクはブロック設定になってない。 つまり、現時点で考えられるのは「Acrobat JavaScriptの環境設定」です。 >しおりのアクションをvbaで設定するのは難しいでしょうか? そんな事は無いです。 1)どこのサンプルを使ったのか教えていただけますか? ココですか? 2)Acrobat JavaScriptですが。 「this.getURL('http://~’);」を「getURL('http://~’);」にして、ReaderとAcrobatで動作確認もお願いします。実行エラーになるかもしれませんが。 3)出来たら別のPCがあれば、そこでも上記修正前の状態で動作確認をお願いします。やはり、Acrobatの環境設定が気になります。 4)Acrobat上でしおりをクリックしたときに以下ののような画面は表示されますか? ▼2021/06/19 16:46 追加 再現しました。原因と対策も分かりました。 かなり長文になるので来週の月曜までお待ち下さい。 Acrobatのバグっぽい部分も少し有るので整理に時間がかかります。 お急ぎならば、 [環境設定]->[信頼性管理マネージャー]->[設定の変更]->「Webサイト」に有るURLを全て削除 -> OKで戻る -> Acrobatの再起動 しおりのクリックで、上記の4画面が出ます。この時に常に「すべてのPDF文書に関してこのサイトに対する操作を記憶」をオフにして「許可」をクリックします。オンで許可すると、次回以降はなぜ?か動作しません。 詳細は後で。
管理人様
いつもお世話になっております。
先日はご回答いただきありがとうございます。
パスワードをかける際ですが、パスワードの長さに制限はありますでしょうか。
今、最終試験を行っておりますが、パスワードをかけたファイルが一致しないパスワードを入力しても開けてしまう現象が発生しています。
お手数をおかけしますが、ご確認のほどよろしくお願いいたします。
NAO さんへ
とりあえず判った範囲で返答します。
QPDFでパスワードを掛けたPDFに対して、イロイロと再現テストをしたら、確かに短いパスワードでも開く事を確認しました。
同様にAdobe Acrobat XI Proアプリ本体でもパスワードを掛けてみました。
パスワードは Acrobat 7.0互換 128-bit AESです。(40では無いです。)
結果は同じで短いパスワードでも開きます。
よって、これはPDFファイル本体のパスワード・セキュリティの問題と推測されます。
それで対策案も考えてみました。
パスワードのキー長を40bitから256bitにすると短いパスワードで開かなくなります。
qpdf.exe --encrypt youser@pass "" 256 -- in.pdf in-pass.pdf但し、これでも完璧かは確認できない。(・・
以上はQPDFコマンドライン・ツールの話です。
スイマセン。時間切れです。
パスワード関連もセキュリティ関連の話も詳しくないので、全て1つ1つ調べながら返答しています。
最後に Cpdf でもパスワードは掛けれます。
Acrobat X互換の256ビットAES暗号化(AES256ISO)。
cpdf -encrypt AES256ISO youser@pass charles in.pdf -o in-pass.pdfNAO さんへ
パスワードの文字数が32文字までは 40 bit でも大丈夫でした。
キー長(bit)を上げると、PDFを見れる Acrobat Reader のバージョンが上がってしまいます。まだまだ低いバージョンのPDFビュアー(Acrobat Reader等)を使っているユーザーがいますから、その点を考慮する必要があるのではないかと思っています。
逆にその方がイイのなら bit を上げた方がイイでしょう。
長いパスワード(50文字以上?)を設定して、実際に使う時は48文字でも開けてしまう件をネット検索してみましたが、それらしき情報は無かったです。ひょっとして誰も気が付いてない?のではないでしょうか。
この長いパスワードの件は人力での調査はチョット不可能です。出来たら検証プログラムを作ろうかと検討しています。
昨日から調査した結果をひとまず、ご連絡します。
<22:11 追加>
31文字でした。人力調査です。
この現象はユーザーパスワード、オーナーパスワード共に同じ現象です。
検証プログラムで調査出来る事がある程度は推測できたので、もう一度、最初から見直して、そしてチョット時間を置いて、それから再度検証を行います。
重要な部分です。焦ると見落とす事が結構有るので、こうゆう場合は途中で少し時間を置く様に心がけています。
<2017/10/05 22:49 追加>
検証プログラムを作りました。
訂正します。32文字までです。
暗号化方式は「40、128」のどちらでも良いです。下位の互換性を考えると「40」がイイかもしれません。
なお、この結果は(再検証後に)後日まとめページを追加する予定です。
以上、報告します。
管理人さんへ
このサイトを作っていただき,ありがとうございます。
エクセルのマクロを勉強し始めて1ヶ月弱の,完全な初心者の私でもPDFのテキストを検索して検索語句に該当するページを抽出することが出来ました。あまり理解はできてないのですが…一応動くモノが作れました。日常的な事務作業が自動化でき,業務が効率化されました。なんとお礼を申し上げて良いのかわかりませんが,一応コメントさせて頂きます。
masahiko さん はじめまして。
当サイトの目的はまさに「自動化」です。
お役に立ったみたいでホント嬉しいです。 v(^_^)
管理人さんへ
2月初めにこのサイトに入らせていただきました。PDFの扱い満載なので驚いております。これからいろいろと参考にさせていただきます。
ところでひとつ悩んでいることがあります。PDF内のあるテキストを検索すして、それにファイルへのリンクを埋め込みたいと思うのですが、リンクを埋めるのにはどのようにしたらよいのでしょうか、よろしければご教示いただけないでしょうか。
西村 さん はじめまして。
< ▼ 2020-02-18 17:19 >
大変遅くなりました。
その様な機能は無かった様な気がしますが・・。
現在、再度の確認中です。
もうしばらくお待ち下さい。
< ▼ 2020-02-19 19:21 >
記憶の範囲で調べましたが、テキストにファイルを開くアクションを設定するプログラミング的な機能は見つかりませんでした。
しかし、制限は有りますが「似たような機能」を持たせることは可能かもしれません。現在、その部分で「技術的な可能性」を確認中です。
その制限ですが。
・PDFファイル、又はHtmlファイル以外は開けない。
と言うものです。
リンクしたいファイルの種類を教えて下さい。
管理人さん
西村です。早速のご連絡をありがとうございます。出張のため返事が遅くなりまして申し訳ございません。お手数をおかけし恐縮です。
リンクしたいのはPDFファイルです。
PDF内で「ある接続名」がありまして、これにリンクを埋めたいと考えていました。「ある接続名」は拡張子なしのファイル名となっております。
現在以下のようにやっております。
1)この接続名をトリプルクリックして選択状態にする
2)AcroExchApp.MenuItemExecute("Copy")でクリップボードにコピー
3)クリップボードから接続名を取得
4)接続名からフルパスを作成し、PDFファイルを開く
という手順でやってみたのですが、これ(トリプルクリック)がなんともまどろっこしかったので、リンクを埋められないかと、お尋ねした次第です。お手数をおかけしますが、よろしくおねがいします。
西村 さんへ。
こちらで提案できる機能のイメージが以下です。
テキスト「PDF」の上の破線の枠にマウスポインターを持って行くとクリック操作が可能になります。そこをクリックすると指定したPDFファイルを開きます。
実際は「PDF」テキストの上に破線の枠を表示した透明のボタンを配置しています。そのボタンにはローカルファイルのPDFファイルを開くためのAcrobatJavaScriptが埋め込まれています。
この処理は全てVBAで行いました。
サンプルをダウンロードできるようにこの後で行います。
<2020/02/23 21:53 追加>
以下のDropBoxからダウンロードして下さい。
ダウンロード先:LinkText-012.zip
※非常に難解なロジックのサンプルです。
「標準モジュール:AddButtonFields」の中の関数「Func_AddButtonFields」の形で入っています。
サンプルは完成形では無く、特殊な文字列(半角英字の複数行)での検索の場合のロジックが④に入っていますが、未完成です。それ以外は十分にテストしたつもりです。
但し、西村さんの希望にそう形にするには改造が更に必要になると勝手に予想しています。
上記サンプルは過去で度々質問を受けた部分がいくつか含まれているので、時間ができたら整理してサイトで公開する予定です。
ご検討ください。
<2020/02/23 22:24 追加>
サンプル中の以下のコード
.SetBorderColor "RGB", 0, 0, 1, 0
の第2から第4引数の部分「0,0,1」は色指定のコードです。UIColorコードで指定します。サンプルファイルの"UIColor"シートに一覧が有るので参考にしてください。
サンプルには当サイトに解説が無いコードが有ります。ネット検索すれば出てきますが、英語での解説ばかりで、しかも参考にならないものが多いです。こちらに聞いていただいても結構です。
管理人さん
早々とご教示いただきまして有難うございます。ダウンロードいたしました。これから勉強させていただきます。PDFへの操作が必要のことがありまして2月のはじめから勉強をしていましたが、なかなか思うようにいかず、管理人さんのページにめぐりあいました。このようなページを作り上げていることに驚いてしまいました。
ダウンロードコードを勉強し頑張りたいと思います。ただ恐らく私にとってかなりの難関かと思いますが、管理人さんのご教示を無駄にしないよう心得るつもりです。
本当にありがとうございました。
西村 さんへ
現在、ツギハギだらけのロジックの①、②、③、④の部分を縮小化中です。出来次第、アップします。それ以外の部分はそのままです。
それと「ある接続名」の部分の説明をもう少し詳しく教えていただければ、多少は考慮した関数に出来上がるかもしれません。公開できる範囲での例で結構です。「ある接続名」は複数の種類が有るのか。無限なのか。等。
管理人さん
ご連絡をありがとうございます。ご親切な対応をいただきまして、ますます恐縮の限りです。
申し遅れましたが、私は3D-CADでプラント配管設備の設計をしております。ご存知かと思われますが、そのさい工事用図面として配管のひとつの範囲をスプール図(=アイソメ図=2.5次元的に一本線で配管ラインと寸法や属性が描画されたもの)をPDFファイルで出力いたします。このPDFは多いときで1000枚前後になることもあります。
スプール図一枚はそれで完結している場合もありますが、殆どは部分的(いわば途切れ途切れの状態)に出力されます。このとき途切れた位置に接続先が、例えば次のような表現で1行に描画されます。
「SD-001-50A-B1-H75」
しかし、一段前には必ず「CONT. ON」または「CONT. FROM」という空白を含む文字列があります。次のようにすべて1行ずつの描画です。
CONT. ON
SD-001-50A-B1-H75
「接続先」には空白は許されません。この接続先に「.pdf」をつけて保存をいたします。ここまではマクロで自動で処理できています。
いままでは接続先名に番号をつけて探しやすいようにしておりましたが、プロジェクトによってはそれが許されない場合があります。
図面のチェックは必須なので、数百枚ともなりますと、これが実は大変な苦労なのです。いままでは都度ファイルを検索しておりましたが、これほどバカバカしい作業はありません。
前々から改善したいと思っておりましたが、ついに2月「これではあかん!」の結果が先のコメントさせていただきました内容です。
たびたび管理人さんのご親切に甘えることになり、本当に申し訳ない気持ちです。
管理人さん
西村です。申し訳ありません。追記いたします。
>>「ある接続名」は複数の種類が有るのか。無限なのか。等。
「接続名」は無限ではありません。一枚のPDFに最大でも20くらいかなと思います。だいたいは5、6くらいかと思われます。
西村 さんへ。
具体的な説明をありがとうございます。
サンプルは出来上がりましたが、公開は少し後にします。
少し質問が有ります。
Q1)「一段前」とは「一行前」の意味でしょうか?
Q2)「CONT.ON」+「SD-001-50A-B1-H75」が頁をまたがる場合がありますか?
Q3)「SD-001-50A-B1-H75」 の桁数(17桁)は固定ですか?
Q4)「SD-001-50A-B1-H75」 のフォーマット(ハイフンの位置)は固定ですか?
Q5)「SD-001-50A-B1-H75」 の接続先ファイル名は「x:\aaa\bbb\SD-001-50A-B1-H75.pdf」みたいな感じになるのでしょうか?
Q6)サンプルを頂けますか? テスト用に2ファイルお願いします。接続先のPDFは不要です。これに関してはまたご連絡します。
出来るだけ実用的なサンプルを作りたいと思っています。
管理人さん
いつも早速のご連絡をありがとうございます。お手数ばかりをおかけして申し訳ございません。。
Q1)「一段前」とは「一行前」の意味でしょうか?
■一行前です。ただ図面ですので、行としての定義は私の説明不足です。つまり、接続先と一行前の文字列は、他の接続先の定義がある場合、同じ行(この行と表現してしまったのが私のミスです)にあることもあるかもしれません。数センチ離れたりしているケースです。ただ文字列としてはお互い一つのカタマリで、必ずCONT. xxは接続先のその一行前にあります。
Q2)「CONT.ON」+「SD-001-50A-B1-H75」が頁をまたがる場合がありますか?
■ご質問にうまく答えているのか心配ですが、文字列が分断されることは決してありません。ただ接続名が違うシートに複数あることはザラです。
先のコメントにお伝えしていなかったのですが、一つのファイルには場合によっては数ページが出力されます。その理由は、ある部分の配管がひとつのページに描画するにはスペースがないというケースです。そのときはひとつのファイルに数ページのPDFが出力されます。
Q3)「SD-001-50A-B1-H75」 の桁数(17桁)は固定ですか?
■いいえ、固定ではありません。プロジェクトによって様々です。
この例は、「スチーム配管」の「ドレン(余分な流体を本来の目的がいに使わず捨てる」が「001というエリア(認識のための番号に過ぎません)」で、口径が「パイプ外形が50A(60.5mm)」で、枝分かれとしての認識記号が「B1」で、「保温が75mm」ですよ、といった例ですが、これはプロジェクトによって表現は様々です。ただ、全てにおいて似かよっています。
Q4)「SD-001-50A-B1-H75」 のフォーマット(ハイフンの位置)は固定ですか?
■いいえ、そうではありません。これこそは前の説明を裏切る場合が多くあります。例えば、流体の後ろに口径を持ってきたり、流体名が長かったり違ったり、プロジェクトによって様々です。
Q5)「SD-001-50A-B1-H75」 の接続先ファイル名は「x:\aaa\bbb\SD-001-50A-B1-H75.pdf」みたいな感じになるのでしょうか?
■ご指摘のとおりです。
Q6)サンプルを頂けますか? テスト用に2ファイルお願いします。接続先のPDFは不要です。これに関してはまたご連絡します。
■了解いたしました。ご連絡をお待ちいたします。送付方法をお知らせいただけますでしょうか。
最後に、私は、このように管理人さんにお手数をおかけして、また管理人さんのご都合も無視してしまうようなご厚意に甘えて良いものか、何度も自問しております。都合の良い私の気持ちかもしれませんが、そのうえでお願いを申し上げることをお許しください。
西村さんへ
連絡方法を送りました。
御覧ください。
管理人様
スキャナーで取り込んだPDFファイルの処理をVBAでしようとしています。
スキャナーで取り込んだデータは名称未設定.PDFで表示されているのですが、そのデータを選ぶ方法がわかりません。
スキャナーで取り込んだデータだけにして
Set objAcroPDDoc = objAcroAVDoc.GetPDDoc
にしても 0が入るだけで
そのあと別名で保存しようとして
lRet = objAcroPDDoc.save(PDSaveFull, BkName)
としても0となりエラーとなります。
どのサンプルみても最初にファイルオープンしてファイルのオブジェクトを割り当ててから始まっています。
すでにオープンしているファイルにオブジェクトを割り当てる方法はどうすればよいのでしょうか?
OS WINDOWS10
エクセル2016
アクロバット プロ DC
瀬尾 さん はじめまして。
申し訳有りませんが、質問内容が理解できません。
なお、当サイトはVBA言語に関する質問は受けていません。VBAに関する解説もしていません。VBAに関しては他の立派な解説サイトへお願いします。
管理人さんへ
VB6で表示中の任意のフォームを指定したファイル名でPDFにしたいのですが、ご教授願えませんか。(ビットマップをPDFに変換するサンプルは見かけるのですが)
・Windows10
・Acrobat Pro DC
・VB6
ひーさん はじめまして。
指定した画面(VB6)のイメージをPDFファイルに直接変換する方法は当サイトには無い(はず?)です。
ただ、(記憶が間違いでなければ)VB6のフォームならばデスクトップ上の位置(Top , Left)と自身フォームのサイズ(Height , widht)が分かるので、その画面をキャプチャーできると思っています。VB6からのキャプチャーのサンプルはネット上にも多数見受けられます。それを使って
1)指定画面(=フォーム)をキャプチャーし、画像ファイルに保存。
2)その画像ファイルをPDFへ変換。
となると思っています。
ご検討下さい。
管理人さんへ
早速のご教授ありがとうございました。
管理人さん
このサイトのサンプルを参考に、vbaからPDFのしおりを作成し、JavaScriptの[this.getURL('http://~’);]でwebのリンクを自動設定しています。
作成されたPDFのしおりをクリックすると、AcrobatReaderからはurlが表示されるのですが、Acrobatからでは反応がありません。
手動で[しおりのプロパティ]ー[アクション]の[Webリンクを開く]でurlを設定するとAcrobatでも表示されます。
vbaで[Webリンクを開く]を設定する事は可能でしょうか?
サイトの内容を理解しきれず恐縮ですが、ご教示お願いします。
Windows10 64bit
Acrobat DC pro
M さん はじめまして。
>・・Acrobatからでは反応がありません。
>手動で[しおりのプロパティ]・・・Acrobatでも表示されます。
環境の問題と思われます。予想です。
1)Acrobatの「環境設定」で分類「JavaScript」の「Acrobat JavaScriptを使用」がオフ(=使用不可)になっている。オンにして下さい。
動作確認はしてませんが・・。ご確認ください。
▼2021/6/18 14:25 追加
どうやら予想は外れたみたい?です。
別の原因を考えます。
管理人さん
早々のご回答ありがとうございます。
気づかずお礼が遅れてしまい申し訳ございません。
おっしゃる通り予想とは違うようです。
しおりのアクションをvbaで設定するのは難しいでしょうか?
重ねての質問で申し訳ございませんが、ご指導よろしくお願いします。
M さんへ。
Readerでは開くのに、Acrobatでは駄目と言う事は、
Acrobat内の(Acrobat JavaScriptの)動作環境と考えられます、・・が。
>手動で[しおりのプロパティ]ー[アクション]の[Webリンクを開く]・・
開くと言うことはファイアウォールでAcrobatアプリがブロックされたない証拠です。またWebリンクが動作すると言うことは、その環境設定に関する部分は問題ない。Webリンクはブロック設定になってない。
つまり、現時点で考えられるのは「Acrobat JavaScriptの環境設定」です。
>しおりのアクションをvbaで設定するのは難しいでしょうか?
そんな事は無いです。
1)どこのサンプルを使ったのか教えていただけますか? ココですか?
2)Acrobat JavaScriptですが。「this.getURL('http://~’);」を「getURL('http://~’);」にして、ReaderとAcrobatで動作確認もお願いします。実行エラーになるかもしれませんが。
3)出来たら別のPCがあれば、そこでも上記修正前の状態で動作確認をお願いします。やはり、Acrobatの環境設定が気になります。4)
Acrobat上でしおりをクリックしたときに以下ののような画面は表示されますか?▼2021/06/19 16:46 追加
再現しました。原因と対策も分かりました。
かなり長文になるので来週の月曜までお待ち下さい。
Acrobatのバグっぽい部分も少し有るので整理に時間がかかります。
お急ぎならば、
[環境設定]->[信頼性管理マネージャー]->[設定の変更]->「Webサイト」に有るURLを全て削除 -> OKで戻る -> Acrobatの再起動
しおりのクリックで、上記の4画面が出ます。この時に常に「すべてのPDF文書に関してこのサイトに対する操作を記憶」をオフにして「許可」をクリックします。オンで許可すると、次回以降はなぜ?か動作しません。
詳細は後で。