- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBAのPageSetupについて!)
エクセルVBAのPageSetupについて!
このQ&Aのポイント
- 現在のシートの印刷設定を行うときに、PageSetupを使いますが、値を取得する時は瞬時に処理が終わるのに、設定は時間がかかります。(大体、0.2秒程度)
- PageSetupには、メンバーが27ぐらいあるので、全部で3~4秒程度かかります。シートの表示の更新を停止させても速度は変わりません。
- 印刷設定の更新を一時的に止める方法、もしくは、瞬時に設定する方法が在りましたらご指導願えませんでしょうか?素人的には、カンマで区切った文字列で一気に配列を更新し、表示の更新を一気にできれば?ってなことを空想してしまいます。(多分、的外れの考えだと思いますが・・・?)
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。Wendy02です。 PageSetup は、どうにもならないですね。値取得は瞬時とお書きになっていますが、そちらも、ままなりません。 >PageSetupには、メンバーが27ぐらいあるので プロパティの設定をしようとする意味でしょうか? コード上の変更ない部分は、何も書かないほうがよいですね。スクリプトですから。変更する部分のみのプロパティにしてください。 それで速度は大幅に変るかというと、それは約束できません。印刷は、別のプリンタ・ドライバとの間で、直接、Excel内の問題ではありませんから、VBA自体が厳しいと言えます。 ただし、私は値の取得のみで、設定は試したことはありませんが、印刷マクロの高速化に、Excel4マクロ関数を使う、という裏技があります。(関数名 PAGE.SETUP)たぶん、その速度の差は、C言語とVBの違いなのだと思います。 もしかしたら、Microsoft サポートに残されているかもしれません。私は、VBAのキャリアが浅いので、マクロ関数の機能辞典(マニュアル)は持っているのですが、あまり、こういうものを良く使いこなせません。
補足
いつも、いつも有難うございます。 ご指摘のとおり、単純に全てをゲット、プットしていました。ゲットが瞬時(私の感覚ですが!)ならば、比較して、プットすべきでした。PaseSetupを扱う以上どうにもならいならば、デバイスドライバーに直接書き込む方法?(正しい表現か?どうかは不明ですが?)を考えて見ます。(あくまでも、PageSetupがデバイスドライバーにパラメータを渡すだけとの機能しかないとすれば、ならば、設定の更新を必ずするPageSetupを介する必要はないとの単純な発想ですが?実現の可能性は不明です) それと、エクセルが旧バージョンの上位互換性を維持しているという点を逆に突く!なるほど!旧バージョンほど、ウィンドウのシステムに近い存在(アルゴリズム的に??)であることを考えれば、隠し技と言えるものと思いました。(もしかして、常識?)本当にいつも、いつも有難うございます。単純に独学で進めるよりも、何十倍も効率的に習得させて頂いています。本当に有難うございます。今後ともよろしくお願いいたします。