Excel VBA 質問スレ Part16 at TECH
[2ch|▼Menu]
972:デフォルトの名無しさん
10/11/05 22:39:07
俺はVBA内だけ(APIやVBSなどを使わず)何とか出来ると思えないけど。

通常のファイルダブルクリックや履歴からのロードを最初のトリガーにしたいんでしょ?
VBAがオープンするわけじゃないからブックオープン引数は与えられないし。
SandKeysの賛否はともかく、外部からどうにかするしかないのはほぼ確定でしょ。

973:デフォルトの名無しさん
10/11/05 22:52:48
>>964
状況を整理しときたい

パスワードは何に対してかかってるの?ブック?VBA?
パスワードの種類は読み取り?書き込み?
パスワードが自動入力される条件は?無条件だとパスワードの意味がないよね。

あとOSとExcelのバージョンは?

974:デフォルトの名無しさん
10/11/05 23:07:30
あらかじめ作成したファイルを、用意したエクセル経由以外で開こうとしたときに開かせないというなら、
ブックオープン時にコードを読み込ませて見えないようにしたり、開かないパスワード聞かせたりすればいいのでは
VBAわかる人間なら使ってる鍵ファイルからパスワード読み出すだろうし、そうでないならVBAからのパスワードを突破できないだろうし

975:デフォルトの名無しさん
10/11/05 23:30:06
>>972だが、俺の推測(というかこういう話だとしか思えない)

彼はVBAではなく、ブックのパスワードを対象にしている。
また彼は自分が作った複数のブックに同一のパスワードを使用している。
何度もファイルを開くだびにパスワードを入力したくないと感じている。

彼の考えたアドインはフォームを持たずユーザーのファイルオープンを監視して自動で動き、
Excelのパスワード入力ウインドウに対して処理を行おうとしている。
しかしアドインからは直接このモーダルウインドウを処理出来ないようだとわかり、その実コードを外部(VBS)に分離。
だが、結局VBSでも出来ないウワーン (←今ここ)

つまり推測が正しいならもはやVBAの質問じゃない。これはVBSの質問だ。
正直この方向で行くなら以降はVBSスレ(やVB6スレ)で聞けよ、って気もしている。
残りはVBA以外で「特定のウインドウの特定のEditBoxへ特定の文字を入力させる方法」を模索するだけなんだし。

VBプログラマ質問スレ(Ver.6.0 まで) part56
スレリンク(tech板)

976:デフォルトの名無しさん
10/11/05 23:30:54
>>972
ダイアログまで表示出来てるみたいからオープン時ではなさそう。
仮にそうだとしてもApplicationレベルのイベントはハンドリング可能。

977:デフォルトの名無しさん
10/11/05 23:43:47
>>976 あれ? パスワードがかかっているブックもハンドリング可能?
以前からそれが出来るって誰も言ってないんで出来ないんだろうと仮定してたが
出来るならExcelのパス確認出る前に解除しちゃえばいいだけじゃんw

978:デフォルトの名無しさん
10/11/06 00:24:08
ともかく>>964は何したいのか説明するスキルを磨けよ
レスしてくれてる人みんな、お前の前提がわかってないみたいだぞ?w

979:デフォルトの名無しさん
10/11/06 00:36:41
>>965
パスワードダイアログは間違いなく掴めてる
別のウィンドウをアクティブにするとループしてるからパスワードダイアログがアクティブになる


>>966
やっぱ起動時プロセスからプロセスID取得するしかないのかなぁ
でも、それだと、やりたい事が実現できないかも


>>968
キーボードイベント?ちょっと調べてみます


>>971
パスワードは読み取りパス
トリガはexcelを開く時に実行される何たらAuto()で実装してます。これをアドインにしてます


>>972
私も外部からじゃないと無理だと思ってます


980:デフォルトの名無しさん
10/11/06 00:41:10
>>973
> 状況を整理しときたい
>
> パスワードは何に対してかかってるの?ブック?VBA?
ブックです

> パスワードの種類は読み取り?書き込み?
読み取りです

> パスワードが自動入力される条件は?無条件だとパスワードの意味がないよね。
無条件ですが、とある指定したパスが掛かっていないのをSleepやカウウタで判断してスルーさせたいです

