Ошибка при вызове метода контекста range 1с

excel ☑ 0

mxs089

17.03.15

16:02

в excel включаю запись макроса, выделяю несколько ячеек с зажатым ctrl, смотрю что получилось:

Range(«W13:Y13,AA13:AC13»).Select

пишу в 1с:

Документ.Листы[0].Range(«W13:Y13,AA13:AC13»).Select();

ругается на метод Range, не правильно использую?

1

bolobol

17.03.15

16:12

Читаем справку — первая ссылка в яндексе:

Application.Union(Range(«Sheet1!A1:B2»), Range(«Sheet1!C3:D4»))

2

manyak

17.03.15

16:16

а какую ошибку выдает?

3

mxs089

17.03.15

16:18

Ошибка при вызове метода контекста (Range)

    Документ.Листы[0].Range(«W13:Y13,AA13:AC13»).Select();

по причине:

Произошла исключительная ситуация (0x800a03ec)

4

manyak

17.03.15

16:23

в документе у тебя должен лежать excel

попробуй

документ.Worksheets(«лист1»).Range(«A1,C3,E6,G8»).Select

или

документ.Worksheets(0).Range(«A1,C3,E6,G8»).Select

5

manyak

17.03.15

16:23

ну и про () в конце ессно не забудь :)

6

mxs089

17.03.15

16:40

WorkBooks = EXCEL.WorkBooks.Open(ИмяФайла);

WorkBooks.Worksheets(0).Range(«A1,C3,E6,G8»).Select();

Ошибка при вызове метода контекста (Worksheets)

    WorkBooks.Worksheets(0).Range(«A1,C3,E6,G8»).Select();

по причине:

Произошла исключительная ситуация (0x8002000b)

7

manyak

17.03.15

16:42

по имени листа пробывал обращаться?

8

manyak

17.03.15

16:43

Worksheets(«имя_листа»)

9

mxs089

17.03.15

16:46

(8) получилось по имени, теперь ошибка RANGE

Произошла исключительная ситуация (0x800a03ec)

10

mxs089

17.03.15

16:46

(3)

11

manyak

17.03.15

16:47

может у тебя куча excel мало ли не прибитых в памяти висит?

перегрузись от греза по дальше :)

так то код святая простота  — должен робить

12

mxs089

17.03.15

17:15

удалось выделить одну ячейку, если указываю список — происходит ошибка, вопрос, как выделить несколько ячеек?

13

bolobol

17.03.15

17:17

(12) Ты читать-то умеешь? Ответ в первом сообщении дан.

14

icrocodile

17.03.15

17:23

(12) вот так :

WorkBooks.Worksheets(1).Range(«A1;B1;C1;D1;E1;F1;G1;H1;I1»).Select();

15

icrocodile

17.03.15

17:24

и да, нумерация листов начинается с 1 :)

16

mxs089

17.03.15

17:25

(14) спасибо! да, разделитель ;

17

mxs089

18.03.15

14:31

я так понимаю там есть ограничение на количество выделенных ячеек, более 18 не получается выделить, я вижу есть еще метод Area, кто нить использовал?

Эксель.COMОбъект.Selection.Areas(«W13:Y13;AA13:AC13»)

Ошибка

по причине:

Типы не совпадают (1)

Добрый день ! Подскажите с чем может быть связана следующая ошибка: Произошла исключительная ситуация (0x800a03ec)

Из 1С (считай VBA) открываю эксель-файл и пытаюсь получить Адрес именованного диапазона для последующей записи/чтения

Код
    Адр = Sheet.Range(ИменованныйДиапазон).Address;   // ИменованныйДиапазон = "Критерии"

Получаю сообщение:

Цитата
Ошибка при вызове метода контекста (Range)
по причине: Произошла исключительная ситуация (0x800a03ec)

Этот же код работает без ошибок для других Именованных Диапазонов Эксель-файла. («блок», «грейд» и т.д.)
Но для конкретно этого диапазона (ИменованныйДиапазон = «Критерии») получаю ошибку. Причем это обычный диапазон 2х2
Может я его как то неправильно создал ? Или есть какие то опции в Экселе …

Показывать по
10
20
40
сообщений

Новая тема

Ответить

Sargez

Дата регистрации: 21.10.2010
Сообщений: 247

«Здравствуйте!<br><br>Никак не могу понять в чем причина. ругается вот на эту строчку:<br>Лист1.Rows(ТекСтрочка+»:»+ТекСтрочка).Select();<br><br>ошибка:<br><br><br>{Форма.Форма.Форма(212)}: Ошибка при вызове метода контекста (Select)<br> Лист1.Rows(ТекСтрочка+»:»+ТекСтрочка).Select();<br>по причине:<br>Произошла исключительная ситуация (Microsoft Office Excel): Метод Select из класса Range завершен неверно<br><br>В чем проблема, подскажите, плиз?<br><br> <br>тот же самый код на платформе 8.1 работает корректно не ругается….»

Thorvardr

Дата регистрации: 25.02.2005
Сообщений: 3082

Лист1.Activate перед этим

Sargez

Дата регистрации: 21.10.2010
Сообщений: 247

хм….действительно помогло спасибо! интересно почему на 8.1 без активации все с рабатвлово….

Thorvardr

Дата регистрации: 25.02.2005
Сообщений: 3082

«Понятия не имею, вы как Лист1 связывали с листом книги Excel?<br>Вот проверил по быстрому, все работает без проблем:<br>Попытка<br> ExcelServer = СоздатьОбъект(«Excel.Application»);<br> РабочаяКнига=ExcelServer.WorkBooks.Add();<br> РабочийЛист=РабочаяКнига.Sheets(«Лист1″);<br> РабочийЛист.Rows(10).Select();<br> ExcelServer.Visible=-1;<br> ExcelServer=0;<br>Исключение<br> ExcelServer=0;<br> Сообщить(ОписаниеОшибки());<br>КонецПопытки;<br><br>P.S. У вас еще в коде ошибка, скорее всего. Полагаю, что ТекСтрочка у вас наверняка число и когда вы делаете:<br>ТекСтрочка+»:»+ТекСтрочка получается непонятно что. Это неявное преобразование типов, так делать нельзя, надо так:<br>»»»»+ТекСтрочка+»:»+ТекСтрочка<br>или как я привык:<br>Строка(ТекСтрочка)+»:»+Строка(ТекСтрочка)<br>а вообще, в Rows(…) можно одно число подавать, как в моем примере тут»

Показывать по
10
20
40
сообщений

Читают тему:

  

mxs089

17.03.15 — 16:02

в excel включаю запись макроса, выделяю несколько ячеек с зажатым ctrl, смотрю что получилось:

Range(«W13:Y13,AA13:AC13»).Select

пишу в 1с:

Документ.Листы[0].Range(«W13:Y13,AA13:AC13»).Select();

ругается на метод Range, не правильно использую?

  

bolobol

1 — 17.03.15 — 16:12

Читаем справку — первая ссылка в яндексе:

Application.Union(Range(«Sheet1!A1:B2»), Range(«Sheet1!C3:D4»))

  

manyak

2 — 17.03.15 — 16:16

а какую ошибку выдает?

  

mxs089

3 — 17.03.15 — 16:18

Ошибка при вызове метода контекста (Range)

    Документ.Листы[0].Range(«W13:Y13,AA13:AC13»).Select();

по причине:

Произошла исключительная ситуация (0x800a03ec)

  

