
No.5ベストアンサー
- 回答日時:
No1で回答した者です。
なるほど、サーバサイドで実行したいとのことですね。
となりますと、クライアントからのShell呼び出しは、
クライアント実装なので、NG。
ソフトがサーバにあっても、クライアントインスタンスで
動作します。
簡単な例えで言いますと。
Webサーバでもなんでもそうですが、別の筺体のプログラムを
遠隔で処理できるようにするには、やはり。
「サーバ側で常に待ち構えている(という意味で"Server")ソフト」
と、「クライアントでトリガを発行するソフト」という2本立ての
手段をとります。
なぜ遠隔操作するのに「サーバ待ち構えソフト」が必要かというと、
ごく単純にセキュリティの問題で。
VBAのShell関数くんだりで、Delete 遠隔Fileコマンドなど発行
されると、YahooでもGoogleでも遠隔で削除できてしまうので
迷惑極まりないと。
よって、そうできない決まりになっています。
さて。
通常はサーバに対しリクエストをかける方法としては、
Socket通信など、TCP/IPで行うのがセオリーなんですが。
社内LANなど小さい、セキュリティを気にしなくていい
ネットワークでは真似ごととしてこんなやりかたもできます。
1.サーバサイドにバッチファイルを仕込む。
そのバッチは、「どこかWindows共有フォルダに特定の
ファイル名のファイルが入ると別プログラムをキックする
もの」を作ります。
簡単にはVBScriptなどで
If (どこどこのファイルが見つかった) Then
Shell "Notepad.exe" 'メモ帳起動
End If
という短いものでいいです。
2.上記のプログラムは一瞬で終わってしまうので、偽装常駐
させるため、Windowsのタスクで1分ごとにでも常に実行する
設定をします。
常に1分ごとに動作させておきます。
3.VBA側で、サーバの共有フォルダに特定の名前のファイルを
放り込みます。
…この理屈で動きますよね(笑)
実際に、サーバなどという仕組みは。
簡単にいえば、上記1,2の機能を実装したようなソフトで。
…こんなしょうもないもんです。
なんでも試してやってみるといいんじゃないでしょうか?
ちなみに、サーバサイドのプログラムで「"終了"」などの
画面を出すことはよろしくありません。
プログラムがOKを押すまで止まってしまいますよ。
No.4
- 回答日時:
ANo.2 補足へのアドバイスです。
WshRemoteでなくてもサーバの何かを起動するためには、ANo.1 yama-takuさんが書かれていますようにかなりの準備が必要になるでしょう。それが面倒でしたら別の方法を考えた方がよいでしょう。例えばサーバ側ではCOBOLのプログラムを定期的に実行し、クライアント側ではその結果のファイルを参照するとか。
情報が小出しになりますけれども、やはりWshRemoteでやってみようという場合のため、Windows XP SP2での設定方法のリンクを書いておきます。タイトルはWMIですがWshRemoteでも同様の設定が必要です。
Windows XP SP2のWMIに関する問題のトラブルシューティング方法
http://support.microsoft.com/kb/875605/ja
もしWindows XP SP2でワークグループの場合は下記の設定(ForceGuest=0にする)も必要です。
ワークグループにインストールされているWin XP Proでセキュリティを設定する方法
http://support.microsoft.com/default.aspx?scid=k …
面倒ですね。(^^;;;
No.3
- 回答日時:
環境に依存するのでお役に立つかどうかわかりませんけれども、VBAではなくWSH(VBSCriptならVBAと文法は似たようなものです)WshRemoteを使うと他のコンピュータにスクリプトを送って実行できます。
スクリプトは他のコンピュータで実行されます。WshRemoteについては下記の@ITのページが詳しいです。WshControllerオブジェクト、WshRemoteオブジェクト
http://www.atmarkit.co.jp/fwin2k/operation/wsh09 …
ドメインでは経験ありませんがワークグループのWindows XP SP2 Pro同士(admin権限の同じユーザ名、同じパスワード)で試したことはあります。Windows XP SP2ではファイアウォール、及びDCOMを設定する必要があります。
-----
ところでサーバ側で実行するバッチジョブは何をするものでしょうか。最終的に行いたいことがコンピュータの情報の取得でしたらWMI(Microsoft Windows Management Instrumentation)の方が簡単だと思います。
この回答への補足
>サーバ側で実行するバッチジョブは何をするものでしょうか
cobolのプログラムを実行するバッチです。
DCOMとか私には全く理解の範囲を超えています。
また、WshControllerオブジェクト、WshRemoteオブジェクトはレジストリを変更する必要があることが書いてありましたけど、そこまではしたいないですね。
No.2
- 回答日時:
そのバッチに問題があると思います。
クライアントPCからだとフォルダ名が「\\サーバ名\AAAAA\BAT\」になっているように、
バッチの中のコマンドも「dir C:\*.txt」じゃ動きません。なぜならC:が存在しないのです。クライアントからサーバのC:にアクセス権限する権限もないです。バッチの中のコマンドが「dir \\サーバ名\AAAAA\BAT\*.txt」なら動きます。
No.1
- 回答日時:
バッチジョブを「どこで」やりたいかによります。
貴方のソースコードの場合、サーバに存在するバッチファイルを
クライアントで実行するソースになっています。
当初の目的がそれでもいいのであれば、ごく単純にサーバログインの
アカウントが通っていないだけのような気がします。
サーバ上にクライアントのアカウントと権限を振り、かつ、
フォルダにアクセス権限、実行権限を与えれば上記コマンドが
動くと思います。
この場合は「終了!」メッセージはクライアントに表示され、
コマンドもクライアントで実行されます。
また、別途。
上記の「終了!」というメッセージをサーバで表示したい、つまり、
サーバサイドで実行させたい場合は、上記のソースコードでは
無理です。
基本的にクライアントからサーバ上への実行インスタンスを
作ることは直接は不可能ですので、普通はサーバの「常駐サービス」
を用意します。
簡単にいえば、何らかの常駐してコマンドを実行するサーバの
別プログラムに対し、Socket通信でも、Webでもいいので、クライ
アントからトリガとなる「通信」を与えてやる手段をとります。
この回答への補足
yamaーtakuさん、早速ありがとうございます。
バッチジョブはサーバに存在し、そこで実行したいのです。
あくまでクライアントはトリガです。
それが前提なんですが、サーバ側で何か用意する必要があるのですか?
その辺がよく理解できないところなんです。
実をいうと、VBAに関しても素人同然なんです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
- Visual Basic(VBA) バックグラウンドのプロセスのエクセルを閉じる方法 4 2022/05/12 15:39
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) Excel VBA カーソルを当てた際に表示される”4161”とは 1 2022/04/30 21:53
このQ&Aを見た人はこんなQ&Aも見ています
-
BATファイル内で、他のネットワークドライブにある
UNIX・Linux
-
html上で、バッチやexeファイルの起動をしたい
ホームページ作成・プログラミング
-
ネットワーク上のコンピュータのファイルを起動させる
その他(プログラミング・Web制作)
-
-
4
メッセージを他のPCに出したい
Visual Basic(VBA)
-
5
コマンドプロンプトから別マシンに命令を投げれるでしょうか
UNIX・Linux
-
6
ExcelでTelnetを動かしたい
Visual Basic(VBA)
-
7
HTMLからのBATファイル実行
その他(プログラミング・Web制作)
-
8
マクロでネットワーク上のコンピューターへの接続
Excel(エクセル)
-
9
PowerShellを使って関連付けられたアプリケーションでファイルを開く時のエラー
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画像生成AIのプロンプトの作り...
-
Geminiフォーム 画像生成で 人...
-
vba クリップボードクリアにつ...
-
pip --versionがエラーになる
-
pythonの実行に関する質問
-
Python... 環境設定 初心者です...
-
OS入ってる機器のソフト・アプ...
-
Python 3.12.2 か一番最新のパ...
-
CSVファイルの複数行削除
-
数学、プログラミング、物理、...
-
パイソンのソースコードをChatG...
-
アセンブリ言語について。
-
AIの登場でプログラマーたちが...
-
VBAでパワーシェルを実行したい...
-
Google ColaboでGUI作成
-
アルゴリズムとコードとは何で...
-
プログラミングのやり方ざっく...
-
python言語について。
-
MOVEコマンドでサブフォルダー...
-
pythonについて(初心者です)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでネットワーク上のバッ...
-
IUSR でCreateObject("Excel.Ap...
-
IIS7.5 Excel ファイルオープ...
-
ユーザーアカウント制御について
-
PDFlibでエラー(permission de...
-
LogonUser関数が ERROR_PRIVIL...
-
管理者権限のないユーザーだと...
-
ASPで、IISの設定がうまくいき...
-
WinAPIでWindowsの権限を調べる...
-
VBS でユーザ名からそのユーザ...
-
VC++からのoracle接続方法
-
ASP.NET での処理表示について
-
MPC4ファイルをiTunesに入れら...
-
ASP AccessDBオープン出来ない
-
PowerDVD15のデバイス&ホーム...
-
googlスライドの編集権限について
-
Webの閲覧権限について
-
IISからログインしたWebサイ...
-
PHPについての質問です。
-
データベース(xxx.mdf)の更新...
おすすめ情報