• ベストアンサー

VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。

マクロを含むエクセル(EXCEL2000)をHTMLのページからハイパーリンクで呼び出しています。そのエクセルでボタン操作に従い罫線やセルの着色を行っています。しかし、着色結果が更新されません。スクロールバー等で画面を移動すると正しく着色されています。このエクセルを通常に起動した場合は、問題なく動作するのですが、シート全体を更新する方法を教えて下さい。 各関数では、以下のスクリーンアップデータの処理を入れています。 Application.ScreenUpdating = False     (処理) Application.ScreenUpdating = False

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

たぶん、EXCEL独特の問題だと思うのですが、HTML の場合、すでに色の部分を表面上で使用しているので、それでメモリが占有させているのではないかと私は思っています。 他にも、  ActiveWorkbook.HTMLProject.RefreshDocument True というのがありますね。 ホスト アプリケーション内のブックに含まれる HTML プロジェクトを更新する、というのがありますね。

yarazu
質問者

お礼

アドバイス頂いた方法では、うまくいきませんでしたが、VBAの手順としては、問題なさそうなので安心しました。 アプリケーションの問題かブラウザとの相性の問題のようですね。ありがとうございました。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

Application.ScreenUpdating では、ダメだったということでしょうか? もし、そうなら、いろいろ実験してみないとなんともいえませんね。 例えば、全体をActivate しなおす方法。 AppActivate (Application.Caption) シートをActivate する。 Worksheets("Sheet1").Activate また、シートを活性化する。 Application.Calculate まだ、他にもあるかもしれません。

yarazu
質問者

補足

回答ありがとうございます。 >Application.ScreenUpdating >では、ダメだったということでしょうか? はい、ダメだめでした。 逆に、この処理を止めると画面が、ばたつきますが、着色等は正しく完了します。しかし、ショートカットでも同じエクセルを使用したいのでApplication.ScreenUpdatingの処理は、残しておきたいです。 >AppActivate (Application.Caption) この処理は、エクセルを起動するという意味でしょうか? 動作確認できませんでした。 >Worksheets("Sheet1").Activate 一旦、別シートへアクティブを切り替えると正しく表示されます。しかし、自シートに対しては、正しく表示されませんでした。 >Application.Calculate 正しく表示されませんでした。 今暫定的に、Application.ScreenUpdating=Trueの後、一度、全セルを選択して、その選択を解除する処理を入れています。少し、見苦しいですが、正しい表示を行うことができます。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

処理を挟んで、両方とも False ですけど、記入ミスですか?

yarazu
質問者

お礼

まず、回答ありがとうございます。 で、補足の補足で申し訳ありません。「記入ミス」は、質問時の記入ミスです。

yarazu
質問者

補足

記入ミスです。 Application.ScreenUpdating = False    (処理) Application.ScreenUpdating = True と訂正します。

関連するQ&A