非表示でExcelを開きそのExcel内をfindで検索させようとするとfindの戻り値をとるところでExcelが開きチカチカします。
戻り値をとらないように=をとるとチカチカがなくなります。
戻り値を取らないと結果が取れないので意味がないですが、find関数を開いたExcelを非表示のまま検索することは可能なのでしょうか?
せっかく非表示にして画面で他操作できるように高速化しても高速ではありますが、画面がチカチカするのをどうにか避けたいです
findの関数の使い方何かあるのでしょうか?
No.3ベストアンサー
- 回答日時:
こんにちは。
■回答
Find メソッドの問題ではないでしょう。
仮に Active や Select で画面遷移があったとしても、それは
Application.ScreenUpdating = False
でチラつきは抑えられる範囲です。他に原因がありそうです。
■考えられる原因
恐らく Workbooks.Open の問題です。
Workbooks.Open を実行すると
Application.ScreenUpdating = False
Application.Visible = False
に関係なく、画面再描写の割込が入ります。
ループで連続した場合、チラつくまたは画面が白くフリーズした様な状態になります。CPU 稼働率が高まると、再描写が間に合わなくなるためでしょう。
■回避策の提案
バックグラウンドプロセスで Excel.Application を作成し、そちらで処理します。
注意点は、オブジェクト変数でブックやシートを参照した場合、丁寧に全て破棄しないとプロセスが残ります。
'↓ループ前にバックグラウンドプロセスでEXCELを起動
Dim xlApp As Excel.Application
Set xlApp = New Excel.Application
For ~
Dim xlWbook As Workbook
Dim xlSheet As Worksheet
Set xlWbook = xlApp.Workbooks.Open(ファイルパス)
Set xlSheet = xlWbook.Worksheets(シート名など)
'Findを使った処理を挟む
Set xlSheet = Nothing
xlWbook.Close SaveChanges:= False
Set xlWbook = Nothing
Next
’ループを抜けた後
xlApp.Quit
Set xlApp = Nothing
No.2
- 回答日時:
こんにちは
>find関数を開いたExcelを非表示のまま検索することは可能なのでしょうか?
ちょっと意味が、 が の使い方で上手く分からないのですが、
使えると思います
>戻り値をとらないように=をとるとチカチカがなくなります。
findの取得に問題があるのではなく、取得したモノでの処理に問題があると思います
>やり方どうこういいあっても仕方ないので
議論するつもりなどありません
>Find関数の指定方法でなんとか出来ないのかのみ回答できる方お願いします。
Find関数の為と決めつけられているようですが、間違えありませんか?
ステップインなどで画面を見ながら検証しては、いかがでしょう?
実際のプロシージャを見ないと何とも言えませんが・・・
そもそもチカチカは画面制御系の問題と思います
>非表示
と言うと Application.Visible だと思いますが、、
Application.ScreenUpdatingを指していたりしますか?
また、取得した値などで他のブックやApplicationを呼び出すなどは行っていますか?
.ScreenUpdatingはさほど強い命令ではないので解除される可能性があるので工夫が必要になる場合があります
find関数の検証用サンプルを示しておきます
’デモデータ作成用
Sub test1()
Dim sh As Worksheet
For Each sh In Worksheets
sh.Range("B2:E100") = "A"
Next
End Sub
’find関数の検証’
Sub test()
Dim sh As Worksheet, i As Long
Dim rng As Range, tmpR As Range, srcR As Range
Application.Visible = False
For Each sh In Worksheets
Set srcR = sh.Range("B2:E100")
Set rng = srcR.Find(What:="A", LookIn:=xlValues, LookAt:=xlPart, _
SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
MatchCase:=False, MatchByte:=False)
Set tmpR = rng
Do While Not rng Is Nothing
sh.Cells(1, 1) = i
i = i + 1
Set rng = srcR.FindNext(rng)
If rng.Address = tmpR.Address Then
Exit Do
End If
Loop
i = 0
Next
Application.Visible = True
End Sub
コード内でA1セルに書き出すコードをあえて入れてあります。
チカチカしますか?
No.1
- 回答日時:
こんばんは
>やり方どうこういいあっても仕方ないので~
やり方の問題のような気もしますが、それは考慮の対象外ということなので・・
>フォルダ内のExcelを非表示で開く
>Findで検索
>検索結果を見えてるExcelに書き込む
>開いたExcelを閉じる
>これをループするとチカチカになります。
同じことを試してみましたが、私の環境ではチラつきはまったく起きませんね。
Find に関しては Range.Find メソッドで、ごく普通の方法で行っています。
ただし、検索対象のブックは、別スレッドのエクセルで操作しています。
うーん。同じですね
まあ、オープンとfindが原因なのですが
これを手でやったら文字コピーして一個一個開いて
ctrl+で検索開いてって大変です。
しかも一覧にするのも大変。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ExcelのFIND関数について 4 2023/06/06 18:10
- Visual Basic(VBA) エクセルの数式で教えてください。 1 2023/07/31 15:49
- Excel(エクセル) iphonからone driveに保存してあるExcelを閲覧すると表示の仕方がちがうデータ 2 2022/12/21 13:51
- Excel(エクセル) ExcelのVLOOKUP関数 7 2022/08/23 06:46
- その他(パソコン・スマホ・電化製品) CMD等でPC操作(excel開く等)を自動化させたい 1 2023/03/15 09:53
- Visual Basic(VBA) Excle VBA Findメソッドについて 3 2022/07/15 13:56
- Excel(エクセル) マクロでボタンにつける名前がどこに設定されているかわからないケースがありました。 1 2023/06/19 19:37
- Excel(エクセル) Excel(エクセル)でフィルター抽出後、非表示の行を計算しないで、合計を算出する方法 【内容】 添 4 2023/01/30 17:17
- Visual Basic(VBA) Excel VBAのリストボックスの値を他のフォームに反映させる方法を教えてください。 2 2023/07/14 14:06
- その他(Microsoft Office) Windows Update 後、Office2019(Word、Excelなど)が消えた 4 2023/01/14 10:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Windows Media Player10でフル...
-
今日リゼロ打ってたら、チャン...
-
スワイプの左右の定義
-
discord内での動画共有について
-
excelでVBA実行後に画面に残る...
-
iPhoneは戻るボタンがないのに...
-
テレビで YouTube を見ています...
-
これは故障でしょうか? PCを使...
-
PC版LINEをダウンロードしたら...
-
現在が、セーフモードかどうか...
-
OCNメール画面が暗くて見えない
-
iPhone6(だけ)で動画を見ると...
-
vt(仮想化)有効方法
-
セックスしたいよー どうしたら...
-
こんばんは
-
Google検索中に… インハイTVを...
-
Netflixを開くと、どなたが見ま...
-
cubaseの打ち込みが出来ません...
-
北斗の拳「画像準備中?」
-
【Android】画面上部の天気予報...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows Media Player10でフル...
-
スワイプの左右の定義
-
discord内での動画共有について
-
テレビで YouTube を見ています...
-
セックスしたいよー どうしたら...
-
大和証券のサイトってめっちゃ...
-
iPhone6(だけ)で動画を見ると...
-
excelでVBA実行後に画面に残る...
-
OCNメール画面が暗くて見えない
-
自分のiPadからアマプラ契約を...
-
xの画面
-
現在が、セーフモードかどうか...
-
PC版LINEをダウンロードしたら...
-
AQUOS SENSE8を使ってる方に質...
-
こういった2画面になるスマホっ...
-
vt(仮想化)有効方法
-
画面ではきれいな画像がプリン...
-
パソコンの画面が黒に白い文字...
-
gmailのURLについて
-
インターネットの画面を左右に...
おすすめ情報
フォルダ内のExcelを非表示で開く
Findで検索
検索結果を見えてるExcelに書き込む
開いたExcelを閉じる
これをループするとチカチカになります。
対象が一個だと見えないレベルになります。
やり方どうこういいあっても仕方ないので
Find関数の指定方法でなんとか出来ないのかのみ回答できる方お願いします。