質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

3回答

12883閲覧

Excel マクロでワークシートを連続印刷するとExcelがフリーズするのはなぜ?

kai_keitai

総合スコア344

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2018/03/18 23:32

ワークシートの複数のセルに値を代入して印刷を繰り返すと突然シート上にあるテキストボックスのサイズが画面一杯一杯のサイズに変更され、Excelがフリーズする問題

今、Windows7(32bit)→Windows10(64bit)へ移管する準備の一つ、Office2010(32bit)→Office2016(64bit)のテストをしているのですが、Excelの印刷でどうしても解決できない為、投稿させていただきます。
しばらく、32bitと64bitが混在する環境になるのですが、いずれ全て64bitへシフトします。

フリーズするタイミングに特徴があるので、テストした内容を説明します。

発生している問題・エラーメッセージ

1.印刷する件数が20件くらいで、画面にあるシェイプの大きさが画面一杯のサイズになってフリースする 2.5件くらいの件数を実行すると、1回目は成功しますが、2回目以降は、2件目くらいでフリーズする 3.再起動やプリンタードライバーを行いましたが、現象は変わらず 4.一回だけエラーメッセージが表示されましたが、内容は「メモリ不足です。64bit環境に切り替えて下さい。」のメッセージ。

動作環境

Windows 10 Pro 64bit
Excel 2016
Excel Version 16.0.4639.1000 64bit
cpu i5-6200U
memory 8GB
Printer RICHO MP C4503z
pc HP製 / ProBook 450 G3


該当のソースコード

VBA

1 2 3#If Win64 Then 4 Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongLong) 5#Else 6 Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 7#End If 8 9Public Sub cmdPrintOut() 10 DoEvents 11 Sleep (500) 12 ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False 13End Sub 14 15Public Sub main() 16 ~ 略 ~ 17 With Application.Workbooks("Book1.xlsm").Worksheets("シート") 18 .Select 19 For i = 1 To RecordCount 20 21 .Range("L9").Value = TEHAI(i).発行番号 22 ~ 略 ~ 23 .Range("K12").Value = TEHAI(i).管理番号 24 25 Call cmdPrintOut() 26 27 Next i 28 End With 29 ~ 略 ~ 30End Sub 31

試したこと

Office2010(32bit)の時は、API関数のSleep関数は不要で、何件でも処理ができていました。64bitにした時、一回動作がおかしくなり、苦肉の策でSleep関数を追加したら上手く実行出来ました。

コードのSleep関数の引数は 500 ですが、2000 に変更してもフリーズする件数は変わらない。

デバックでは、PrintOutメゾットでエラーになっていることがわかりました。

メモリの使用容量をみても300MBで、問題ありませんでした。

プリンタードライバーを最新にしても、印刷スピードが速くなったが、フリーズする件数は同じ。

家のパソコンで実行したら、問題なく動作した。
家のパソコン↓
TOSHIBA dynabook T95
Windows 10 HOME 64bit
Excel 2016 16.0.9029.2253 64bit
cpu i7-4720HQ
memory 8GB

その他

会社のExcelのバージョンが低いのは、勝手にソフトのアップデートができないようにセキュリティーがあるためです。また、ギリギリの期間まで、32bitと64bitの環境が混在するので、どちらでも動作できるように作り込みが必要です。
過去の経験から推測でパソコンのスペック不足かExcelの不具合と推測しています。

フリーズする原因が特定できれば十分です。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

そもそもですが、OfficeはMicorsoftが32bitを推奨しており、
それはつまり、64bitだと不明な不具合がある可能性を示唆していると考えられます。

自分の開発したシステムでも、WinAPI回りでOfficeが落ちる不具合があり、
64bit環境では一部の機能を断念せざるを得なかったケースがありました。

今からでも32bitOfficeに戻す選択肢を考えてみてもいいかもしれません。

投稿2018/03/19 03:26

ExcelVBAer

総合スコア1175

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kai_keitai

2018/03/19 03:56

回答ありがとうございます。 32bitを推奨していたのは初めて知りました。 確かに、64になって使えなくなったwinAPI関数ありますよね。 後々、Office365へ移行する事が、経営会議で決済されたので、それまでの我慢かなと思います。 会社のアプリなので、今更 32bitへ戻す選択肢はないので、 プログラムで制御するようにします。 何で、パソコンのスペック上がるのにとの自分の不満があります。が、仕方が無いですね。 有難うございました。
kai_keitai

