1

今天早上我被叫来研究我不久前在 Excel 中构建的工具。该工具会生成一份报告,然后将其打印为 pdf。他们打电话给我的问题是,对于一位用户来说,PDF 中的行距是关闭的。我花了一段时间才弄清楚问题的原因。这是DPI。无法看到字体的用户将 Windows 的字体增加到 150%,并且由于某种原因导致 excel 以不同的方式导出为 pdf。

我知道问题出在哪里,但要求用户更改 DPI(强制用户注销)、重新登录、打开 excel 并运行我的宏,最后改回 DPI 不是一个合理的解决方案。我希望那里有一位大师能够帮助我找到解决方案。我不介意在程序运行时添加 VBA 代码来临时更改 DPI,但我不确定如何执行此操作或是否可能。

谢谢

为了更清楚地说明它的 Windows 7 和我所说的方面,如果您要更改分辨率,有一个链接询问您是否要“使文本和其他项目更大或更小”。滑块从默认的 100% 更改为 150%。

4

1 回答 1

1

我想不出克服这个问题的简单方法。您可以尝试创建一个 OLE 应用程序(例如在 C#、VB.NET 或 C++ 中),它在内部使用 Excel 来打开文件并将其导出为 PDF。然后,您可以在系统上创建一个新用户,并使用命令runas从批处理文件中午餐此应用程序。再次回到 Excel 中,您可以使用Shell命令午餐批处理文件。
工作流程将是:

1-使用VBA和Shell函数,以当前文件为参数从Excel调用批处理文件。
2- 批处理文件使用 runas 调用自定义应用程序 MyAppExportToPDF 并将当前 Excel 文件作为参数传递。
3- MyAppExportToPDF 使用 OLE 打开一个新的 Excel 实例,加载文件并将其导出为 PDF。

由于 MyAppExportToPDF 将在不同的用户中运行,因此新的 Excel 实例也应该在该用户下运行。该用户下的 DPI 设置应该是您需要的。

免责声明:这只是一个未经测试的想法。

于 2013-03-06T15:38:02.417 回答