manyak

4 — 17.03.15 — 16:23

в документе у тебя должен лежать excel

попробуй

документ.Worksheets(«лист1»).Range(«A1,C3,E6,G8»).Select

или

документ.Worksheets(0).Range(«A1,C3,E6,G8»).Select

  

manyak

5 — 17.03.15 — 16:23

ну и про () в конце ессно не забудь :)

  

mxs089

6 — 17.03.15 — 16:40

WorkBooks = EXCEL.WorkBooks.Open(ИмяФайла);

WorkBooks.Worksheets(0).Range(«A1,C3,E6,G8»).Select();

Ошибка при вызове метода контекста (Worksheets)

    WorkBooks.Worksheets(0).Range(«A1,C3,E6,G8»).Select();

по причине:

Произошла исключительная ситуация (0x8002000b)

  

manyak

7 — 17.03.15 — 16:42

по имени листа пробывал обращаться?

  

manyak

8 — 17.03.15 — 16:43

Worksheets(«имя_листа»)

  

mxs089

9 — 17.03.15 — 16:46

(8) получилось по имени, теперь ошибка RANGE

Произошла исключительная ситуация (0x800a03ec)

  

mxs089

10 — 17.03.15 — 16:46

(3)

  

manyak

11 — 17.03.15 — 16:47

может у тебя куча excel мало ли не прибитых в памяти висит?

перегрузись от греза по дальше :)

так то код святая простота  — должен робить

  

mxs089

12 — 17.03.15 — 17:15

удалось выделить одну ячейку, если указываю список — происходит ошибка, вопрос, как выделить несколько ячеек?

  

bolobol

13 — 17.03.15 — 17:17

(12) Ты читать-то умеешь? Ответ в первом сообщении дан.

  

icrocodile

14 — 17.03.15 — 17:23

(12) вот так :

WorkBooks.Worksheets(1).Range(«A1;B1;C1;D1;E1;F1;G1;H1;I1»).Select();

  

icrocodile

15 — 17.03.15 — 17:24

и да, нумерация листов начинается с 1 :)

  

mxs089

16 — 17.03.15 — 17:25

(14) спасибо! да, разделитель ;

  

mxs089

17 — 18.03.15 — 14:31

я так понимаю там есть ограничение на количество выделенных ячеек, более 18 не получается выделить, я вижу есть еще метод Area, кто нить использовал?

Эксель.COMОбъект.Selection.Areas(«W13:Y13;AA13:AC13»)

Ошибка

по причине:

Типы не совпадают (1)

I am getting «HRESULT: 0x800A03EC» error when running Excel add-in with following code:

Excel.Range rng = ActiveSheet.Cells[x, y] as Excel.Range;                
string before = rng.Value2; 
string cleanV = System.Text.RegularExpressions.Regex.Replace(before, @"s+", "");
rng.set_Value(cleanV);

When error happens X and Y are set to 1, thus Excel range is not violated.
I searched extensively and tried a number of ways of setting the cell value (eg. Cells[x,y], range.set_Value()) but am at loss why this error happens and how to avoid it.

Any help is greatly appreciated.

Below are exception details:


System.Runtime.InteropServices.COMException was unhandled by user code
  HResult=-2146827284
  Message=Exception from HRESULT: 0x800A03EC
  Source=""
  ErrorCode=-2146827284
  StackTrace:
       at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData)
       at Microsoft.Office.Interop.Excel.Range.set_Value(Object RangeValueDataType, Object value)
       at ImportValidation.ThisAddIn.removeAnySpaces(Int32 x, Int32 y) in c:UsersdshevelevDocumentsVisual Studio 2012ProjectsImportValidationImportValidationThisAddIn.cs:line 354
       at ImportValidation.ThisAddIn.ReadHeaders(Hashtable columnAddress) in c:UsersdshevelevDocumentsVisual Studio 2012ProjectsImportValidationImportValidationThisAddIn.cs:line 123
       at ImportValidation.ThisAddIn.mapColumns() in c:UsersdshevelevDocumentsVisual Studio 2012ProjectsImportValidationImportValidationThisAddIn.cs:line 493
       at ImportValidation.Ribbon1.button6_Click(Object sender, RibbonControlEventArgs e) in c:UsersdshevelevDocumentsVisual Studio 2012ProjectsImportValidationImportValidationRibbon1.cs:line 55
       at Microsoft.Office.Tools.Ribbon.RibbonPropertyStorage.ControlActionRaise(IRibbonControl control)
       at Microsoft.Office.Tools.Ribbon.RibbonPropertyStorage.ButtonClickCallback(RibbonComponentImpl component, Object[] args)
       at Microsoft.Office.Tools.Ribbon.RibbonManagerImpl.Invoke(RibbonComponentCallback callback, Object[] args)
       at Microsoft.Office.Tools.Ribbon.RibbonMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
       at Microsoft.Office.Tools.Ribbon.RibbonManagerImpl.System.Reflection.IReflect.InvokeMember(String name, BindingFlags invokeAttr, Binder binder, Object target, Object[] args, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParameters)
  InnerException: 

I am getting «HRESULT: 0x800A03EC» error when running Excel add-in with following code:

Excel.Range rng = ActiveSheet.Cells[x, y] as Excel.Range;                
string before = rng.Value2; 
string cleanV = System.Text.RegularExpressions.Regex.Replace(before, @"s+", "");
rng.set_Value(cleanV);

When error happens X and Y are set to 1, thus Excel range is not violated.
I searched extensively and tried a number of ways of setting the cell value (eg. Cells[x,y], range.set_Value()) but am at loss why this error happens and how to avoid it.

Any help is greatly appreciated.

Below are exception details:


System.Runtime.InteropServices.COMException was unhandled by user code
  HResult=-2146827284
  Message=Exception from HRESULT: 0x800A03EC
  Source=""
  ErrorCode=-2146827284
  StackTrace:
       at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData)
       at Microsoft.Office.Interop.Excel.Range.set_Value(Object RangeValueDataType, Object value)
       at ImportValidation.ThisAddIn.removeAnySpaces(Int32 x, Int32 y) in c:UsersdshevelevDocumentsVisual Studio 2012ProjectsImportValidationImportValidationThisAddIn.cs:line 354
       at ImportValidation.ThisAddIn.ReadHeaders(Hashtable columnAddress) in c:UsersdshevelevDocumentsVisual Studio 2012ProjectsImportValidationImportValidationThisAddIn.cs:line 123
       at ImportValidation.ThisAddIn.mapColumns() in c:UsersdshevelevDocumentsVisual Studio 2012ProjectsImportValidationImportValidationThisAddIn.cs:line 493
       at ImportValidation.Ribbon1.button6_Click(Object sender, RibbonControlEventArgs e) in c:UsersdshevelevDocumentsVisual Studio 2012ProjectsImportValidationImportValidationRibbon1.cs:line 55
       at Microsoft.Office.Tools.Ribbon.RibbonPropertyStorage.ControlActionRaise(IRibbonControl control)
       at Microsoft.Office.Tools.Ribbon.RibbonPropertyStorage.ButtonClickCallback(RibbonComponentImpl component, Object[] args)
       at Microsoft.Office.Tools.Ribbon.RibbonManagerImpl.Invoke(RibbonComponentCallback callback, Object[] args)
       at Microsoft.Office.Tools.Ribbon.RibbonMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
       at Microsoft.Office.Tools.Ribbon.RibbonManagerImpl.System.Reflection.IReflect.InvokeMember(String name, BindingFlags invokeAttr, Binder binder, Object target, Object[] args, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParameters)
  InnerException: 

