VB6.0でデータベースから取得したデータをExcelに
出力するプログラムを作っています。
ExcelのVisibleをFalseに設定して出力処理を行って
いるのですが、処理中に他のExcelを起動させると
Visible=Falseの設定が解除されて処理中の動作が
見えてしまいます。
Excelのアプリケーションに対してVisible=Falseに
設定しているのが原因ではと思って、ブックに対して
下記のように設定しても駄目でした。
WorkBooks("XXX.xls").Windows(1).Visible = False
出力するテーブルのフィールドが多いため、10分近く処理に時間がかかります。
その間に他のExcelを立ち上げても、処理中のExcelのVisible=Falseの設定が解除されないようにする方法はないでしょうか?
No.4ベストアンサー
- 回答日時:
VB6ですから、Excelを参照設定したうえで
WithEventつきオブジェクトとして、Excelのイベントを拾ったらどうでしょうか。
例えば、このケースなら「WorkSheetOpen」イベントで
WorkBooks("XXX.xls").Windows(1).Visible = False
# 本当はブックもオブジェクト変数に格納しておき
# .Windows(oBook.Name)のようにすべきですが
としてみましょう。
一瞬表示されてしまいますが、すぐ隠れると思います。
私が実際やったのは、確かWorkSheetOpenイベントで開かれたら(開いたほうのファイルを)すぐ消してしまう方法でした。
Excelを開かれると何をされるか分からないので(笑)、起動時および起動後もExcel(およびブック)のインスタンスを監視して処理中はExcelで別の操作を出来ないようにした記憶があります(完全ではありませんでしたけど)。
No.3
- 回答日時:
>その間に他のExcelを立ち上げても、
>処理中のExcelのVisible=Falseの設定が
>解除されないようにする方法はないでしょうか?
開く側が「意識」して別インスタンスになるように
しない限り無理です。
ただブックをダブルクリックして開くなら、
既にあるExcelのインスタンスで開いてしまいます。
たとえば、開きたいブックのショートカットを作って
そのリンク先に
"C:\Program Files\Microsoft Office\Office\EXCEL.EXE"
を書き加えて空白1文字の後に元々のブックのパスを
入れて、これで開いてみるとどうでしょうか。
他のブックが開いている時にこれをやると、
別のExcelウィンドウで開きますから。
No.2
- 回答日時:
> 出力するテーブルのフィールドが多いため、10分近く処理に時間がかかります。
セルに一個ずつ代入しています?
2次元配列から一気に代入する方法があります。(過去ログ)
>その間に他のExcelを立ち上げても、処理中のExcelのVisible=Falseの設定が解除されないようにする方法はないでしょうか?
分かりません。
Excelオートメーションを使わずに、ADOまたはExcelクリエータ(市販ライブラリ)を使うとか。
No.1
- 回答日時:
>処理中のExcelのVisible=Falseの設定が解除されないようにする方法
これはないわけでもないかもしれないけど、フと思ったので、参考がてらに発言です。
>出力するテーブルのフィールドが多いため、10分近く処理
おそらく
-------------------
for i = 1 to レコード数
・処理1.読み
・処理2.書き
Doevent
next i
-------------------
としているからでは?
可能であれば、
-------------------
for i = 1 to レコード数
・処理1.読み
next i
・処理2.書き
-------------------
というように処理を変えたら早くなると思います。
値を一個づつ設定するより、配列をそのまま出力してあげたら、より高速です。
(配列をそのままセットする[Todo36]氏の履歴があるはずなのですが、見つかりませんでした。)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/11 12:55
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/06/01 14:45
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/03/25 08:33
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/08 09:08
- Visual Basic(VBA) エクセルのマクロについて教えてください。 5 2023/06/02 08:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Excel(エクセル) ワードのマクロについて教えてください。 1 2023/03/11 13:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
VBA SaveChanges 上書きされない
-
VBAでループ内で使う変数名を可...
-
switch の範囲指定
-
メルカリのメルカードで買い物...
-
エクセルで、日付を入力すると...
-
VBの質問#if 0 then ってどう...
-
DoEventsがやはり分からない
-
findは動くがfindnextがマクロ...
-
EXCEL VBA マクロ 実行する度に...
-
リョウ・・・量?料?
-
【Excel】特定の文字を含むセル...
-
Excel VBAにて2つの処理を同時...
-
Select Case文でこのようなこと...
-
VBAでセルに値が入力されるまで...
-
月度は何て読みますか?
-
Do~Loopした回数をカウントしたい
-
iD
-
FFTの結果ついて
-
Loadイベント中にほかのイベン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
メルカリのメルカードで買い物...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
【Excel】特定の文字を含むセル...
-
EXCEL VBA マクロ 実行する度に...
-
DoEventsがやはり分からない
-
UMLでの例外処理
-
月度は何て読みますか?
-
switch の範囲指定
-
VBの質問#if 0 then ってどう...
-
セルの値が0はクリアするマクロ
-
VB.NET Excelを読み込んでDataT...
-
Do~Loopした回数をカウントしたい
-
Loadイベント中にほかのイベン...
-
Select Case文でこのようなこと...
-
findは動くがfindnextがマクロ...
-
緊急です。 知り合いから50kgの...
-
リョウ・・・量?料?
-
理不尽、行き場のないイライラ...
おすすめ情報