忙しい現代人の腰&肩のお悩み対策!

どうもこんにちは。

Excelのファイルを印刷する際、普段はExcelを起動して印刷するか、エクスプローラでファイルを右クリックして印刷を実行しています。
複数のxlsファイルを順番に印刷したいのですが、プロンプトでコマンドを入力して印刷する方法はないのでしょうか。

OSはWindowsXPを使用しています。
プリンタはパソコンと直接つながっているわけでなく、LAN経由でつながってます。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

こんばんは。



残念ながら、起動オプションには印刷が見当たりませんでした。

http://support.microsoft.com/default.aspx?scid=k …

それで、下のようなものを作ってみました。

'--------------------------------------------------
' Usage : XlsPrint.VBS file

Option Explicit
Dim fso
Dim wShell
Dim Path
Dim File
Dim Shell
Dim I

Set fso=CreateObject("Scripting.FileSystemObject")
Set wShell=CreateObject("WScript.Shell")
Path=wShell.RegRead("HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\excel.exe\")
Path=Replace(Path,"""","")
Path=wShell.ExpandEnvironmentStrings(Path)
RegWrite "HKCR\*\shell\XlsPrint\command\",""""&Path&""""
RegWrite "HKCR\*\shell\XlsPrint\extended",""
RegWrite "HKCR\*\shell\XlsPrint\ddeexec\","[open(""%1"")][print()][quit()]"
RegWrite "HKCR\*\shell\XlsPrint\ddeexec\application\","Excel"
RegWrite "HKCR\*\shell\XlsPrint\ddeexec\topic\","system"
Set Shell=CreateObject("Shell.Application")

For I=0 To WScript.Arguments.Count()-1
Set File=fso.GetFile(WScript.Arguments.Item(I))
Shell.ShellExecute File.Path,0,,"XlsPrint"
WScript.Sleep 1000
Next
WScript.Quit


Sub RegWrite(Key,Value)
If Not RegRead(Key)=Value Then wShell.RegWrite Key,Value,"REG_SZ"
End Sub


Function RegRead(Key)
On Error Resume Next
RegRead=vbNullChar
RegRead=wShell.RegRead(Key)
End Function
'--------------------------------------------------

'---- から始まって '---- で終わる行までを XlsPrint.VBS として保存して、オプションにファイル名を指定して実行してみて下さい。
デフォルトのプリンターに出力される、、、はずです。
    • good
    • 1
この回答へのお礼

回答ありがとうございます。

VBSを使用すればできるのですね。
このコードを参考にスクリプトを作成しました。

ありがとうございました。

お礼日時:2007/02/08 11:34
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

VBSで印刷用のスクリプトを書くことにしました。

お礼日時:2007/02/08 11:35

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q複数のExcelをバッチファイルのように印刷

複数のフォルダに入っているExcelを順番にpdfに印刷していきたいのですが、何か良い方法ありますでしょうか?有償ソフトでもかまいませんので、方法ご存知の方、お教えください。
スクリプトでもマクロでも何でも良いです。

Aベストアンサー

下記URLのページの過去ログにマクロの回答がありました。

「フォルダ内のエクセル文書をすべて印刷したいデス」
http://oshiete.goo.ne.jp/qa/1517036.html

Qフォルダ内のエクセル文書をすべて印刷したいデス

1つのフォルダに ファイルが100個くらいあり それぞれ 1~3シートのBookになています。
すべてのシートを印刷したいのですが 毎回 ファイルを開いてシートを選択しないとできません。

一括で処理する方法をご存知の方 教えて頂けないでしょうか。
(>_<)よろしくお願いしますぅぅ

Aベストアンサー

>まだ使い方が分かりません。。

エクセルを開いて、[Alt] + [F11] でマクロを編集する画面(VBE)が現れます。
その画面で、[挿入] - [標準モジュール] を選択すると、マクロを記述する画面が現れます。

そこに、Sub ~ End Sub までの行をコピーして貼り付けてください。

一行目の「Sub test()」の "test" の文字は任意に書き換えできます。「一括印刷」などの解りやすい名前にしても良いでしょう。

「Fol = "C:\Tmp"」の "" の内側には、ファイルが入っているフォルダのフルパスを書き込んでください。

実行するには、マクロ文中にカーソルを置いて、VBEの[|>](横向き三角ボタン)をクリックすれば実行できます。
若しくは、エクセルの画面で [Alt] + [F8] で実行するマクロを選択する画面が現れます。

まずは、適当なフォルダを作成し、印刷対象ファイルを数個置いて、そのフォルダを対象にして実行テストをして見てください。

参考URL:http://t_shun.at.infoseek.co.jp/My_Page/Excel-VBA/vba_page03.htm

>まだ使い方が分かりません。。

エクセルを開いて、[Alt] + [F11] でマクロを編集する画面(VBE)が現れます。
その画面で、[挿入] - [標準モジュール] を選択すると、マクロを記述する画面が現れます。

そこに、Sub ~ End Sub までの行をコピーして貼り付けてください。

一行目の「Sub test()」の "test" の文字は任意に書き換えできます。「一括印刷」などの解りやすい名前にしても良いでしょう。

「Fol = "C:\Tmp"」の "" の内側には、ファイルが入っているフォルダのフルパスを書き込んで...続きを読む

QコマンドプロンプトからEXCELファイルを開き、印刷後、閉じるを一括に行いたい

Windows2000,XPでEXCEL2000を使っています。
コマンドプロンプトから次の(1)~(3)の動作を一括に動かせないものでしょうか。

今は(1)の動作を
C:\>C:\PROGRAM FILES\MICROSOFT OFFICE\OFFICE\EXCEL.EXE C:\TESTPRINT.XLS"
このように記述すれば自動的にTESTPRINT.XLSが開くのですがこれを自動的に印刷し、印刷が終わったら自動的にEXCELが閉じてほしいのです。具体的な記述を教えて下さい。
----------------------
(1)EXCELファイル(TESTPRINT.XLS)を開く
(2)TESTPRINT.XLSを印刷する
(3)印刷後、EXCELを閉じる
-----------------------

Aベストアンサー

エクセルの起動スイッチでと思ったのだが、印刷するのは無いようです。
マクロのAuto_Open()に、印刷してエクセルを終了するコードを書いておくのはどうでしょう?

必要なコードは、ツール→マクロ→新しいマクロの記録で
手作業を記録して編集してください。
だいたい、こんな感じになります。(動作確認してません)

Worksheets(1).PrintOut
Application.DisplayAlerts = False '保存確認を表示させない
Workbooks.Close
Application.Quit

Qコマンドプロンプトで印刷実行

コマンドプロンプトでテキストファイルを印刷したいのですが、正常に動作しません。
記述は下記の通りです。
直結してあるレーザープリンタを、LPT1ポートで接続しています。
print /d:LPT1: TEST.TXT
実行したところ、プリンタの動作音が一瞬鳴るのですが、紙は出力されません。
どうかよろしくお願いします。

Aベストアンサー

ノートパッドを使ってこんなのはどうでしょうか。

   notepad.exe /pt "TEST.TXT" "LPT1"

下記のページに載っていました。

参考URL:http://www.fpcu.jp/dosvcmd/bbs/log/print/4-1354.html

QPDFファイルを開かずに印刷したい

幾つものPDFファイルを印刷したいのですが、
できればAdobeReaderを起動させずに印刷したいです。

ファイルのアイコン上で右クリック→印刷でも可能ですが、
数が多くなると、この作業も大変です。
そこでVisualBasic2008ExpressEditionを使って、
簡単なシステムを作りたいと考えています。

しかし、PDFを開かずに印刷する方法が、どうしてもわかりません。
ネット検索、教えてgoo内の検索でもヒットせず途方に暮れています。
参考になるホームページや書籍がありましたら教えてください。
「こんな手法があるよ」というものでも構いません。

宜しくお願いします。

Aベストアンサー

PDFを開く際にACRORD32.exeに対して以下のコマンドラインを指定してください。

ACRORD32.EXE /s /l /p /h [PDFのパス]

コマンドラインの解説は参照URLを。

参考URL:http://scripting.cocolog-nifty.com/blog/2007/07/adobe_reader_81_e41e.html

QVBSでExcelファイル印刷時のプリンタ指定

VBSでExcelファイルを印刷する際、場合によってはプリンタを変えて印刷したいのですが、プリンタの指定をどのようにコーディングすれば良いのか分かりません。

印刷時のソースは下記のとおりです。

Set Excel = CreateObject("Excel.Application")
Set objWkBk = Excel.Workbooks.Open("C:\Test.xls", , False)

Excel.ActiveWindow.SelectedSheets.PrintOut()

Excel.DisplayAlerts = False
Excel.quit()
objWkBk.close
Set objWkBk = Nothing
Set Excel = Nothing


上記コーディングに下記(1)~(4)を追加または、修正して試してみましたが、エラーとなってしまいます。

(1)Application.ActivePrinter = "\\NAS0013W\Kyocera LS-6700SKX2"
(2)Excel.ActivePrinter = "\\NAS0013W\Kyocera LS-6700SKX2"
(3)Excel.ActiveWindow.SelectedSheets.PrintOut("\\NAS0013W\Kyocera LS-6700SKX2")
(4)Excel.ActiveWindow.SelectedSheets.PrintOut(ActivePrinter = "\\NAS0013W\Kyocera LS-6700SKX2")

そもそも、vbsからはプリンタの指定はできないのでしょうか?

ご教授いただきたく、よろしくお願いいたします。

VBSでExcelファイルを印刷する際、場合によってはプリンタを変えて印刷したいのですが、プリンタの指定をどのようにコーディングすれば良いのか分かりません。

印刷時のソースは下記のとおりです。

Set Excel = CreateObject("Excel.Application")
Set objWkBk = Excel.Workbooks.Open("C:\Test.xls", , False)

Excel.ActiveWindow.SelectedSheets.PrintOut()

Excel.DisplayAlerts = False
Excel.quit()
objWkBk.close
Set objWkBk = Nothing
Set Excel = Nothing


上記コーディングに下記(1)~(4)を追加また...続きを読む

Aベストアンサー

プリンターを切り替えるには手作業でプリンターを変更します。
その後イミディエイトウィンドウで
?application.activeprinter + Enter
で PDFCreator on Ne00: みたいのが返ってきますので
これを指定します。
excel.activeprinter = "PDFCreator on Ne00:" のように。

または変更は印刷時に行うようにして
excel.ActiveWindow.SelectedSheets.PrintOut activeprinter:="PDFCreator"
とすると ポート指定部分は無くても機能するようですね。

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

QPDFファイルを開き、印刷し、閉じるマクロ

Excel 2003 VBAにて、
PDFファイルを開き、印刷し、閉じるマクロを作りたいと思っています。

Dim AA, AAA

AA = "C:\Program Files\Adobe\Reader 11.0\Reader\AcroRd32.exe C:\Scan\20131101160734050_001.pdf"
AAA = Shell(AA, vbNormalFocus)

にて、PDFファイルを開くことは出来ました。
このPDFファイルを、「印刷し、閉じる」ためには、
このPDFファイルを指定する必要があると思いますが、
その構文が判りません。
知っている方、教えて下さい。

Aベストアンサー

#3です。
WShell.Execを使うと閉じる事ができる様ですが、色々と気難しくて苦労しました。
まず、なぜかAdobe Reader/Acrobatのフルパスを与えないと、ファイルがみつからないとゴネます。

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub test()
printPdf2 GetDesktopPath & "\test.pdf", "DocuWorks Printer", "DocuWorks Printer Driver"
' printPdf2 GetDesktopPath & "\test.pdf"
End Sub

Sub printPdf2(pdfDocument As String, Optional printerName As Variant, Optional printerDriver As Variant)
Dim cmdLine As String
Dim WShell As Object
Dim oExec As Object
'ここは調整の必要がありそう
Const waitTime As Long = 1000
'Windows7 Home 64bitの場合です
Const pgmFullPath As String = "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe"

Set WShell = CreateObject("WScript.Shell")
If IsMissing(printerName) Or IsMissing(printerDriver) Then
cmdLine = "pgmFullPath /n /s /o /h /t ""pdfFullPath"""
cmdLine = Replace(cmdLine, "pgmFullPath", pgmFullPath)
cmdLine = Replace(cmdLine, "pdfFullPath", pdfDocument)
Else
cmdLine = "pgmFullPath /n /s /o /h /t ""pdfFullPath"" ""printerName"" ""printerDriver"""
cmdLine = Replace(cmdLine, "pgmFullPath", pgmFullPath)
cmdLine = Replace(cmdLine, "pdfFullPath", pdfDocument)
cmdLine = Replace(cmdLine, "printerName", printerName)
cmdLine = Replace(cmdLine, "printeDriver", printerDriver)
End If
Debug.Print cmdLine
Set oExec = WShell.exec(cmdLine)
Sleep waitTime
'Windows7Home/64bit環境ではここで実行時エラーが出るので無理矢理先に進めていますが
'Adobe Readerは閉じられる様です
On Error Resume Next
oExec.Terminate
Set WShell = Nothing
End Sub

Private Function GetDesktopPath() As String
Dim wScriptHost As Object, strInitDir As String
Set wScriptHost = CreateObject("Wscript.Shell")
GetDesktopPath = wScriptHost.SpecialFolders("Desktop")
Set wScriptHost = Nothing
End Function

Terminateで原因不明のエラーが出るのでWebを漁っいて下記をみつけました。64bit環境でエラーが出るのはこれも関係しているのでしょうか?少々無理をしている様なので、ご使用時はご注意下さい。
Terminate メソッドは最後の手段としてのみ使用します。これは、アプリケーションによっては適切にクリーンアップできない場合があるためです。通常は、プロセスを途中で中断せず、プロセス自身で実行を終了させるようにします。Terminate メソッドは WM_CLOSE メッセージを使ってプロセスを終了しようとします。これで終了できない場合は、通常のシャットダウン手順を実行せずに、プロセスを強制終了します。
http://msdn.microsoft.com/ja-jp/library/cc364387.aspx

#3です。
WShell.Execを使うと閉じる事ができる様ですが、色々と気難しくて苦労しました。
まず、なぜかAdobe Reader/Acrobatのフルパスを与えないと、ファイルがみつからないとゴネます。

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub test()
printPdf2 GetDesktopPath & "\test.pdf", "DocuWorks Printer", "DocuWorks Printer Driver"
' printPdf2 GetDesktopPath & "\test.pdf"
End Sub

Sub printPdf2(pdfDocument As String, Optional printerName As Variant, Optional prin...続きを読む

QExcelで複数のファイルを1度に印刷したいです。

フォルダにExcelのファイルが77個あって、それぞれ1~10sheet、1sheet=A4で1枚になっていて印刷すると全部で216枚あります。いつも1ファイルずつ開いて「全てのシートを選択」して印刷しているのですが1時間程かかってしまいます。(カラーレーザープリンター使用、番号順になっていないので並べ替える時間も込み)時間短縮出来る方法はないでしょうか?
以前フォルダ内のファイルを「全て選択」→「印刷」してみたのですが、印刷されなかったファイルやシートもあり、余計に面倒なことになってしまいました。

Aベストアンサー

#3の内容をちょっと訂正です。
以下のようにしてください。

Dim fName
Dim xlApp
Dim xlWb
Set xlApp = WScript.CreateObject("Excel.Application")
For Each fName in WScript.Arguments
Set xlWb = xlApp.Workbooks.Open(fName)
xlWb.Worksheets.Printout
xlWb.Close False
Next
xlApp.Quit
Set xlApp = Nothing
Set xlWb = Nothing

Qbatである文字列内に特定の文字列が含まれているか確認したい

batファイルの中である変数「abc」の中に「test」という文字が含まれていたら○○を行なうという分岐を作成したいのですが、どのように行なえばよいのでしょうか?

そのまま、ずばりのお答えお待ちしております。

よろしくお願い致します。

Aベストアンサー

大文字小文字を区別しなくていいなら、

if not "%abc:test=%" == "%abc%" echo 含まれていた

区別するなら、

echo %abc% | find "test" >NUL
if not ERRORLEVEL 1 echo 含まれていた


人気Q&Aランキング