Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将excel文件另存为pdf_Excel_Automation - Fatal编程技术网

将excel文件另存为pdf

将excel文件另存为pdf,excel,automation,Excel,Automation,我正在寻找执行以下操作的最佳解决方案: 我有大约640个Excel文件,每个文件中有大约9-12张表格。我想将每张图纸保存为PDF格式。目前,该过程是手动完成的。选择工作表->文件->另存为->pdf->浏览一百万个文件夹。正如你所看到的,这是非常耗时和低效的 我知道如何用C语言编程,但是我的机器上没有visual studio。但是,如果最好的方法是VS,那么如果IT团队为我提供了许可证,我可能会让他们安装VS 我唯一可用的工具是Excel,甚至Access都不可用。所以我将主要寻找VBA代码

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

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

我知道如何用C语言编程,但是我的机器上没有visual studio。但是,如果最好的方法是VS,那么如果IT团队为我提供了许可证,我可能会让他们安装VS


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

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

ExportTo-ExcelPDF.ps1


在C语言中使用相同的COM API也相当简单,您可以通过免费的Visual Studio 2012 Express来实现这一点。

我们可以为您提供哪些帮助?。。。顺便说一句,您不需要将vba代码放在每个要另存为PDF的文件中,但您需要打开每个文件以将其另存为vba…在处理单个文件时录制一个宏:这将为您提供一个良好的起点。@KazJaw不,单个vba宏可以打开.xls工作簿并将其另存为PDF。不需要将它们全部转换为。xlsm@Jack,我不明白你的意思。我没说要转换成.xlsm。。。哦,现在我明白我上面写的了,我的意思是“保存为PDF”而不是“保存为VBA”。。。你说得有点对……powershell可以安装在Win XP上吗?或者有一个CMD替代我刚刚测试了这个,它工作正常,但它保存在一个pdf的所有工作表。我想将每张图纸另存为单独的pdf格式。因此,对于每个包含9-12个工作表的excel文件,我应该返回9-12个PDF。您可以设置一个内部循环,并在每个工作簿上的每个工作表上调用一次ExportAsFixedFormat,参数从和到指定所需的页面范围。看见
$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()