ワークシートの複数のセルに値を代入して印刷を繰り返すと突然シート上にあるテキストボックスのサイズが画面一杯一杯のサイズに変更され、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の不具合と推測しています。
フリーズする原因が特定できれば十分です。
よろしくお願いします。

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/19 03:56
2018/03/19 07:50
2018/03/19 08:05
2018/03/26 12:18