先に自分が作成したマクロを動かすにはどうすれば

解決


kuma  2006-09-27 22:42:15  No: 133433

VB6.0で開発中です。
例えば、Excelで保存コマンドを実行すると特定のセルに指定した文字を入力して保存するように作成しています。
これを、
アプリのメニューバーから『上書き保存』を実行する際にも反映させたいと思っています。
つまり、
保存する時は、必ず指定した文字を登録しておきたいということです。

タイミングとしては、
「メニュバーのアイコン(メニューからも)をクリックしたら、保存する前にマクロを実行して文字を登録する」
というように動かす方法があるそうなのですが、どうしても見つかりません。

ご存知の方がいらっしゃいましたら、ご教示下さい。
よろしくおねがいします。


ヤマ@文系  2006-09-27 23:11:39  No: 133434

VBAの質問なんでしょうか?
どっちがVBAでどっちがVBかわからないです。
VBAならworkbook自体のbeforesaveイベントで
上書きも処理できると思います。


kuma  2006-09-27 23:32:41  No: 133435

大変失礼いたしました。例えが間違ってました。

確かにExcelではこの方法で制限できましたので、処理が出来そうです。
有難う御座います。
バージョンが同じVB6.0だったので両方同じ処理かと思ってしまいました。ですが、
この方法ですと、そのマクロを記述したブックだけの動作になるような気がします。
そうではなく、常にどのファイルを開いても必ずをマクロを動かすようにしたいんです。

実際には、別のアプリでも作成しています。
こちらはVB6.0で作成しています。(VBEではありません)

メニューから「上書き保存」が選ばれると、マクロに連絡が行って先にそのマクロが実行される。というような動きらしいのです。
若しくは、
「上書き保存」が実行されるとマクロが感知して自分を先に動かす。かもしれません。

説明が足りず申し訳御座いません。


ヤマ@文系  2006-09-28 05:55:21  No: 133436

>そうではなく、常にどのファイルを開いても・・
多分やりたいこととしては、VBから全てやってしまった方が早いかと思います。
OLE(オートメーション)とかで調べてみてください。


ヤマ@文系  2006-09-28 05:55:22  No: 133437

>そうではなく、常にどのファイルを開いても・・
多分やりたいこととしては、VBから全てやってしまった方が早いかと思います。
OLE(オートメーション)とかで調べてみてください。


特攻隊長まるるう  2006-09-28 18:44:54  No: 133438

話の対象と、したい事が整理できて無いように思えます。
それを掲示板の文字だけしか読めない、他人が理解する
のは難しいです。

> 常にどのファイルを開いても必ずをマクロを動かすようにしたいんです。
これが、Excel のマクロが書かれていないファイル(Excel ブックであれば
全てが対象)になるなら、質問タイトルの
> 先に自分が作成したマクロを動かすにはどうすれば
とは内容が違いますよね?Excel のマクロが無いファイルまで
同じ操作をするのですから。

> 多分やりたいこととしては、VBから全てやってしまった方が早いかと思います。
> OLE(オートメーション)とかで調べてみてください。
OLEオートメーションから調べると面倒にならないかなぁ…。
Excel アドインとかでもできることはあるだろうし。。。

> 実際には、別のアプリでも作成しています。
> こちらはVB6.0で作成しています。(VBEではありません)
実現できてるなら、そっちをきちんと解析した方が良いと思います。

> メニューから「上書き保存」が選ばれると、マクロに連絡が行って先にそのマクロが実行される。
・どっちのメニュー?Excel?VB6.0?
・マクロはどこにある?

これだけだとVB6.0のメニューがクリックされた時点で対象のブックのマクロを
呼べば良いだけにも思えます。(過去ログ検索『マクロ』でどうぞ。)


kuma  2006-09-28 23:26:32  No: 133439

>ヤマ@文系 様

ありがとうございます。
> 多分やりたいこととしては、VBから全てやってしまった方が早いかと思います。
> OLE(オートメーション)とかで調べてみてください。
とアドバイスを頂きまして調べてみましたが、どうすればいいのかがよく解りません。申し訳ありません。もう少し調べてみます。

>特攻隊長まるるう様

細かいアドバイスをありがとうございます。
Excelでも似ているものを作成しているので、知識がない私は同じと勘違いしてしまっていました。そうなんです。Excelを例えにしたのが間違いでした。

