Excelにて図のリンク貼り付けされているブックが開かれているとマクロが遅くなる

質問

2015年1月17日土曜日 11:26

Windows7(64bit)、Office2010の環境にてExcelを使用しております。
下記に示す性能劣化が発生しており、原因と対応策を検討しております。
ご存じの方いらっしゃいましたらご教示いただきたく、よろしくお願いします。
#なお後述のとおり回避策は発見しているものの、既存ブックへの横展開負荷を考えますと
 これは最終的な手段としたいです。

【事象】
 同一Excel内に「図のリンク貼り付け」機能を使用した別ブックが開かれていると、
 ActiveXコントロールボタンのVBA処理性能が著しく劣化する。
 なおボタンの種類がフォームコントロールボタンの場合、本事象は発生しない。

【再現手順】
  <準備>
  1.Excelにて新規ブックを作成(以降、ブックAと記述)
  2.ブックAに「ActiveX」のボタンを配置
  3.2のボタンのクリックイベントにて、最下部に示すVBAコードを記述
   4.別のブックを新規作成(以降、ブックBと記述)
  5.ブックBに「図のリンク貼り付け」による図を設置(リンク先はブックB内の任意の20セル程度)し、保存

  <再現>
  6.ブックAを単独で開く
  7.ブックAのボタン押下にて処理が1秒程度で完了することを確認
  8.ブックAと同じExcel内にてブックBを開く
  9.ブックAのボタン押下にて処理が数十秒かかることを確認(7に比べ著しく性能劣化)

  <回避策>
  10.ブックAに「フォームコントロール」のボタンを配置
  11.10のボタンに対する処理として最下部記載マクロと同一主旨の処理を記述
    12.上記<再現>手順にて性能劣化が発生しないことを確認

【検;済み内容】
https://support.microsoft.com/kb/980528/ja?wa=wsignin1.0
⇒FixIT実行したものの、「・・・適用されませんでした」と表示されました。
  また記載されているレジストリ「GDIProcessHandleQuota」の値を手動で10000から16384に変更のうえ再起動しましたが改善しませんでした。

prettyprint
Private Sub cmdActiveXボタン_Click()
    
    ' 描画および自動計算停止
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    
    ' 10000回、セルに値を書き込み
    Dim i As Long
    For i = 1 To 10000
        Cells(i, 1).Value = i
    Next i
    
    ' 描画停止および自動計算停止の解除
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
End Sub

【検索キーワード】
 VBA ActiveX フォーム 図のリンク貼り付け 遅い 性能劣化

 

すべての返信 (1)

2015年2月12日木曜日 14:28

こんにちは。

レスがつきませんね。
Windows7(32bit)、Excep2010で確認しました。

別ブックかどうかは関係なさそうな気がしますが、
たしかにActiveXボタンで繰り返し処理を行う、かつ図のリンク貼り付けが存在するときに、
レスポンスが悪くなりますね。

そしてフォームボタンだと発生しませんね。

想像ですが、1回の処理を行う毎にリンクの更新を行っているような、
そんな印象を受けました。

不具合としてフィードバックするのが良いと思いますが、
当面の回避策としてはフォームボタンしか無いかもしれません。