PHP(5.3.1)を使ってサーバー上のエクセルファイル sample.xlsxを印刷しようと思いましたが思うようにいきません。
PHPでサーバー上のbatファイルを呼び出し、そのbatからvbsでバックグラウンド印刷させようとしています。
社内ネットワークでのアプリでして、プリンタは条件によって部署ごとのプリンタが指定されるので変数になっています。
PHP:
$ret = exec("cmd.exe /c C:\\xampp\htdocs\excelprint.bat $printerName");
bat:
cscript C:\xampp\htdocs\xlsprint.vbs C:\xampp\htdocs\sample.xlsx %1
vbs:
Set xl=CreateObject("Excel.Application")
xl.AutomationSecurity=2
xl.Visible = false
Set bk=xl.WorkBooks.Open(WScript.Arguments.Item(0))
Call bk.PrintOut(,,,,WScript.Arguments.Item(1))
bk.Close
Set bk=Nothing
xl.Quit
Set xl=Nothing
以上のような感じでやってみたのですが印刷されませんでした。
$printerNameがAdobePDFやMSのドキュメントライターのような仮想プリンタの場合は
サーバー側で印刷ダイアログ(保存しますか?というやつです)が表示されていますが、
通常の紙に印刷されるプリンタは反応しませんでした。
batファイルの%1をプリンタ名に変えて、batファイルをダブルクリックした場合は印刷されました。
何がまずいのか判る方がいらっしゃれば、教えてください。
よろしくお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
>$ret = exec("cmd.exe /c C:\\xampp\htdocs\excelprint.bat $printerName");
$cmd = "cmd.exe /c C:\\xampp\htdocs\excelprint.bat $printerName";
print $cmd . "<br />" . PHP_EOL;
$ret = exec($cmd);
などとして、コマンドの中身を確認してください。
最初(C:\\xampp)はちゃんとescapeしているのに、後半の「\」(2ヶ所)をescapeしていないのは転記するときのtypoでしょうか?
この回答への補足
コマンドの中身は期待通りのものでした。
サーバーのコマンドプロンプトに貼りつけて実行させた場合は印刷されました。
自宅でソースを思い出しながら書いたため、エスケープミスがあったのはすいませんでした。
加えてコマンドの部分も
$cmd = "cmd.exe /c C:\\xampp\htdocs\excelprint.bat " . $printerName ;
が正しいソースでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA★PDFをPDFアプリで印刷しようと思っていますが上手くゆきません 1 2022/06/06 22:04
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Visual Basic(VBA) 【VBA】印刷マクロのループ処理が反映されません 3 2022/08/09 02:15
- UNIX・Linux テキストファイルをページ番号付きでコマンドラインから印刷したい 1 2023/02/22 12:47
- Excel(エクセル) 【マクロ】webアドレスにて指定されたCSVファイル【excelソフト表示】を印刷する件 1 2023/02/15 01:52
- プリンタ・スキャナー エプソンのプリンタEP-879AWを使っていますが印刷文字がぼやけます。 家電量販店で写真印刷がメイ 4 2022/03/26 23:20
- Visual Basic(VBA) コマンドプロンプトでフォルダ内(デスクトップ)の複数PDFファイルの1ページ目だけを印刷したい 1 2022/09/11 23:33
- プリンタ・スキャナー 佐川急便のプリンターで印刷用の送り状が印刷時に詰まる 2 2022/11/23 18:25
- Visual Basic(VBA) DisplayAlertsブロパティで ”実行時エラー424オブジェクトが必要です” 5 2022/05/15 18:02
- PDF 2つのPDFを重ねる方法はありますか? 4 2023/01/30 14:04
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで印刷スプール終了の判定を...
-
プリンタドライバの用紙サイズ...
-
印刷要求順番と印刷出力順番が...
-
VBからプリンタに出力する時に...
-
マクロコードについて
-
印刷画面が表示されない
-
webページの印刷制限について
-
VBAにて指定したセルをプルダウ...
-
Designer.vbは直接コードをいじ...
-
分かる人は簡単なのだろうが、v...
-
【助けて】 VB2005とVB.NETにつ...
-
vba 時間の引き算 例えば 15:00...
-
vb.net2019 でFORMが出ない
-
EXCEL VBAから他アプリケーショ...
-
ウィンドウを終了させたい・・・
-
Eclipse CDT MinGWによるC言語
-
VBAからDLLをCALLしたいのですが
-
Visual Studio 有料と無料比較
-
C#で作ったプログラムの配布が...
-
VB6で作成したアプリを配布する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
印刷要求順番と印刷出力順番が...
-
印刷ダイアログを表示させない方法
-
ActiveReportsを使って[印刷ダ...
-
印刷ダイアログを表示させたくない
-
プリンターを指定して印刷するには
-
PDFファイルを印刷し終了するには
-
vbaでPDFファイルが印刷されない
-
VBscriptでPDFファイルを直接印...
-
VBからのプリンタ制御について
-
ACCESSで設定した帳票の用紙サ...
-
イベントプロシージャ 印刷が...
-
EXCELファイルの複数ダウンロー...
-
phpでの自動印刷
-
VBSでExcelファイル印刷時のプ...
-
VBAにて指定したセルをプルダウ...
-
VBAで印刷スプール終了の判定を...
-
プリンタの印刷ジョブを削除し...
-
PHPでPDFファイルの直接印刷
-
A4の2枚をA3の1枚にする編集方法?
-
VBでExcel印刷する時のプリンタ...
おすすめ情報