PHPで業務システムを作っています。


やろうとしていることは、例えば「Excel出力」というボタンをクリック時に
①PHPでEXCEL出力処理を行い、サーバ上の所定のフォルダへ保存
②クライアント端末名を取得し、①のEXCELファイルをクライアントの所定のフォルダへコピー
(③更に可能ならそのExcelファイルがOPENされて最前面に表示された状態で処理終了)
という一連が実行されるようにしたいです。

※②でクライアントの所定のフォルダに置くのは、他システムとの連携の関係上意味があります。

ですが、クライアントサイドの言語をちゃんと勉強したことがないため、②以降がわかりません。
どのような方法がありますか?
(サンプルコードもいただけたらありがたいです)

いろいろググったりしては見ましたが、
ブラウザ上での端末名の取得にはJscriptやVBscriptの一部(取得部分のみ)が紹介されていたりして、どう使用してよいかわかりませんでした。

環境は、社内LAN環境で、Windows、使用ブラウザはie8固定、クライアント端末のドライブやフォルダ構成は同じです。

どうかよろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/01/16 22:36:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:oil999 No.1

回答回数1728ベストアンサー獲得回数320

ポイント200pt

②クライアント端末名を取得

Windowsのコンピュータ名の取得を意図しているなら、VBScriptで下記のように記述します。ブラウザはIE限定です。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<script language="VBScript">
<!--
Function getComputerName()
    Set objNetWork = CreateObject("WScript.Network")
    getComputerName = objNetWork.ComputerName
    Set objNetWork = Nothing
End Function

MsgBox getComputerName()
-->
</script>
</body>
</html>


①のEXCELファイルをクライアントの所定のフォルダへコピー

サーバのフォルダをpath0、ファイル名をfname、クライアントのフォルダをpath1とします。

Function copyFile(path0, fname, path1)
    Set objWS = CreateObject("WScript.Shell");
    cmd = "copy " & path0 & fname & " " & path1
    objWS.run(cmd);
End Function


IEからExcelを起動する。

以下のようにします。

Function runExcel(path1, fname)
    With CreateObject("Excel.Application")
        .Visible = True
        .Workbooks.Open (path1 & fname)
    End With
End Function
他1件のコメントを見る
id:oil999

ちなみにIE設定をいじらずに済む方法はご存じありませんか?

ありません。
要望を実現するにはActiveXを使う必要があり、このためIE限定です。そのIEのデフォルト設定ではセキュリティの関係上、スクリプトが実行できないようになっているため、手作業で解除してやる必要があります。

2013/01/16 20:14:13
id:kon39392

ありがとうございました。参考になりました。

2013/01/16 22:39:57

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません