【问题标题】:exe saves file ok, except when launched via Excel macroexe 保存文件正常,除非通过 Excel 宏启动
【发布时间】:2014-01-24 10:10:52
【问题描述】:
我是新来的
我有一个带有 WPF 的 c# 程序
- 生成一些 pdf
- 保存在同一目录中
- 然后打开pdf查看
-->直接启动exe时一切正常,没有错误。
但是当 .exe 由同一目录下的 excel 文件中的 excel 宏(shell 函数)启动时:excel 宏正常,程序启动正常,生成 pdf 正常,... pdf 自动打开和查看好的(所以让我觉得 pdf 被保存在某个地方)......当一切都关闭时......目录中没有 pdf!
这可能是一个明显的一般错误,但我无法弄清楚。
详细的帮助表示赞赏,因为我是新手
法布里斯
【问题讨论】:
标签:
c#
wpf
excel
.net-assembly
vba
【解决方案1】:
如果 Excel 使用不同的工作目录,文件将被放置在那里,而不是您期望的位置。如果是这种情况,可以使用下面的方法...
public string GetFullSaveName(string pdfName)
{
string myDirectoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
if (myDirectoryName != null)
{
string fullSaveName = Path.Combine(myDirectoryName, pdfName);
return fullSaveName;
}
throw new ApplicationException("Unable to locate assembly path");
}
此方法使用反射来找出您的应用程序在哪个目录中运行。它使用它来构建一个完全限定的路径,以便您的 pdf 文件将被写入一个可预测的位置。返回的路径是 应用程序 的工作目录,而不是 Excel 的。