I found a possible solution here: http://www.made4dotnet.com/Default.aspx?tabid=141&aid=15

Edit:

If you automate Microsoft Excel with Microsoft Visual Basic .NET, Microsoft Visual C# .NET, or Microsoft Visual C++, you may receive the following errors when calling certain methods because the machine has the locale set to something other than US English (locale ID or LCID 1033):

Exception from HRESULT: 0x800A03EC

and/or

Old format or invalid type library

SOLUTION 1:


To get around this error you can set CurrentCulture to en-US when executing code related to Excel and reset back to your originale by using these 2 functions.

//declare a variable to hold the CurrentCulture
System.Globalization.CultureInfo oldCI;
//get the old CurrenCulture and set the new, en-US
void SetNewCurrentCulture()
{
  oldCI = System.Threading.Thread.CurrentThread.CurrentCulture;
  System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
}
//reset Current Culture back to the originale
void ResetCurrentCulture()
{
  System.Threading.Thread.CurrentThread.CurrentCulture = oldCI;
}

SOLUTION 2:


Another solution that could work, create a 1033 directory under Microsoft OfficeOffice11 (or your corresponding office-version), copy excel.exe to the 1033 directory, and rename it to xllex.dll.

Although you might solve the problem using one off these solutions, when you call the Excel object model in locales other than US English, the Excel object model can act differently and your code can fail in ways you may not have thought of. For example, you might have code that sets the value of a range to a date:

yourRange.Value2 = «10/10/09»

Depending on the locale this code can act differently resulting in Excel putting into the range any of the following values:

October 10, 2009
September 10, 2009
October 9, 2010

Icon Ex Номер ошибки: Ошибка 0x800A03EC
Название ошибки: Excel ? Error Object Returned Error Code 0X800A03Ec
Описание ошибки: Ошибка 0x800A03EC: Возникла ошибка в приложении Microsoft Excel. Приложение будет закрыто. Приносим извинения за неудобства.
Разработчик: Microsoft Corporation
Программное обеспечение: Microsoft Excel
Относится к: Windows XP, Vista, 7, 8, 10, 11

Проверка «Excel ? Error Object Returned Error Code 0X800A03Ec»

Обычно люди ссылаются на «Excel ? Error Object Returned Error Code 0X800A03Ec» как на ошибку времени выполнения (ошибку). Разработчики, такие как Microsoft Corporation, обычно проходят через несколько контрольных точек перед запуском программного обеспечения, такого как Microsoft Excel. К сожалению, такие проблемы, как ошибка 0x800A03EC, могут быть пропущены, и программное обеспечение будет содержать эти проблемы при выпуске.

Некоторые пользователи могут столкнуться с сообщением «Excel ? Error Object Returned Error Code 0X800A03Ec» при использовании Microsoft Excel. Когда это происходит, конечные пользователи могут сообщить Microsoft Corporation о наличии ошибок «Excel ? Error Object Returned Error Code 0X800A03Ec». Разработчик сможет исправить свой исходный код и выпустить обновление на рынке. Эта ситуация происходит из-за обновления программного обеспечения Microsoft Excel является одним из решений ошибок 0x800A03EC ошибок и других проблем.

Как триггеры Runtime Error 0x800A03EC и что это такое?

Сбой устройства или Microsoft Excel обычно может проявляться с «Excel ? Error Object Returned Error Code 0X800A03Ec» в качестве проблемы во время выполнения. Следующие три наиболее значимые причины ошибок выполнения ошибки 0x800A03EC включают в себя:

Ошибка 0x800A03EC Crash — Ошибка 0x800A03EC является хорошо известной, которая происходит, когда неправильная строка кода компилируется в исходный код программы. Это возникает, когда Microsoft Excel не реагирует на ввод должным образом или не знает, какой вывод требуется взамен.

Утечка памяти «Excel ? Error Object Returned Error Code 0X800A03Ec» — если есть утечка памяти в Microsoft Excel, это может привести к тому, что ОС будет выглядеть вялой. Есть некоторые потенциальные проблемы, которые могут быть причиной получения проблем во время выполнения, с неправильным кодированием, приводящим к бесконечным циклам.

Ошибка 0x800A03EC Logic Error — Логическая ошибка вызывает неправильный вывод, даже если пользователь дал действительные входные данные. Это видно, когда исходный код Microsoft Corporation содержит недостаток в обработке данных.

Такие проблемы Excel ? Error Object Returned Error Code 0X800A03Ec обычно вызваны повреждением файла, связанного с Microsoft Excel, или, в некоторых случаях, его случайным или намеренным удалением. Основной способ решить эти проблемы вручную — заменить файл Microsoft Corporation новой копией. Более того, поддержание чистоты реестра и его оптимизация позволит предотвратить указание неверного пути к файлу (например Excel ? Error Object Returned Error Code 0X800A03Ec) и ссылок на расширения файлов. По этой причине мы рекомендуем регулярно выполнять очистку сканирования реестра.

Типичные ошибки Excel ? Error Object Returned Error Code 0X800A03Ec

Частичный список ошибок Excel ? Error Object Returned Error Code 0X800A03Ec Microsoft Excel:

  • «Ошибка Excel ? Error Object Returned Error Code 0X800A03Ec. «
  • «Недопустимая программа Win32: Excel ? Error Object Returned Error Code 0X800A03Ec»
  • «Извините, Excel ? Error Object Returned Error Code 0X800A03Ec столкнулся с проблемой. «
  • «К сожалению, мы не можем найти Excel ? Error Object Returned Error Code 0X800A03Ec. «
  • «Отсутствует файл Excel ? Error Object Returned Error Code 0X800A03Ec.»
  • «Проблема при запуске приложения: Excel ? Error Object Returned Error Code 0X800A03Ec. «
  • «Не удается запустить Excel ? Error Object Returned Error Code 0X800A03Ec. «
  • «Отказ Excel ? Error Object Returned Error Code 0X800A03Ec.»
  • «Ошибка пути программного обеспечения: Excel ? Error Object Returned Error Code 0X800A03Ec. «

Эти сообщения об ошибках Microsoft Corporation могут появляться во время установки программы, в то время как программа, связанная с Excel ? Error Object Returned Error Code 0X800A03Ec (например, Microsoft Excel) работает, во время запуска или завершения работы Windows, или даже во время установки операционной системы Windows. При появлении ошибки Excel ? Error Object Returned Error Code 0X800A03Ec запишите вхождения для устранения неполадок Microsoft Excel и чтобы HelpMicrosoft Corporation найти причину.

Корень проблем Excel ? Error Object Returned Error Code 0X800A03Ec

Заражение вредоносными программами, недопустимые записи реестра Microsoft Excel или отсутствующие или поврежденные файлы Excel ? Error Object Returned Error Code 0X800A03Ec могут создать эти ошибки Excel ? Error Object Returned Error Code 0X800A03Ec.

