将postscript文件转换为pdf无效

时间:2014-11-04 15:02:50

标签: excel vba pdf postscript

更新: 我尝试pdf的excel数据样本和通常在下面创建的pdf文件 Excel - http://i.imgur.com/lnE1VER.jpg PDF - http://i.imgur.com/yNDHFMv.jpg

问题似乎是该流程没有检测到工作表中的任何内容 - 有关我如何激活'的任何建议。内容?

-

我有一个将excel报告转换为PDF文件的VBA宏 - 我想在几个工作簿中复制代码,但是当我这样做时,它可以在某些工作簿中工作而不是其他工作簿。

代码如下 - 我将每个中的四个Const值更新为每个工作簿的相关单元格/值,并且我检查了每个工作簿中是否选择了相同的引用。

当我运行代码时,它会循环,更改索引单元格并生成包含新数据的PDF。在其中一个工作簿中虽然没有创建PDF,但我已经逐步完成了代码,它创建了postscript文件,但没有将其转换为PDF。

Public Sub ExportGraphs()

Const indexCell = "B55"
Const totalCell = "D55"
Const authorityName = "B5"
Const fileName = "Civic cultural and community venues performance indicator standings report 2013-14 - "

Application.ScreenUpdating = False
Application.ShowWindowsInTaskbar = False
Application.DisplayAlerts = False
Application.EnableEvents = False

Dim i As Integer

Dim awb As Workbook
Set awb = ThisWorkbook

Dim myPDF As PdfDistiller
Set myPDF = New PdfDistiller

For i = 1 To awb.Worksheets("PIN").Range(totalCell).Value

awb.Worksheets("PIN").Range(indexCell).Value = i

Dim strGraphLoc, strPIN As String

strPIN = awb.Sheets("PIN").Range(authorityName).Value & " " &   awb.Worksheets("PIN").Range("B6").Value

strGraphLoc = awb.Path & "/"

Dim PSFileName As String
Dim PDFFileName As String

PSFileName = strGraphLoc & fileName & strPIN & ".ps"
PDFFileName = strGraphLoc & fileName & strPIN & ".pdf"

'Print the Excel range to the postscript file
awb.Sheets("PIN").PrintOut copies:=1, from:=1, preview:=False, ActivePrinter:="Acrobat Distiller", printtofile:=True, collate:=True, prtofilename:=PSFileName

'Convert the postscript file to .pdf

myPDF.FileToPDF PSFileName, PDFFileName, ""

Kill PSFileName
Kill strGraphLoc & fileName & strPIN & ".log"

Next i

Set myPDF = Nothing

Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.ShowWindowsInTaskbar = True
Application.EnableEvents = True

End Sub

任何帮助都将不胜感激,我不能为我的生活找出原因,为什么它在一些而不是其他人中有效。

在我遇到问题的工作簿中,创建了一个0kb的postscript文件和一个文本文件:

  

%% [警告:空工作。没有生成PDF文件。 ] %%

2 个答案:

答案 0 :(得分:0)

从显而易见的开始:0字节的PostScript语言文件不包含图形,因此Distiller无法将其转换为有意义的PDF文件。那么,为什么Postscript语言文件长0个字节?

问题电子表格中的打印失败了。

让VBA解决问题。尝试通过Excel"打印"从问题电子表格打印。菜单项。打印到PostScript和非PostScript打印机。我怀疑也会失败。

诊断打印失败。一旦"打印"菜单项有效,我怀疑VBA脚本也会。

答案 1 :(得分:0)

在撕掉我的头发并且找不到近6个月的解决方案后,我的同事刚刚怀疑它 - 我们试图创建的PDF的文件名太长了,我们缩短了它现在工作正常!

我正在寻找谎言