如何使用Python或R将Excel中带有可选文本的图形导出为PDF?
我用VBA在Excel中生成了大约500个图形,我需要将它们导出到pdf。这些图形有可供选择的文本,使盲人可以访问。当我使用VBA(ExportAsFixedFormat)生成pdf时,pdf中将丢失备选文本。python或R中是否有代码将图表从excel转换为pdf并保留备选文本如何使用Python或R将Excel中带有可选文本的图形导出为PDF?,python,r,excel,vba,pdf,Python,R,Excel,Vba,Pdf,我用VBA在Excel中生成了大约500个图形,我需要将它们导出到pdf。这些图形有可供选择的文本,使盲人可以访问。当我使用VBA(ExportAsFixedFormat)生成pdf时,pdf中将丢失备选文本。python或R中是否有代码将图表从excel转换为pdf并保留备选文本 如果我手动将图形保存为pdf,则备选文本将与图形一起保存在pdf文件中。但是,因为我有太多的图表,所以能够自动完成这项工作会很好 ActiveSheet.ExportAsFixedFormat Type:=xlTy
如果我手动将图形保存为pdf,则备选文本将与图形一起保存在pdf文件中。但是,因为我有太多的图表,所以能够自动完成这项工作会很好
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PdfFileName, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
VBA中的上述代码有助于创建pdf,但不保留备选文本。以下代码为
此工作簿中的每个工作表
(不包括任何工作表
)生成pdf文件:
子图表\u导出()
Const kPath As String=“D:\@D\u Trash\SO Questions\Output\\ Name.pdf”'根据需要更新
将oSht设置为对象,将sPath设置为字符串
使用此工作簿
对于每个oSht In.表
与奥什特
如果是oSht,则键入XLSHEEP
sPath=Replace(kPath,“#Name”,.Name)”根据需要更新
.ExportAsFixedFormat_
类型:=xlTypePDF_
文件名:=sPath_
质量:=xlQualityStandard_
IncludeDocProperties:=True_
IgnorePrintAreas:=假_
OpenAfterPublish:=False
结束如果:结束于:下一步:结束于
端接头
打开pdf文件后,同时按Shift+Ctrl+Y以激活pdf中的大声朗读
选项。然后同时按Shift+Ctrl+V以读取可选文本
前面的代码使用OP发布的同一部分,将图表导出为pdf文件,包括每个文件中的备选文本
这似乎表明问题可能是由于将可选文本
添加到图表
的方法造成的。当图表作为工作表
移动后,我找不到将可选文本
添加到图表
的方法,因此当图表
仍然是工作表中的对象(形状
)时,必须在将图表
移动到工作表
之前添加
使用此方法将可选文本
添加到每个图表
,然后再将其移动到工作表中
Private子图表\u Add\u AlternativeText()
Const kalttext As String=“这是对图形[#Name]”中的Alt文本的测试”,根据需要进行更新
将ws设置为工作表
Dim co作为图表对象
设置ws=ThisWorkbook。工作表(“数据”)根据需要更新
对于ws.ChartObjects中的每个co
co.shaperage.AlternativeText=根据需要进行替换(kaltText,#Name,#co.Name)'更新
下一个
端接头
或者使用此方法将可选文本
添加到每个图表
工作表中
Private子图表\u Add\u AlternativeText()
Const kWsName As String=“!Temp”
Const kalttext As String=“这是对图形[#Name]”中的Alt文本的测试”,根据需要进行更新
将wb设置为工作簿,ws设置为工作表
将oSht设置为对象,sp设置为形状
Dim sChName作为字符串,bIdx作为字节
应用
.EnableEvents=False
.DisplayAlerts=False
.ScreenUpdate=False
.Application.Calculation=xlCalculationManual
以
设置wb=ThisWorkbook
与wb
Rem添加临时工作表
出错时继续下一步
.工作表(kWsName).删除
错误转到0
设置ws=.Worksheets.Add(后面:=.Sheets(.Sheets.Count))
ws.Name=kWsName
Rem使用图表表
对于每个oSht In.表
与奥什特
如果是oSht,则键入XLSHEEP
Rem将图表移动到临时工作表
bIdx=.Index
sChName=.Name
.位置,其中:=xlLocationAsObject,名称:=kWsName
设置sp=ws.Shapes(1)
与sp
Rem将可选文本添加到形状(图表)
.AlternativeText=根据需要更新(kaltText,#Name,#sChName)
Rem将图表移动到图表工作表
.Chart.Location其中:=xlLocationAsNewSheet,名称:=sChName
wb.Sheets(sChName).Move Before:=wb.Sheets(bIdx)
结束于:结束如果:结束于:下一步:结束于
应用
.EnableEvents=True
.DisplayAlerts=True
.ScreenUpdate=True
.Application.Calculation=xlCalculationAutomatic
以
端接头
如果在保存时打开宏录制器,生成的代码是否与您提供的相同?“如果我手动将图形保存为pdf”-您是如何做到这一点的?您可以将图表复制/粘贴为工作表上的图片,然后将图片上的alt文本设置为与图表相同。然后删除图表。如果需要保留图表,可以在工作簿副本上执行此操作。图表图片上的alt文本将转到PDF…我想我是假设嵌入了图表。你在用图表吗?相关:回答得很好!我希望OP能成功。谢谢