我正在将从另一个应用程序(DPlot Jr)生成的增强元文件复制到剪贴板,并将其粘贴到Excel(2007)工作表。从那里我使用vba将该文件转换为pdf。这是我必须做的代码:
' copy the graph eml file to the clip board
ret = DPlot_Command(doc, "[CopyPicture()]")
' copy the clip board contents to a new temp worksheet (under the covers)
'Hide the application
Application.ScreenUpdating = False
'Create a new temp worksheet
Set ws = ActiveWorkbook.Sheets.Add(After:=Sheets(1))
ws.Name = "Temp_Graph_DPJR"
ws.Activate
'Paste to the temp worksheet
ActiveSheet.Paste
'Save as pdf from excel
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
filename:=pdf_filename, _
OpenAfterPublish:=False
我发现,在PDF中创建的图像略大于图形的实际尺寸。例如,图形的宽度应为2.65“.PDF中图形的大小为2.816,因此大约会显示.166”或1 Pica。
虽然我可以,而且可能不得不,只是将图像的尺寸减小到最初的.166“这看起来有点像hacky而且我只是想让图像的原始尺寸过来。
我发现如果我将图像粘贴到Chartsheet上,则会保留尺寸,但图像会在Chartsheet页面上成为位图。
当我创建pdf时,我拥有所有正确的设置。我没有利润,实际规模等。
有没有人见过这个?有人可以帮忙吗?我需要将图像作为pdf。
感谢您的帮助!
拉斯
答案 0 :(得分:0)
嗯,这很奇怪,不应该有所作为,但确实如此,到目前为止似乎有效。
在上述工作流程中,将EMF粘贴到工作表后,如果我选择该图像然后将其复制到新的图表,则会保留原始大小,以及图形的矢量性质。这是代码:
ret = DPlot_Command(doc, "[CopyPicture()]")
' copy the clip board contents to a new temp worksheet (under the covers)
'Hide the application
Application.ScreenUpdating = False
'Create a new temp worksheet
Set ws = ActiveWorkbook.Sheets.Add(After:=Sheets(1))
ws.Name = "Temp_Graph_DPJR"
ws.Activate
'Paste to the temp worksheet then select/copy that one
ActiveSheet.Paste
Selection.Copy
'Create a new temp chart
Set temp_chart = ActiveWorkbook.Charts.Add
'temp_chart.Name = "Temp_Chart"
'Set the linesytle of the border to none
temp_chart.ChartArea.Border.LineStyle = xlNone
'Paste the dplotjr graph to the chart sheet
'We had to do this as this maintained the size of the graph
'Dumb MS Excel worksheet
temp_chart.Paste
'Paste to the temp worksheet
'ActiveSheet.Paste
'Save as pdf from excel
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
filename:=pdf_filename, _
OpenAfterPublish:=False
几乎就像Excel确定粘贴是来自另一个应用程序并将位图粘贴到图表,但如果它确定它来自自身,它会粘贴为矢量图像。这可能是一个可能在未来消失的漏洞,但到目前为止似乎有效。
FWIW!