>> 常にどのファイルを開いても必ずをマクロを動かすようにしたいんです。
>これが、Excel のマクロが書かれていないファイル(Excel ブックであれば
>全てが対象)になるなら、質問タイトルの
>> 先に自分が作成したマクロを動かすにはどうすれば
>とは内容が違いますよね?Excel のマクロが無いファイルまで
>同じ操作をするのですから。

そうですね。違いました。正確には、
アプリケーションに対しての設定で、「ファイルを開いたら必ずAというマクロを実行する」や「上書き保存をクリックしたら必ずBというマクロを実行する」と指示するマクロを作成して、判断させたいのです。
Excelでは、そのブックに対してという形でヤマ@文系さんのアドバイスで出来ました。

今作成に困っているのは、まったく別のアプリでマクロは使用時に実行させる形式なんです。(アイコン等に登録してます)
アプリの起動時にマクロを実行することは出来るので、常に動作の状態にしておいて、上記の様な行動をした際に反応するように出来ないかと考えました。
そもそもここが違っているのかもしれません。が、
方法が浮かばなかったので、色々と試行錯誤しています。

>> メニューから「上書き保存」が選ばれると、マクロに連絡が行って先にそのマクロが実行される。
>・どっちのメニュー?Excel?VB6.0?
>・マクロはどこにある?

Excelではありません。別のアプリでVB6.0で作成するマクロです。
その動作用のマクロはアプリが読める場所に置こうと思っています。
現段階では、
常に動いているようにしようかと、起動実行ディレクトリに入れてみてます。

>これだけだとVB6.0のメニューがクリックされた時点で対象のブックのマクロを
>呼べば良いだけにも思えます。(過去ログ検索『マクロ』でどうぞ。)

その、クリックされた時点を判断する方法が知りたいんです。
正確にはアプリのメニューですが。
過去ログ(マクロ)でも見つかりませんでした。
どうすれば、メニューの○○が選択されたと解らせることができるのでしょうか。

何度も申し訳ございません。


kuma  2006-09-29 20:13:28  No: 133440

色々と調べていて見つけたのですが、
VBではClickイベントというのがあるようで、これを利用できそうな気がしています。
指定の仕方がまだよく分からないのですが、このイベントの利用法をご存知でしたら、オブジェクト等をどう設定すれば良いのかアドバイス頂けないでしょうか。
よろしくお願い致します。


特攻隊長まるるう  2006-09-30 05:32:40  No: 133441

>指定の仕方がまだよく分からないのですが、このイベントの利用法をご存知でしたら、
Excel VBAでも操作法は同じだと思いますが。。。?…今まではどうやってたんですか?
…もしかしてまだイベントを一切使った事が無いとか???

『コード ウィンドウ』上部の『オブジェクト ボックス』と『プロシージャ ボックス』
を利用して自動で記述させてください。
VBA の画面で申し訳ないですが↓
http://t_shun.at.infoseek.co.jp/My_Page/Excel-VBA/vba_page03.htm


kuma  2006-10-03 00:32:29  No: 133442

>特攻隊長まるるう様

何度も有難う御座います。

>Excel VBAでも操作法は同じだと思いますが。。。?…今まではどうやってたんですか?
>…もしかしてまだイベントを一切使った事が無いとか???

そうなんです。たくさんツールを開発してきているのですが、
このEventというのは使ったことが無かったんです。

Dim WithEvents swSession As Object  というのを利用して
色々なサンプルを見て、なんとか動き始めました。

>『コード ウィンドウ』上部の『オブジェクト ボックス』と『プロシージャ ボックス』
>を利用して自動で記述させてください。

と頂きましたが、その中は空で上手くできなかったのですが
別途無理やり  Private Sub ActivaCheck_Click()  としたら出来ました。

今は、他のマクロが呼べなくて困っています。あと一息な感じです。
同じファイル内なら、Callで呼べるのですが。。。
サイトを調べても、他のアプリやEXEの呼び出しかたしか見つかりません。
今懸命に検索してます。


kuma  2006-10-04 20:45:13  No: 133443

みなさん有難う御座いました。

何とか動作できるものが出来ましたので、解決とさせて頂きます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加