>
> あとOSとExcelのバージョンは?
XP SP3 office2003です

981:デフォルトの名無しさん
10/11/06 01:23:31
>>975
スレ違いすいませんでした
誘導有り難う…
お世話になったので出来上がったらソースだけでも公開します

ごめんなさい

982:デフォルトの名無しさん
10/11/06 01:30:19
説明する気がさらさら無いってことだけはわかった

983:デフォルトの名無しさん
10/11/06 13:26:48
>>982
他に何を説明すればいいんだ?
同値読み取りパスがかかったブックが複数あって、パスが掛かっていないブックもある
アドインにより無作為に選んだブックに対して必ずブックオープン時にイベントが走り自動で同値パスを入力する
パスワードダイアログがでない場合はスルーする

以上が仕様
オープン時にShellでvbsを実行する事は出来たがパスワードダイアログが上手く取得できない
ウィンドウ名でなくプロセスIDならvbsで上手く行くかも
だが無作為に選んだブックのプロセスIDをvbaで取得なんてできんの?
(無作為に選んだブックと言うのはファイル選択ダイアログ等からではなく、ファイルアイコンをダブルクリックで普通に開かれた場合)
出来るなら、そのプロセスIDをvbsに引き渡して処理が出来ると思う

つまり、vbaで現在開いているブック(excel)のプロセスIDが取得できますか?
出来ないのであれば他にどの様な方法で同様の処理が可能ですか?

984:デフォルトの名無しさん
10/11/06 13:31:22
上の説明で分からないのであれば
>>975が全て正解


985:デフォルトの名無しさん
10/11/06 16:24:45
>つまり、vbaで現在開いているブック(excel)のプロセスIDが取得できますか?
できます

986:デフォルトの名無しさん
10/11/06 22:21:06
>>985
宜しければ関数を教えて頂けませんか?

987:デフォルトの名無しさん
10/11/06 23:20:08
>>983-984
協力求めるのがすこぶる下手な奴だなw でも嫌いじゃないぜ、俺975。
スレチだから出てけって意味じゃない。ここよりその話に強そうなスレを案内しただけ。
それに謝らなくていいよ。そもそもやりたい事はこのスレの範疇だと思うし。

ただ今欲しがってる情報は普通のプログラマーでないと答えられない。それを主に回答側へ周知したかった。
あの文面、半分はこのスレで協力しようとしてくれてる人へのメッセージだよ。
勘違いや無用な混乱が発生してた。それを止めようと思ってさ。

攻撃してる人だって協力しようとしてんのさ。ただ、質問内容が曖昧で自分が答えられるかどうかすら判断できない状況にイライラしてたんだよ。きっと。
ここはVBAスレだからWindowsに深い造詣を持ってる必要はない。実際そういう人は多くもない。(VB6/VB.NETやってるエロい人がたまに居るぽ)
「別プロセスのウインドウを外部からユーザーに成りすまして制御する方法」この言葉の意味がわかるひと何人いるかな。
ようするにこのスレには相対的に荷が重いのよ…あ、住人は馬鹿にしてないぞ。単に畑違いのスキル、知ってるほうがおかしい。

>>986
1ブック=1プロセスじゃないけどそこは大丈夫? 場合によっては1プロセスが複数のブック持ってたりする。
また実行中のアドイン自身がいるExcelのオーナーウインドウハンドルは、2003ならApplication.hWndで取れるらしい。(ちなみにうちの2000だと取れない)
URLリンク(msdn.microsoft.com)
あとはAPIでhWndからプロセスIDを取得出来るんでそれでどうぞ。

988:デフォルトの名無しさん
10/11/07 00:30:32
GetCurrentProcessId

989:デフォルトの名無しさん
10/11/07 16:51:47
AutoOpenでVBS起動って2ファイル目以降どうすんだろ?

990:デフォルトの名無しさん
10/11/07 21:04:02
>>987
ブックとプロセスの問題を調べまつ
長文ありがとう



991:デフォルトの名無しさん
10/11/07 21:40:05
>>987
俺を萌え殺す気か、やめれw

992:デフォルトの名無しさん
10/11/07 22:06:38
俺は人を信じてるだけだよ。

そして他の誰かがきっと次スレ建てると信じている。
よろしくw


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4523日前に更新/313 KB
担当:undef