Точнее, ошибки Excel ? Error Object Returned Error Code 0X800A03Ec, созданные из:

  • Недопустимая или поврежденная запись Excel ? Error Object Returned Error Code 0X800A03Ec.
  • Файл Excel ? Error Object Returned Error Code 0X800A03Ec поврежден от вирусной инфекции.
  • Excel ? Error Object Returned Error Code 0X800A03Ec ошибочно удален или злонамеренно программным обеспечением, не связанным с приложением Microsoft Excel.
  • Другое приложение, конфликтующее с Excel ? Error Object Returned Error Code 0X800A03Ec или другими общими ссылками.
  • Microsoft Excel (Excel ? Error Object Returned Error Code 0X800A03Ec) поврежден во время загрузки или установки.

Продукт Solvusoft

Загрузка
WinThruster 2022 — Проверьте свой компьютер на наличие ошибок.

Совместима с Windows 2000, XP, Vista, 7, 8, 10 и 11

Установить необязательные продукты — WinThruster (Solvusoft) | Лицензия | Политика защиты личных сведений | Условия | Удаление

Форум 1С : Все вопросы » Загрузка данных в 1С Загрузка данных в 1С

ЮлияЮ
25.05.2018 08:27 Прочитано: 3883

При загрузке данных из Eхcel выдаёт ошибку «Произошла исключительная ошибка (0х800а03ес)», что сделать? Я новичок, ещё не очень разбираюсь в программе.

Yandex
Возможно, вас также заинтересует

Реклама на портале

all4cf
28.05.2018 10:57 Ответ № 1

Ошибка говорит о том что не может прочитать данные с ячейки файла, проверьте все ли строки и колонки в файле заполнены

Подсказка: Для выделения Кода используйте (в редакторе).

Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.

[ Главная | FAQ: Все | 7.х | 8.х | 8.2 УП | 8.3 | Видео | Files | Forum | Freelance | Поиск | Реклама на HelpF.pro | Обратная связь ]
HelpF.pro [old Help1C.com] 2009-2023 Все материалы, размещенные на сайте, добавлены посетителями сайта или взяты из свободных источников. Подробнее…

Здравствуйте! Подскажите, пожалуйста! Загружаю из Excel данные, хочу обратиться к именованной области, выдает следующую ошибку: «Ошибка при вызове метода контекста (Cells): Произошла исключительная ситуация (0x800a03ec)
ФайлСтрок = Excel.Cells(2,1).SpecialCells(21).Row;
по причине:
Произошла исключительная ситуация (0x800a03ec)»

Процедура ОсновныеДействияФормыЗагрузить(Кнопка)

