【问题标题】:saving excel files as a pdf将excel文件保存为pdf
【发布时间】:2013-07-08 18:46:31
【问题描述】:

我正在寻找执行以下操作的最佳解决方案:

我有大约 640 个 Excel 文件,每个文件大约有 9 到 12 张。我想将每张纸保存为 PDF。目前,该过程是手动完成的。选择工作表 -> 文件 -> 另存为 -> pdf -> 浏览一百万个文件夹。如您所见,这非常耗时且效率低下。

我知道如何用 C# 编程,但是我的机器上没有 Visual Studio。但是,如果最好的方法是 VS,那么如果 IT 团队有我的许可证,我可以让他们安装 VS。

我唯一可用的工具是 Excel(甚至 Access 都不可用)。所以我将主要寻找VBA代码。如果这意味着打开每个文件以粘贴 VBA 代码,那么将每个工作表保存为 PDF 仍然会更快。

【问题讨论】:

  • 我们能为您提供什么帮助?...顺便说一下,您不需要将 vba 代码放置到要保存为 PDF 的每个文件中,但您需要打开每个文件以将其保存为 VBA...
  • 在处理单个文件时录制宏:这应该是一个很好的起点。
  • @KazJaw 不,单个 VBA 宏可以打开 .xls 工作簿并将其保存为 PDF。无需将它们全部转换为 .xlsm
  • @Jack,我不明白你。我没有说任何关于转换为 .xlsm 的事情......哦,现在我明白了我上面写的内容,我的意思是“将其另存为 PDF”而不是“将其另存为 VBA”......你说得对。 ...

标签: excel automation


【解决方案1】:

您可以使用 PowerShell 实现您的目标

ExportTo-ExcelPDF.ps1

$path = "c:\fso" 
$xlFixedFormat = "Microsoft.Office.Interop.Excel.xlFixedFormatType" -as [type] 
$excelFiles = Get-ChildItem -Path $path -include *.xls, *.xlsx -recurse 
$objExcel = New-Object -ComObject excel.application 
$objExcel.visible = $false 
foreach($wb in $excelFiles) 
{ 
 $filepath = Join-Path -Path $path -ChildPath ($wb.BaseName + ".pdf") 
 $workbook = $objExcel.workbooks.open($wb.fullname, 3) 
 $workbook.Saved = $true 
"saving $filepath" 
 $workbook.ExportAsFixedFormat($xlFixedFormat::xlTypePDF, $filepath) 
 $objExcel.Workbooks.close() 
} 
$objExcel.Quit()

http://blogs.technet.com/b/heyscriptingguy/archive/2010/09/06/save-a-microsoft-excel-workbook-as-a-pdf-file-by-using-powershell.aspx

在 C# 中使用相同的 COM API 也相当简单,您可以使用免费的 Visual Studio 2012 Express 来完成。

【讨论】:

  • powershell可以安装在Win XP上吗?或者是否有 CMD 替代品
  • 我刚刚对此进行了测试,它工作正常但是它将所有工作表保存在一个 pdf 中。我想将每张纸保存为单独的 pdf。所以对于每个 9 - 12 张的 excel 文件,我应该得到 9 - 12 个 pdf。
  • 您可以设置一个内部循环,并在每个工作簿的每个工作表上调用一次 ExportAsFixedFormat,参数 FromTo 指定所需的页面范围。见msdn.microsoft.com/en-us/library/office/…
猜你喜欢
  • 2018-08-22
  • 1970-01-01
  • 2017-01-29
  • 2015-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-16
相关资源
最近更新 更多