2016-10-03 62 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即可 –