我们在服务中发现了一个似乎只存在于德语版Microsoft Windows中的错误。这是代码:
public Application OpenApplicationWithFile(object filename)
{
object _missing = System.Reflection.Missing.Value;
Application objWord = new Application();
objWord.DisplayAlerts = WdAlertLevel.wdAlertsNone;
objWord.Application.Visible = false;
objWord.Documents.Open(ref filename, ref _readOnly, ref _missing, ref _missing, ref _missing,
ref _missing,
ref _missing, ref _missing, ref _missing, ref _missing, ref _isVisible,
ref _missing,
ref _missing, ref _missing,
ref _missing, ref _missing);
return objWord;
}
调试器挂起在 Documents.Open()调用上,只是等待 - 不会触发任何类型的异常或错误。我们查看了事件日志,但只发现了以下内容:
Das Dokument'revert1002.doc'verursachte ein Problem,als es zuletzt geöffnetwurde。 MöchtenSiemitdemÖffnenfortfahren?
通过谷歌翻译转换为:
文档'convert1002.doc'上次导致严重错误 打开。你想继续开放吗?
因此,Word似乎只是向用户询问了一些东西,但是由于它是不可见的,因此用户无法完全单击是或否。将 objWord.Application.Visible 值更改为 true 不会改变任何内容 - 单词process仍然是不可见的。所以我的问题是如何调查这种情况的原因以及如何解决它。感谢您的任何意见。
答案 0 :(得分:3)
每个语言版本都会出现此错误,并且根据您使用的Word版本,可能不容易阻止隐藏的对话框。你使用哪个Word版本?
但首先,你的参数是一个(我认为)。 ReadOnly是第三个参数,这就是为什么_isVisible我不能正常工作。
我尝试将objWord.Application.Visible设置为true,它对我有用。也许别的东西也错了?
一个快速解决方案可能是将OpenAndRepair设置为true。它是13.参数,紧跟在后面是可见的。
否则看看这个链接: How To Dismiss a Dialog Box Displayed by an Office Application with Visual Basic
答案 1 :(得分:2)
此问题可能类似于此处讨论的内容Interop.Word Documents.Open stuck
当您尝试使用德语版本打开文件时,您是否尝试打开同一个文件?
尝试打开其他文件。
尝试设置的其他事项:
objWord.DisplayAlerts = WdAlertLevel.wdAlertsAll;
和/或尝试将openandrepair设置为true,如Uwe所述:
Object obOpenAndRepair = true;
Document doc = word.Documents.Open(ref filename, ref _readOnly,
ref _missing, ref _missing, ref _missing, ref _missing, ref _missing,
ref _missing, ref _missing, ref oMissing, ref _missing,ref _isVisible,
ref obOpenAndRepair, ref _missing, ref _missing, ref _missing);
希望这会有所帮助,祝你好运。