問題
まったく同じコードでも、Excel2010だとちゃんと表示されるんだけどなぁ。
Application.StatusBar以外は問題ないからとりあえずそのまま使ってるけど・・・。
へなちょこはめんどくさがりやだから、進捗状況用のフォームとか作るのめんどくさいもん。
今処理してるファイルのファイル名さえわかればいいの。
よし!!
久しぶりにコードとご対面してみようかな。
やってみた1
ググってみたら、Application.StatusBarの前にDoEventsを入れてみては?ってゆー意見が多々。
とりあえず入れてみる。
With Application
.ScreenUpdating = False
.DisplayAlerts = False
.StatusBar = "処理中・・・"
End With
・
・
・
targetFile = Dir(targetPath & "\*.xls*")
・
・
・
Do While targetFile <> "" And InStr(targetFile, "~$") = 0
DoEvents
Application.StatusBar = targetFile & " 処理中・・・"
状況は変わらず。
Application.StatusBarの後にもDoEvents入れたけど、やっぱり表示されない。
やってみた2
ループ2回目で中断して、眺めてみる。
うーーん。
targetFileは問題なく開いてて、StatusBarはちゃんと表示されてるんだけどなぁ・・・。
・・・。
・・・・・・。
・・・・・・っっ!!!
ちょっと関係ない話思い出した!!
Excel2016で[上下に並べて表示]をしたときに、上のウインドウにも下のウインドウにもリボンが表示されるので
「何これ。超うざい」
って思って仕様を確認したら、Excel2013から、ファイルを開いたり新規ブックを作成すると、新しいインスタンスが作られるそうな。
「同じウインドウで開く」とゆー概念がなくなったようです。
どーしてそーなった?Microsoftよ・・・。
シングルで不満はなかったのに。
いや、むしろシングルのほうがいいんだけど。
はい。話戻ります。
つまり、Excel2010は
1つのExcelウインドウで複数のファイルが開いている
ウインドウが1つだから、どちらのファイルがアクティブであってもStatusBarは表示される。
一方Excel2016は
targetFileとマクロ実行ファイルはウインドウが別。
マクロ実行中は、targetFileはバックグラウンドで見えないけど、ActiveなのはtargetFileなのよね。
StatusBarはApplicationクラスだから、ブックの指定はできず、今Activeなブックのウインドウに表示される。
ってことは、StatusBar表示直前に、マクロ実行ファイルをActiveにすればいいんじゃん!?
With Application
.ScreenUpdating = False
.DisplayAlerts = False
.StatusBar = "処理中・・・"
End With
・
・
・
targetFile = Dir(targetPath & "\*.xls*")
・
・
・
Do While targetFile <> "" And InStr(targetFile, "~$") = 0
DoEvents
ThisWorkbook.Activate
Application.StatusBar = targetFile & " 処理中・・・"
マクロを実行してるファイルのStatusBarにファイル名が表示されました♪
ご満悦♪♪
DoEventsはなくてもたぶん大丈夫だけど、
それにしても、こーゆー仕様変更やめてほしいなぁ。
一見関係なさそうなとこで、いろいろ問題が起こるんだもんなぁ。
注意
?@図まで作って解説風なことを言ってますが、あくまでへなちょこの見解です。
Microsoftの公言ではありません。
?Aへなちょこは、オブジェクトは必ずオブジェクト変数に格納して、オブジェクト変数をあれこれします。
ThisWorkBookをActiveにしているので、その後オブジェクトの指定は必須ですよ。
指定してないと悲劇が起こるかも・・・。
しかも大々的には公表してくれない・・・。
へなちょこは最近この手の処理を書いてないので現在のバージョンではどうなのかは不明ですが、ActivateとDoEventsで解決できて良かったです♪
DoEventsがないとダメな件は、へなちょこも参考にさせていただきます。
ただ、またEXCELの仕様が変わったのかもしれませんが、DoEventsがないとダメでした。
とても分かりやすい解説で感動ものです。ありがとうございます。
閲覧ありがとうございます。
解決できて良かったです♪
doeventsではどうにもならず、途方に暮れておりましたが、こちらのページに辿り着いて解決しました〜〜〜!!!
感謝感激です。
へなちょこもなかなか答えにたどり着けず、半年近く放置してました笑
同じことで悩んでる方がいらっしゃると思って、記事にしてみました。
あまり説明がうまくないですが、お役に立てて何よりです(^^♪
さんざん調べて全然わからなかったのに、あなたの解説で一気に解決できました!
ほんとうにありがとう!!!