2016-10-03 25 views
2

我已经定义了一个范围内:C#的Excel互操作撤并工作不

Range range = ws.Range[ws.Cells[7, 1], ws.Cells[7, 4]]; 

range.Interior.Color = rgbBlueViolet; 

所以范围是正确的,因为我看到了彩色的检查。

但是当我做

range.Merge(true); 

我得到以下异常:

{System.Runtime.InteropServices.COMException(0x800A03EC):从HRESULT异常:0x800A03EC 在System.RuntimeType。 ForwardCallToInvokeMember(String memberName,BindingFlags flags,Object target,Int32 [] aWrapperTypes,MessageData & msgData) at Microsoft.Office.Interop.Excel.Range.Merge(Object Across)

我无法理解。

我的目标是合并前4列,看看哪些对我来说似乎合法。

感谢您的帮助 帕特里克

+0

您可以尝试从Excel手动合并范围,以查看错误是什么或可能'range.Merge(false);'。有几种情况下不允许合并。 – Slai

+0

唉,没有。手动它完美的作品。 – Patrick

回答

2

好了,问题是要合并的范围已经被第一选择。为此,工作表不能最小化。因此代码是:

Application app = new Application(); 
app.Visible = false; 
app.WindowState = XlWindowState.xlNormal; <---not minimized 
... 
Range r = ws.Range[ws.Cells[row + 7, 1], ws.Cells[row + 7, 5]]; 
r.Select(); <-----necessary 
r.Merge(false); 
+0

千谢!这发生在我在Windows 10,Excel 2016上,这个问题已经解决了。奇怪的是,在一些计算机上最小化窗口但没有其他窗口的情况下它工作正常。 Windows正在变得太快/聪明,因为它本身就是自己的。 –

+0

更多关于来自HRESULT的“蹩脚异常”:0x800A03EC http://stackoverflow.com/a/20424879/2559297 –

+0

另外我并不需要选择;只需设置app.WindowState = XlWindowState.xlNormal即可 –