НомерКолонкиАртикул = ЭлементыФормы.ТабличныйДокумент.Область(«R2C1»;
НомерКолонкиНаименованияТовара = ЭлементыФормы.ТабличныйДокумент.Область(«R2C2»;
НомерКолонкиЕдиницаИзмерения = ЭлементыФормы.ТабличныйДокумент.Область(«R2C3»;
НомерКолонкиСтрана = ЭлементыФормы.ТабличныйДокумент.Область(«R2C4»;

//В разных версиях Excel получаются по-разному, поэтому сначала определим версию Excel
Excel = новый COMОбъект(«Excel.Application»;

Версия = Лев(Excel.Version,Найти(Excel.Version,».»-1);
Если Версия = «8» тогда
ФайлСтрок = Excel.Cells.CurrentRegion.Rows.Count;
ФайлКолонок = Макс(Excel.Cells.CurrentRegion.Columns.Count, 13);
Иначе
ФайлСтрок = Excel.Cells(2,1).SpecialCells(21).Row;
ФайлКолонок = Excel.Cells(2,1).SpecialCells(21).Column;
Конецесли;

// Выбираем данные из файла
Для а = Excel.Cells(2,1).SpecialCells(21).Row по ФайлСтрок Цикл

//Полуим данные из соответсвующих ячеек
Артикул = СокрЛП(Excel.Cells(а,Артикул).Value);
НаименованиеТовара = СокрЛП(Excel.Cells(а,НомерКолонкиНаименованияТовара).Value);
ЕдиницаИзмерения = СокрЛП(Excel.Cells(а,НомерКолонкиЕдиницаИзмерения).Value);

Товар = Справочники.Номенклатура.ПустаяСсылка();

// Ищем товар в справочнике по коду
Товар = Справочники.Номенклатура.НайтиПоКоду.Артикул;

// Если не нашли по коду, то ищем по наименованию
Если Товар.Пустая() Тогда
Товар = Справочники.Номенклатура.НайтиПоНаименованию.Наименование;
Конецесли;

//Если не нашли создаем новый
Если Товар.Пустая() Тогда
Товар = Справочники.Номенклатура.СоздатьЭлемент();
Товар.Наименование = НаименованиеТовара;
Товар.Артикул = Артикул;
Товар.БазоваяЕдиницаИзмерения = ЕдиницаИзмерения;
Товар.СтранаПроисхождения = НомерКолонкиСтрана;
Товар.Записать();
Конецесли;
КонецЦикла;

КонецПроцедуры

Сильно не пинать, только учусь. Делаю выгрузку прайсов в ексель. Есть заминка на куске кода Колонка = Прайс.Столбцы.Найти(«Примечание»); погуглил текст ошибки — несоответствие типов данных. но какое у меня может быть не соответствие не могу понять. передаю область, передаю ссылку, передаю представление ссылки — все поля текстовые. Подскажите кто в курсе, в какую сторону рыть хотя бы, а лучше носом ткните в ошибку)

а где это делается? В модуле объекта? Что есть ссылка в данном контексте?

это делается в модуле формы. ссылка формируется из «константы» + «код номенклатуры» + «.html» ссылка на номенклатуру на сайте.

ws.Hyperlinks.add нормально относится к первому параметру? Это же объект, не текст?

к первому параметру относится нормально. в отладчике проверяю в ws.cells(НомерСтроки + СчетчикТекРаздела, Колонка.НомерКолонки) все нормально.

Ошибка при вызове метода Add или Cells? Думается мне, что всё-таки дело в кривых параметрах именно Cells…

+6 Помести результат вызова Cells в переменную, тогда однозначно будет понятно, в чём ошибка: range = ws.cells(НомерСтроки + СчетчикТекРаздела, Колонка.НомерКолонки);

да я же говорю в cells все ок. в отладчике глядел — получается область, адрес ячейки верный. голову уже сломал — не могу понять где бок.

На вопрос из ответа мы так и не узнали.

Ошибки как таковой нет. отладчик проходит код и двигает дальше. только в єкселе в ячейках вместо данных ошибка «Произошла исключительная ситуация (0x800a03ec)»

а что макрос екселевский по этому поводу напишет? если гиперссылку лапками в клеточки под его микрофон?

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

  

mxs089

17.03.15 — 16:02

в excel включаю запись макроса, выделяю несколько ячеек с зажатым ctrl, смотрю что получилось:

Range(«W13:Y13,AA13:AC13»).Select

пишу в 1с:

Документ.Листы[0].Range(«W13:Y13,AA13:AC13»).Select();

ругается на метод Range, не правильно использую?

  

bolobol

1 — 17.03.15 — 16:12

Читаем справку — первая ссылка в яндексе:

Application.Union(Range(«Sheet1!A1:B2»), Range(«Sheet1!C3:D4»))

  

manyak

2 — 17.03.15 — 16:16

а какую ошибку выдает?

  

mxs089

3 — 17.03.15 — 16:18

Ошибка при вызове метода контекста (Range)

    Документ.Листы[0].Range(«W13:Y13,AA13:AC13»).Select();

по причине:

Произошла исключительная ситуация (0x800a03ec)

  

manyak

4 — 17.03.15 — 16:23

в документе у тебя должен лежать excel

попробуй

документ.Worksheets(«лист1»).Range(«A1,C3,E6,G8»).Select

или

документ.Worksheets(0).Range(«A1,C3,E6,G8»).Select

  

manyak

5 — 17.03.15 — 16:23

ну и про () в конце ессно не забудь :)

  

mxs089

6 — 17.03.15 — 16:40

WorkBooks = EXCEL.WorkBooks.Open(ИмяФайла);

WorkBooks.Worksheets(0).Range(«A1,C3,E6,G8»).Select();

Ошибка при вызове метода контекста (Worksheets)

    WorkBooks.Worksheets(0).Range(«A1,C3,E6,G8»).Select();

по причине:

Произошла исключительная ситуация (0x8002000b)

  

manyak

7 — 17.03.15 — 16:42

по имени листа пробывал обращаться?

  

manyak

8 — 17.03.15 — 16:43

Worksheets(«имя_листа»)

  

mxs089

9 — 17.03.15 — 16:46

(8) получилось по имени, теперь ошибка RANGE

Произошла исключительная ситуация (0x800a03ec)

  

mxs089

10 — 17.03.15 — 16:46

(3)

  

manyak

11 — 17.03.15 — 16:47

может у тебя куча excel мало ли не прибитых в памяти висит?

перегрузись от греза по дальше :)

так то код святая простота  — должен робить

  

mxs089

12 — 17.03.15 — 17:15

удалось выделить одну ячейку, если указываю список — происходит ошибка, вопрос, как выделить несколько ячеек?

  

bolobol

13 — 17.03.15 — 17:17

(12) Ты читать-то умеешь? Ответ в первом сообщении дан.

  

icrocodile

14 — 17.03.15 — 17:23

(12) вот так :

WorkBooks.Worksheets(1).Range(«A1;B1;C1;D1;E1;F1;G1;H1;I1»).Select();

  

icrocodile

15 — 17.03.15 — 17:24

и да, нумерация листов начинается с 1 :)

  

mxs089

16 — 17.03.15 — 17:25

(14) спасибо! да, разделитель ;

  

mxs089

17 — 18.03.15 — 14:31

я так понимаю там есть ограничение на количество выделенных ячеек, более 18 не получается выделить, я вижу есть еще метод Area, кто нить использовал?

Эксель.COMОбъект.Selection.Areas(«W13:Y13;AA13:AC13»)

Ошибка

по причине:

Типы не совпадают (1)

I am getting «HRESULT: 0x800A03EC» error when running Excel add-in with following code:

Excel.Range rng = ActiveSheet.Cells[x, y] as Excel.Range;                
string before = rng.Value2; 
string cleanV = System.Text.RegularExpressions.Regex.Replace(before, @"s+", "");
rng.set_Value(cleanV);

When error happens X and Y are set to 1, thus Excel range is not violated.
I searched extensively and tried a number of ways of setting the cell value (eg. Cells[x,y], range.set_Value()) but am at loss why this error happens and how to avoid it.

Any help is greatly appreciated.

Below are exception details:


System.Runtime.InteropServices.COMException was unhandled by user code
  HResult=-2146827284
  Message=Exception from HRESULT: 0x800A03EC
  Source=""
  ErrorCode=-2146827284
  StackTrace:
       at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData)
       at Microsoft.Office.Interop.Excel.Range.set_Value(Object RangeValueDataType, Object value)
       at ImportValidation.ThisAddIn.removeAnySpaces(Int32 x, Int32 y) in c:UsersdshevelevDocumentsVisual Studio 2012ProjectsImportValidationImportValidationThisAddIn.cs:line 354
       at ImportValidation.ThisAddIn.ReadHeaders(Hashtable columnAddress) in c:UsersdshevelevDocumentsVisual Studio 2012ProjectsImportValidationImportValidationThisAddIn.cs:line 123
       at ImportValidation.ThisAddIn.mapColumns() in c:UsersdshevelevDocumentsVisual Studio 2012ProjectsImportValidationImportValidationThisAddIn.cs:line 493
       at ImportValidation.Ribbon1.button6_Click(Object sender, RibbonControlEventArgs e) in c:UsersdshevelevDocumentsVisual Studio 2012ProjectsImportValidationImportValidationRibbon1.cs:line 55
       at Microsoft.Office.Tools.Ribbon.RibbonPropertyStorage.ControlActionRaise(IRibbonControl control)
       at Microsoft.Office.Tools.Ribbon.RibbonPropertyStorage.ButtonClickCallback(RibbonComponentImpl component, Object[] args)
       at Microsoft.Office.Tools.Ribbon.RibbonManagerImpl.Invoke(RibbonComponentCallback callback, Object[] args)
       at Microsoft.Office.Tools.Ribbon.RibbonMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
       at Microsoft.Office.Tools.Ribbon.RibbonManagerImpl.System.Reflection.IReflect.InvokeMember(String name, BindingFlags invokeAttr, Binder binder, Object target, Object[] args, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParameters)
  InnerException: 

I found a possible solution here: http://www.made4dotnet.com/Default.aspx?tabid=141&aid=15

Edit:

If you automate Microsoft Excel with Microsoft Visual Basic .NET, Microsoft Visual C# .NET, or Microsoft Visual C++, you may receive the following errors when calling certain methods because the machine has the locale set to something other than US English (locale ID or LCID 1033):

Exception from HRESULT: 0x800A03EC

and/or

Old format or invalid type library

SOLUTION 1:


To get around this error you can set CurrentCulture to en-US when executing code related to Excel and reset back to your originale by using these 2 functions.

//declare a variable to hold the CurrentCulture
System.Globalization.CultureInfo oldCI;
//get the old CurrenCulture and set the new, en-US
void SetNewCurrentCulture()
{
  oldCI = System.Threading.Thread.CurrentThread.CurrentCulture;
  System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
}
//reset Current Culture back to the originale
void ResetCurrentCulture()
{
  System.Threading.Thread.CurrentThread.CurrentCulture = oldCI;
}

SOLUTION 2:


Another solution that could work, create a 1033 directory under Microsoft OfficeOffice11 (or your corresponding office-version), copy excel.exe to the 1033 directory, and rename it to xllex.dll.

Although you might solve the problem using one off these solutions, when you call the Excel object model in locales other than US English, the Excel object model can act differently and your code can fail in ways you may not have thought of. For example, you might have code that sets the value of a range to a date:

yourRange.Value2 = «10/10/09»

Depending on the locale this code can act differently resulting in Excel putting into the range any of the following values:

October 10, 2009
September 10, 2009
October 9, 2010

Содержание

  1. выгрузка в ексель дает ошибку Произошла исключительная ситуация (0x800a03ec)
  2. Ошибка исключение (0x800a03ec)
  3. ошибка (0x800a03ec)
  4. v8: Работа с Excel через com
  5. Ошибка Excel HRESULT: 0x800A03EC при попытке получить диапазон с именем ячейки
  6. 11 ответов

Процедура Отчет(ТабДок, ДатаВыгрузки, СчетВыгрузки) Экспорт

// Попытка
Попытка
// Загрузка объекта Microsoft Excel
Состояние(«Выгрузка данных из 1С в Microsoft Excel. «);
ExcelПриложение = Новый COMОбъект(«Excel.Application»);

Исключение
Сообщить(«Ошибка при запуске Microsoft Excel.»
+ Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
Возврат;
КонецПопытки;

// Создадим книгу, по умолчанию в ней уже есть листы
Книга = ExcelПриложение.WorkBooks.Add();

// Используем первый лист книги Excel
ТекЛист = Книга.WorkSheets(1);

Макет = ВнешняяОбработкаОбъект.ПолучитьМакет(«Отчет»);
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| ХозрасчетныйОстатки.Счет,
| ХозрасчетныйОстатки.Организация,
| ХозрасчетныйОстатки.Валюта,
| ХозрасчетныйОстатки.Подразделение,
| ХозрасчетныйОстатки.Номенклатура,
| ХозрасчетныйОстатки.Склад,
| ХозрасчетныйОстатки.СуммаОстатокДт,
| ХозрасчетныйОстатки.СуммаОстатокКт,
| ХозрасчетныйОстатки.ВалютнаяСуммаОстатокДт,
| ХозрасчетныйОстатки.ВалютнаяСуммаОстатокКт,
| ХозрасчетныйОстатки.КоличествоОстатокДт,
| ХозрасчетныйОстатки.КоличествоОстатокКт,
| ХозрасчетныйОстатки.Субконто1.Ссылка КАК Субконто1,
| ХозрасчетныйОстатки.Субконто2.Ссылка КАК Субконто2,
| ХозрасчетныйОстатки.Субконто3.Ссылка КАК Субконто3,
| ХозрасчетныйОстатки.Субконто4.Ссылка КАК Субконто4
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаВыгрузки, Счет = &СчетВыгрузки, , ) КАК ХозрасчетныйОстатки
|ГДЕ
| ХозрасчетныйОстатки.Организация = &Организация»;

Запрос.УстановитьПараметр(«ДатаВыгрузки», КонецДня(ДатаВыгрузки));
Запрос.УстановитьПараметр(«СчетВыгрузки», СчетВыгрузки);
Запрос.УстановитьПараметр(«Организация», Справочники.Организации.НайтиПоКоду(«00001»));
Результат = Запрос.Выполнить();

ОбластьЗаголовок = Макет.ПолучитьОбласть(«Заголовок»);
ОбластьПодвал = Макет.ПолучитьОбласть(«Подвал»);
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть(«ШапкаТаблицы»);
ОбластьПодвалТаблицы = Макет.ПолучитьОбласть(«ПодвалТаблицы»);
ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть(«Детали»);

ТабДок.Очистить();
ТабДок.Вывести(ОбластьЗаголовок);
ТабДок.Вывести(ОбластьШапкаТаблицы);

ВыборкаДетали = Результат.Выбрать();
а = 0;

Пока ВыборкаДетали.Следующий() Цикл
а = а+1;
ТекЛист.Cells(а, 2).Value = ВыборкаДетали.Счет;
ТекЛист.Cells(а, 7).Value = ВыборкаДетали.Организация;
ТекЛист.Cells(а, 8).Value = ВыборкаДетали.Валюта;
ТекЛист.Cells(а, 9).Value = ВыборкаДетали.Подразделение;
ТекЛист.Cells(а, 10).Value = ВыборкаДетали.СуммаОстатокДт;
ТекЛист.Cells(а, 11).Value = ВыборкаДетали.СуммаОстатокКт;
ТекЛист.Cells(а, 12).Value = ВыборкаДетали.ВалютнаяСуммаОстатокДт;
ТекЛист.Cells(а, 13).Value = ВыборкаДетали.ВалютнаяСуммаОстатокКт;
ТекЛист.Cells(а, 14).Value = ВыборкаДетали.КоличествоОстатокДт;
ТекЛист.Cells(а, 15).Value = ВыборкаДетали.КоличествоОстатокКт;

ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетали);
Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(ВыборкаДетали.Субконто1)) = Истина Тогда
ОбластьДетальныхЗаписей.Параметры.Субконто_1 = ВыборкаДетали.Субконто1.Код;
ТекЛист.Cells(а, 3).Value = ВыборкаДетали.Субконто1.Код;

