2016-10-03 4 views
2

я определил ряд с:C# Excel Interop слияние не работает

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, Object target, Int32 [] aWrapperTypes, MessageData & msgData) в Microsoft.Office.Interop.Excel.Range.Merge (Object Through)

который не могу понять.

Моя цель состоит в объединении первых 4 столбцов, которые мне кажутся законными.

Спасибо за любую помощь Патрик

+0

Вы можете попробовать объединить диапазон вручную из Excel, чтобы узнать, что такое ошибка или может быть 'range.Merge (false);'. Есть несколько случаев, когда слияние не допускается. – Slai

+0

Увы, нет. В ручном режиме он отлично работает. – Patrick

ответ

2

Ok проблема была, что диапазон для объединения должен быть выбран первым. И для этого рабочий лист не может быть сведен к минимуму. Таким образом, код:

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

Подробнее о "crappy exception" от HRESULT: 0x800A03EC http://stackoverflow.com/a/20424879/2559297 –

+0

Также мне не нужно было выбирать; просто установите app.WindowState = XlWindowState.xlNormal –