如何通过命令行打印 excel



我需要在不打开 Excel 的情况下打印Microsoft。对于简单的方法,我们可以右键单击 excel 文件。Windows将显示上下文菜单,用于从上下文菜单中选择打印选项。

在其他方式上,我可以通过命令行打开 excel。

   "excel c:UsersloginidDocumentsdata.xlsx"

但是,如果我需要通过命令行打印,该怎么办。什么命令行打印?

PowerShell很容易做到这一点。 您可以从命令行中从字面上调用"打印"动词 - 完全按照 Kyoujin 的建议进行操作。 我正在运行 Win 10 1809,但我相信这可以追溯到 PowerShell 1.0:

powershell -command "start-process -filepath .printermaintenancesheet.xlsx -verb print"

在这种情况下,我将在当前目录中启动一个文件。 如果需要完整路径,请将其放在单引号中(因为你对 PowerShell 的批处理调用使用双引号):

powershell -command "start-process -filepath 'c:usersfreddocumentssheetToPrint.xlsx' -verb print"

如 Kyoujin 所示,这将打开 Excel、加载文件、打印文件并关闭。 您可能需要确保提前设置打印区域。

我发现@user193479答案没有始终如一地关闭 excel 并且速度很慢/打开 UI 等,我对 VBA 很满意,所以 VBS 很容易。我创建了一个 VBS 脚本,该脚本将文件作为参数和可选的工作表名称。我故意省略了"副本"和/或"打印机"规范,因为我可以通过 PrintUI 在 VBS 外部处理它,并且只是重复对脚本的调用。我已经有可以打印PDF/Word等的方法,并且不想添加更多参数。

print_excel.vbs:

Dim XLApp
Dim XLWkbk
Dim ObjArgs
Dim strFileName
Dim strWorkSheetName
Set ObjArgs = wscript.arguments
Set XLApp= CreateObject("Excel.Application")
XLApp.Visible = False
Set XLWkbk = XLApp.Workbooks.Open(objargs(0))
If objArgs.count > 1 Then
 Set ws = XLWkbk.Sheets(objargs(1))
ELSE
 Set ws = XLWkbk.Worksheets(1)
End If
ws.PrintOut
XLWkbk.Close False
XLApp.Quit
Set XLWkbk = Nothing
Set XLApp = Nothing
Set ObjArgs = Nothing

测试:

wscript "C:tmpprint_excel.vbs" "C:tmpBook1.xlsx" "Sheet2"
::wscript "C:tmpprint_excel.vbs" "C:tmpBook1.xlsx"

https://www.freesoftwareservers.com/display/FREES/Print+Excel+Via+Command+Line+-+VBA+VBScript+-+Excel.exe+Switches

也。。。。Word 和 PowerPoint 已将"打印"切换到各自的可执行文件...到底Microsoft...

最新更新