2018/03/19 07:50

この後、Microsoftのホームページにて、32bitを推奨している理由がわかりました。 これからは、大量データをユーザー側で扱う事が多くなると思うので、64bitが正しい選択だと思います。 32bitと64bitで、処理を分ける様にプログラムを修正します。 ありがとうござました。
ExcelVBAer

2018/03/19 08:05

大量データの方が優先という事でしたら致し方ありませんね。 ただ、32bit+64bitの共存や、Officeバージョンの共存など、 複数バージョン対応は苦労の種でもあるので、 できる範囲でクロージングしておく方が無難ですし、 顧客とも、同じものではなく調整が必要な場合がある、 という認識を合わせておく方がよいと思います。 でないと、なんで先に言わなかったのか、 という点で後から責任を問われる可能性があるでしょう。 もちろん、はっきりとした原因が分からないので伝えにくいでしょうけども、 調査した結果が原因不明(64bit依存)なのであれば、伝えるべきかと。 非常に苦労された話を何度も聞かされたことがありますし、 そこまでではなくとも、自分も多少は経験があるので。。。 プロジェクトの成功をお祈り申し上げます。
kai_keitai

2018/03/26 12:18

ExcelVBAer様、今回、調べたことを伝えたら、特別に32bit版のOffice2016がインストールされたWindows10(64bit)のパソコンを設定してもらい、送って頂き、早速、動作検証をしました。 すると、何のストレスも無く動作しました。いや、32bitのExcelの方が動作速度が速かったです。 この事を情報システム部門で今後の方向性を再検討すると思われます。 実際には、Office365が導入される予定となっているので、もしかすると、先行でOffice365の検証が行われるかもしれません。 本当に、貴重なご意見、ありがとうございました!
guest

0

環境相違ということであれば、プリンター環境の相違も考えられそうです。
出力先をpdfに変更してエラーの状況を確認されてみてはどうでしょうか。

投稿2018/03/19 01:20

sazi

総合スコア25195

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kai_keitai

2018/03/19 02:59

ご回答ありがとうございます。 印刷するだけのモジュールを作っているのは、 本番環境では、紙で印刷するか、PDFで出力するかの 引数があるのです。 PDFにしても全く同じ現象が発生しているのを 確認済みなのです。 プリンターとかディスプレイアダプタとかの総合環境なのでしょうか? Microsoftのコミュニティで、ActiveXの不具合について報告がありました。 それとそっくりな現象なんですよね。 自分なりに調べ尽くして、ここに質問しました。 印刷に関する事は、情報が少なく、バグ報告も少ないので、最後の頼りです。 Microsoftにも不具合報告をするしか無いのかな?
sazi

2018/03/19 03:07

PrintOutが1回だけだとエラーにはならないのでしょうか? そうであれば、(根本の解決にはならず、選択はしたくないでしょうけど)最後の手段としては印刷を1回にすることですね。
sazi

2018/03/19 03:10

後は、windows updateやoffice updateを試してみるとか。
kai_keitai

2018/03/19 03:50

コメントありがとうございます。 やはり、そうですよね。 UIで、印刷の件数を制限したり、回数を制限する様にするしか無いようです。 最後の手段で、アップデートがありますので、 情報システム部へ依頼してみます。
guest

0

8GBもあれば物理的に足りないことは無いと思うので(他に何か動作していなければ)、
割り当てられているメモリが少ないのかもしれないですね。
以下方法でエクセルで使用可能になっているメモリを参照してみて
http://officetanaka.net/excel/vba/tips/tips71.htm
足りなさそうなら以下方法で増やしてみてください。
http://u-note.me/note/47496557

投稿2018/03/19 00:35

hasegawa_2

総合スコア18

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kai_keitai

2018/03/19 00:49

ご回答ありがとうございます。 Hasegawa_2様の提案された方法で確認済みです。 メモリの使用容量には問題がない事が分かっています。 Excelで印刷するだけ時の注意点とかあればいいのですが。 自分の推測では、グラフィックボードの問題かなと思うのですが、 証拠が取れなくて困っています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問