ИначеЕсли Перечисления.ТипВсеСсылки().СодержитТип(ТипЗнч(ВыборкаДетали.Субконто1)) = Истина Тогда
ОбластьДетальныхЗаписей.Параметры.Субконто_1 = ВыборкаДетали.Субконто1;
ТекЛист.Cells(а, 3).Value = ВыборкаДетали.Субконто1;

КонецЕсли;
Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(ВыборкаДетали.Субконто2)) = Истина Тогда
ОбластьДетальныхЗаписей.Параметры.Субконто_2 = ВыборкаДетали.Субконто2.Код;
ТекЛист.Cells(а, 4).Value = ВыборкаДетали.Субконто2.Код;

ИначеЕсли Перечисления.ТипВсеСсылки().СодержитТип(ТипЗнч(ВыборкаДетали.Субконто2)) = Истина Тогда
ОбластьДетальныхЗаписей.Параметры.Субконто_2 = ВыборкаДетали.Субконто2;
ТекЛист.Cells(а, 4).Value = ВыборкаДетали.Субконто2;

Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(ВыборкаДетали.Субконто3)) = Истина Тогда
ОбластьДетальныхЗаписей.Параметры.Субконто_3 = ВыборкаДетали.Субконто3.Код;
ТекЛист.Cells(а, 5).Value = ВыборкаДетали.Субконто3.Код;

ИначеЕсли Перечисления.ТипВсеСсылки().СодержитТип(ТипЗнч(ВыборкаДетали.Субконто3)) = Истина Тогда
ОбластьДетальныхЗаписей.Параметры.Субконто_3 = ВыборкаДетали.Субконто3;
ТекЛист.Cells(а, 5).Value = ВыборкаДетали.Субконто3;

Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(ВыборкаДетали.Субконто4)) = Истина Тогда
ОбластьДетальныхЗаписей.Параметры.Субконто_4 = ВыборкаДетали.Субконто4.Код;
ТекЛист.Cells(а, 6).Value = ВыборкаДетали.Субконто4.Код;

ИначеЕсли Перечисления.ТипВсеСсылки().СодержитТип(ТипЗнч(ВыборкаДетали.Субконто4)) = Истина Тогда
ОбластьДетальныхЗаписей.Параметры.Субконто_4 = ВыборкаДетали.Субконто4 ;
ТекЛист.Cells(а, 6).Value = ВыборкаДетали.Субконто4;

Источник

Ошибка исключение (0x800a03ec)

При выгрузке в документ ексель должны записываться формулы, но выдает ошибку (0x800a03ec). кто сталкивался, на что он ругается!?

ХФорматное = Формат(Х, «ЧГ=»);

заменить в формулах Х на ХФорматное для начала.

