[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『片方の実行マクロをバックグラウンドで実行するには』(はな)
呼び出し元も呼び出し先もThisWorkbook.Activateを残したままにしたいというが大前提としてあるのですが、
呼び出し先だけを裏で動いているような(非表示)ことにすることは可能でしょうか?
ScreenUpdatingを使用してもあまり効果がないようです。
御教授お願い致します。
エクセル2003、OSはXPです。
【呼び出し側ブック】
Sub 他ブックのプロシージャ実行()
With SoftMake
Application.Run "'XXX.xls'!他のブックからプロシージャ実行", "シート1"
ThisWorkbook.Activate
.Cells(65, 5).Interior.Color = RGB(153, 153, 255) '紫
Application.Run "'XXX.xls'!他のブックからプロシージャ実行", "シート2"
ThisWorkbook.Activate
.Cells(71, 5).Interior.Color = RGB(153, 153, 255) '紫
Application.Run "'XXX.xls'!他のブックからプロシージャ実行", "シート3"
ThisWorkbook.Activate
.Cells(89, 5).Interior.Color = RGB(153, 153, 255) '紫
End With
End Sub
【呼び出し先ブック】
Sub 他のブックからプロシージャ実行(FileName As String)
Dim WBk As Object
Dim wkFlg As Boolean
ThisWorkbook.Activate
wkFlg = False 'シート存在しない
For Each WBk In Sheets '全てのシートを対象
If WBk.Name = FileName Then '同じ名前のシートある?...YES
wkFlg = True '存在した
Exit For '終了
End If
Next WBk
If (wkFlg = False) Then
MsgBox "シート[" & FileName & "] は存在しません"
End If
End Sub
前回の質問 [[20091217153933]]『他ブックのプロシージャ呼び出を行い戻り値を取得するには?』(はな) でも書きましたが、なぜ他のブックのプロシージャを実行する必要があるのか? という事が疑問なのですが、シートが存在するかどうかでしたら自ブックから出来ますし。 Select同様にActivateも必要ないと思います。 どうしても・・・というのでしたらApplication.ScreenUpdate=Falseにしてから処理して 終わりにTrueに戻せばよいですが、後々色々問題が出そうなロジックですね。 (momo)
(momo)さん、ご回答ありがとうございます。
なぜ他のブックのプロシージャを実行する必要があるのか?
説明不足で大変申し訳ありませんでした。
会社で使用しているツールの改造をしているのですが、
作成している途中で作成困難になった処理だけを抜き出して簡易的にお聞きしていました。
そこで、そのツール自体の機能を間単に説明いたしますと、
・あるデータを吐き出すツールです。
・データ自体は呼び出し先(子)でシート単位持っています
・呼び出し元(親)で、呼び出し先(子)のブック、シートを管理しますが、
データの吐き出しは(子)のマクロで実行します。
・基本、親は子のブック、シートを指定し、子のマクロを呼び出すだけです。
もともとは親のほうでデータシートも持っていたのですが、
データ作成者が多数いるのと、データ自体のボリュームが膨大になってきたので、
データを一元管理するのに限界が生じてきたのが改造の理由です。
また、子のほうのデータ吐き出しマクロに
Application.ScreenUpdating = False
ThisWorkbook.Activate
〜省略〜
Application.ScreenUpdating = True
としても子のほうで吐き出し中は何故か子のブックが表示されてしまいます。
今のご説明ですと 他のブックのプロシージャを呼び出す理由は無さそうですね。
>・基本、親は子のブック、シートを指定し、子のマクロを呼び出すだけです。
そのような場合、普通は マクロブック と データブック に分けます。 マクロブックは入出力も含めて処理のみ データブックはデータのみ これを基本として組み立てておかないとさらに大変な作業を強いられる事になりますよ
ちなみに、今はなさんがやろうとしている事は全部親ブックから出来る作業だと思います。 (momo)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.