не помогло((((
КнигаОтчетов.Cells(Х,ЯчейкаКоличества).FormulaLocal = «=Сумма(С «+ХФорматное+» : «+ Сред(Алфавит,СчКолонок,1)+ХФорматное+»)»;
по причине:
Произошла исключительная ситуация (0x800a03ec)

(8)КнигаОтчетов.Cells(Х,ЯчейкаКоличества).FormulaLocal = «=Сумма(С «+Х+» : «+ (Сред(Алфавит,СчКолонок,1))+Х+»)»;

Вот здесь.Но в чем ошибка не понятно.Ошибка исключение (0x800a03ec).Фиг знает, о чем речь в этой ошибке!

(16)Может еще подскажешь почему метод SaveAs не срабатывает!?

<ВнешняяОбработка.ВыгрузитьПрайсСкартинками.Форма.Форма.Форма(268)>: Ошибка при вызове метода контекста (SaveAs)
КнигаОтчетов.SaveAs(ПолныйПутьКФайлу);
по причине:
Произошла исключительная ситуация (Microsoft Office Excel): Ошибка доступа к документу ‘Новая папкаПрайс.xls’, допускающему доступ только для чтения.

Тоже с таким столкнулся, та же ошибка:
Эксель английский

=IF(RC[1]=1;1;2) — выдает ошибку
=SUM(RC[1]) — работает.

Formulal
FormulaR1C1
FormulaLocal
FormulaR1C1Local

причем на некоторых машинах на клиенте некоторые варианты срабатывают..
а на сервере вообще отказывается.. куда копать? не понимаю, почему некоторые функции работают Sum, sin, а некоторые (if, sumif) — нет.. а если печатать в эксель файл, а не через COM — работает..

Источник

ошибка (0x800a03ec)

загружаю фаил «.xls» через переработаную обработку клиент банка.

видает вот такую ошибку.

Не возможно загрузить данные из листа, по причине: <ВнешняяОбработка.КлиентБанк.МодульОбъекта(4182)>: Ошибка при вызове метода контекста (Cells): Произошла исключительная ситуация (0x800a03ec)

вигружаю из клиент банка ОТП в стандартную бухгалтерию для Украини (1.2.13.4)
1С:Предприятие 8.2 (8.2.17.169)

вот в етой строке ошибка:

а вот код цикла

Для НомСтр = НачСтр По НашЛист.Cells(1,1).SpecialCells(11).Row Цикл
ДатаИзФайлаСтр = СокрЛП(НашЛист.Cells(НомСтр,КолДатаДокумента).Text);
ДатаИзФайла = Дата(Лев(ДатаИзФайлаСтр,4),Сред(ДатаИзФайлаСтр,6,2),Прав(ДатаИзФайлаСтр,2));
Если (ДатаИзФайла =НачПериода) Тогда

Таб = ДокументыДляИмпорта.Добавить();
Таб.Операция = «ПЛАТЕЖНОЕПОРУЧЕНИЕ»;
Таб.Номер = СокрЛП(НашЛист.Cells(НомСтр,КолНомерДокумента).Text);
Таб.Дата = ПривестиЗначение(ДатаИзФайла);
Таб.Сумма = Формат(Число(НашЛист.Cells(НомСтр,КолСуммаДокумента).Value),»ЧГ=0″);
Таб.НазначениеПлатежа = СокрЛП(НашЛист.Cells(НомСтр,КолКомментарий).Text);
Таб.ДатаСписано = ПривестиЗначение(ДатаИзФайла);
Таб.ДатаПоступило = ПривестиЗначение(ДатаИзФайла);

Таб.Плательщик = СокрЛП(НашЛист.Cells(НомСтр,КолНаименование_А).Value);
Таб.ПлательщикСчет = Формат(НашЛист.Cells(НомСтр,КолСчет_А).Value,»ЧГ=0″);
Таб.ПлательщикМФО = Формат(НашЛист.Cells(НомСтр,КолМФО_А).Value,»ЧГ=0″);
Таб.ПлательщикОКПО = Формат(НашЛист.Cells(НомСтр,КолОКПО_А).Value,»ЧГ=0″);

Таб.Получатель = СокрЛП(НашЛист.Cells(НомСтр,КолНаименование_Б).Value);
Таб.ПолучательСчет = Формат(НашЛист.Cells(НомСтр,КолСчет_Б).Value,»ЧГ=0″);
Таб.ПолучательМФО = Формат(НашЛист.Cells(НомСтр,КолМФО_Б).Value,»ЧГ=0″);
Таб.ПолучательОКПО = Формат(НашЛист.Cells(НомСтр,КолОКПО_Б).Value,»ЧГ=0″);

РаспознатьДанныеВСтрокеДокумента(Таб);
НомерСтроки = НомерСтроки + 1;
Таб.НомерСтроки = НомерСтроки;
// Для каждого реквизита (= колонка) надо проверить на пустое значение
Для каждого КолонкаИмпорта из ДокументыДляИмпорта.Колонки Цикл
ПроверитьНаПустоеЗначениеИмпорта(Таб, КолонкаИмпорта.Имя, КолонкаИмпорта.Заголовок);
КонецЦикла;

Источник

v8: Работа с Excel через com

Доброго времени суток!
Задача стоит такая — имеется некий файлик в Exel (заготовка) в которую нужно залить определенные данные, а именно организовать поиск скажем по «Колонка1», найти искомое значение скажем в «строка12» и в ячейку «Строка12:Колонка2» установить определенное значение.

Одно время работал с Word-ом (писал/читал данные), а вот с Exel-ем только умею извлекать данные. перетягивать в ТЗ. Наведите плиз на пример работы с Exel-ем.

«а вот с Exel-ем только умею извлекать данные»

Меняешь местами переменные. и вуаля.

(0)
Попытка
// Загрузка Microsoft Excel
Состояние(«Загрузка Microsoft Excel. «);
ExcelПриложение = Новый COMОбъект(«Excel.Application»);
Исключение
Сообщить(«Ошибка при загрузке Microsoft Excel.» + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
Возврат;
КонецПопытки;

Попытка
// Открытие файла Microsoft Excel
Состояние(«Открытие файла Microsoft Excel. «);
ExcelФайл = ExcelПриложение.WorkBooks.Open(ИмяФайла);
Состояние(«Обработка файла Microsoft Excel. «);
НашЛист = ExcelФайл.Sheets(1);
xlCellTypeLastCell = 11;
ExcelПоследняяСтрока = НашЛист.Cells.SpecialCells(xlCellTypeLastCell).Row;

А потом обращаться к ячейкам как:

НашЛист.Cells(вертикаль, горизонталь) = 666

(4) извлечь данные понял как ,а как ЗАПИСАТЬ значение в ячейку?? так прокатывает:

И как потом сохранить документ?

Люди, чулавеки. ну подскажите еще один момент! Вот есть такая штука:

Область = Ех.Sheets(1).Range(Ех.Sheets(1).Cells(НомерПервойСтроки,НомерПервойКолонки), Ех.Sheets(1).Cells(ВсегоСтрок,ВсегоКолонок));

Таким образом получается массив значений, который выгружается СТАНДАРТНЫМИ средствами. а есть ли подобная штука для ЗАГРУЗКИ. Т.е. так же выделяю область (скажем одну колонку) и загружаю туда из массива данные.

П.С. тупо «Область.Value.Загрузить()» не прокатывает ,пишет нет такого метода 🙁

То есть на твоем примере получается

(22) Ну у тебя в массиве как есть так и вставит

1 1 1
2 2 2
3 3 3

В таком виде в exсel и пойдет. Ты попробуй сделать, посмотри что будет

<Форма.Форма(38)>: Ошибка при установке значения атрибута контекста (Value): Произошла исключительная ситуация (0x800a03ec)
Область.Value = ТЗ.ВыгрузитьКолонку(«Колонка7»);
по причине:
Произошла исключительная ситуация (0x800a03ec)

Вот это «ТЗ.ВыгрузитьКолонку(«Колонка7″)» возвращает массив верно! Значит ошибка при присвоении значения.

Вот так выбираю:

Область = Ех.Sheets(1).Range(Ех.Sheets(1).Cells(НомерПервойСтроки,7), Ех.Sheets(1).Cells(ВсегоСтрок,7));
Мас = ТЗ.ВыгрузитьКолонку(«Колонка7»);
Область.Value = мас;
Ех.Sheets(1).save();

все равно таже самая ошибка

(29)
Мас2 = Новый COMSafeArray(Мас,»VT_R8″);
Область.Value = мас;

А почему у тебя размер 7*7 а ты выгружаешь колонку?

Вот смотри только сделал — все работает:

Попытка
Эксель = Новый COMОбъект («Excel.Application»);
Исключение
Возврат;
КонецПопытки;
Книга = Эксель.WorkBooks.Add();
Лист = Книга.WorkSheets(1);
Лист = Книга.Sheets.Add();
Массив=Новый массив (4,4);
Массив[0][0]=2; Массив[0][1]=1; Массив[0][2]=1; Массив[0][3]=4;
Массив[1][0]=2; Массив[1][1]=2; Массив[1][2]=5; Массив[1][3]=2;
Массив[2][0]=0; Массив[2][1]=3; Массив[2][2]=3; Массив[2][3]=0;
Массив[3][0]=5; Массив[3][1]=4; Массив[3][2]=6; Массив[3][3]=4.45;
Массив2 = Новый COMSafeArray(Массив,»VT_R8″);
Лист.Range(Лист.Cells(1,1),Лист.Cells(4,4)).Value=Массив2;
Попытка
Книга.SaveAs();
Исключение
Возврат;
КонецПопытки;

(31) я не 7*7 выгружаю.

так я выделил 1 колонку. т.е. 1*7 : 5:7 . вроде как так 🙂

Мас2 = Новый COMSafeArray(Мас,»VT_R8″);
Область.Value = мас;

я так полагаю должно быть:
Область.Value = мас2;
.

(32) Ну да, Мас2. Я опечатался.

И что , заработало?

Мас2 = Новый COMSafeArray(Мас,»VT_R8″);

работает. А что это за объект такой?

массив для екселя «повернут» должен быть

Блин, хоть убей не могу сохранить файл.

и все действия производил через «Ех», а как теперь внесенные изменения сохранить. на «WorkBooks» у меня ругается

но вернее будет в твоем разе
Книга =ПолучитьCOMОбъект(Элементыформы.ПолеИмениФайла.Значение);
.
Книга.SaveAs(.

.
Область = Ех.Sheets(1).Range(Ех.Sheets(1).Cells(НомерПервойСтроки,7), Ех.Sheets(1).Cells(ВсегоСтрок,7));
.

то ошибок никаких НЕТ, но весь файл у меня ОЧИЩАЕТСЯ.

Источник

Ошибка Excel HRESULT: 0x800A03EC при попытке получить диапазон с именем ячейки

Я работаю с проектом Window Service. которые должны записывать данные на лист в файл Excel в последовательности раз.

но иногда, просто иногда, служба выбрасывает исключение «исключение из HRESULT: 0x800A03EC», пытаясь получить диапазон с именем ячейки.

Я поставил код открытия листа excel и получения ячейки здесь.

  • ОС: Windows server 2003 Office:
  • Microsoft Office 2003 с пакетом обновления 2

1: Открытие листа excel

2: Получение ячейки для записи

11 ответов

код ошибки 0x800A03EC (или -2146827284) означает NAME_NOT_FOUND; другими словами, вы попросили что-то, и Excel не может его найти.

это общий код, который может применяться ко многим вещам, которые он не может найти, например, используя свойства, которые не действительны в то время, как PivotItem.SourceNameStandard бросает это, когда PivotItem не имеет примененного фильтра. Worksheets[«BLAHBLAH»] выдает это, когда лист не существует и т. д. В общем, вы просите что-то с определенным именем, и это не существовать. Что касается того, почему, это займет некоторое копание с вашей стороны.

проверьте, что ваш лист определенно имеет диапазон, который вы просите, или что .CellName определенно возвращает имя диапазона, который вы просите.

Я столкнулся с этой ошибкой, потому что пытался написать строку в ячейку, которая начиналась с «=».

решение состояло в том, чтобы поставить «‘» (апостроф) перед знаком равенства, что является способом сказать excel, что вы на самом деле не пытаетесь написать формулу, а просто хотите напечатать знак равенства.

Edit:

Если вы автоматизируете Microsoft Excel с Microsoft Visual Basic .NET, Microsoft Visual C# .NET или Microsoft Visual C++, при вызове определенных методов могут появиться следующие ошибки, так как на компьютере установлен язык, отличный от US English (locale ID или LCID 1033):

исключение из HRESULT: 0x800A03EC

старый формат или недопустимая библиотека типов

чтобы обойти эту ошибку, вы можете установить CurrentCulture в en-US при выполнении кода, связанного с Excel, и сбросить его обратно в originale с помощью этих 2 функций.

другое решение, которое может работать, создайте каталог 1033 в Microsoft OfficeOffice11 (или соответствующую версию office), копировать excel.exe в каталог 1033 и переименуйте его в xllex.файл DLL.

хотя вы можете решить проблему, используя одно из этих решений, при вызове объектной модели Excel в других местах, чем английский язык США, объектная модель Excel может действовать по-другому, и ваш код может потерпеть неудачу способами, о которых вы, возможно, не думали. Например, у вас может быть код, который устанавливает значение диапазона на дату:

в зависимости от локали этот код может действовать по-разному, в результате чего Excel помещает в диапазон любое из следующих значений:

10 октября 2009 10 сентября 2009 года 9 октября 2010 г.

Я получил ошибку с пробелом в имени листа:

я исправил это, поставив одинарные кавычки вокруг имен листов с пробелами:

У меня была эта проблема, когда я пытался использовать диапазон.AddComment (функция). Я смог решить эту проблему, позвонив в range.ClearComment() перед добавлением комментария.

значение полностью без документов ошибка 800A03EC (позор Microsoft!) что-то вроде «операция не поддерживается».

Это может случиться

  • при открытии документа с содержимым, созданным более новой версией Excel, которую текущая версия Excel не понимает.
  • при сохранении документа по тому же пути, Откуда вы его загрузили (файл уже открыт и заблокирован)

но в основном вы увидите эту ошибку из-за severe ошибки в Excel.

  • например Microsoft.Офис.Взаимодействие.Превосходить.Картинка имеет свойство «включено». Когда вы вызываете его, вы должны получить значение bool. Но вместо этого вы получаете ошибку 800A03EC. Это жучок.
  • и есть очень жирная ошибка в Exel 2013 и 2016: когда вы автоматизируете процесс Excel и установите Application.Visible=true и Application.WindowState = XlWindowState.xlMinimized тогда вы получите сотни ошибок 800A03EC из разных функций (например, Диапазон.Merge(), Флажок.Текст, Форма.TopLeftCell, Форму.Locked и многие другие). Эта ошибка не существует в Excel 2007 и 2010.

Я столкнулся с этим кодом ошибки при перечислении имен и вызове рабочего листа.get_Range(имя). Кажется, это происходит, когда имя не применяется к диапазону, в моем случае это имя макроса.

Источник

Понравилась статья? Поделить с друзьями:
  • Ошибка при вызове конструктора картинка
  • Ошибка при входе на фейсит
  • Ошибка получения кода активации кинопаб
  • Ошибка плагин недоступен сбербанк аст
  • Ошибка при входе на сервер раст disconnected