19.09.06 — 13:50
Поддерживаю удаленно 1С Торговля 9.0. Выслал им свой внешний отчет с выводом в Excel. Дает ошибку:
Excel = СоздатьОбъект(«Excel.Application»)
Неудачная попытка создания объекта (Excel.Application)
Спрашивал, есть ли у них Excel, говорят есть и работает. Нет мыслей что может быть. Кто знает?
1 — 19.09.06 — 13:52
1. авирь
2. ОО
3. нет прав на ОЛЕ
…
2 — 19.09.06 — 13:52
(0) Пусть закроют Excel
3 — 19.09.06 — 13:57
(1) Нельзя узнать как регулируются права на OLE и что есть «ОО»?
4 — 19.09.06 — 13:58
(3) OO — Open Office
5 — 19.09.06 — 14:13
(4) Ты его по OLE начился создавать? Тогда покажи пример.
6 — 19.09.06 — 15:07
(5) Таб.Записать(Файл,»XLS»);
Excel = СоздатьОбъект(«Excel.Application»);
Excel.SheetsInNewWorkbook = 1;
ФайлExcel = Excel.Workbooks.Open(Файл);
Excel.DisplayAlerts = -1;
ФайлExcel.Save();
Excel.Visible=-1;
ФайлExcel.Windows(1).Activate();
Но тут проблемная строчка «Excel = СоздатьОбъект(«Excel.Application»);» практически первая, до остальных даже не доходит.
7 — 19.09.06 — 15:11
А Excel установлен?
P.S:а зачем такой огород?
8 — 19.09.06 — 15:14
Попробуй
ЗапуститьПриложение(Файл);
9 — 19.09.06 — 15:14
(7) Excel установлен. А как проще?
10 — 19.09.06 — 15:15
Можешь у себя проверить через формульный калькулятор.
ЗапуститьПриложение(«C:test.xls»)
11 — 19.09.06 — 15:15
Excel = CreateObject(«Excel.Application»);
12 — 19.09.06 — 15:16
У пользователя 1С в правах стоит Использование в качестве ОЛЕ сервера? И смотри
(11)
13 — 19.09.06 — 15:19
(11)(12) Судя по (6) это не нужно, достаточно (8)
14 — 19.09.06 — 15:21
(5) по ОЛЕ ОО давно научен общаться и даже с 1С
15 — 19.09.06 — 15:25
(14) Это верно. Но, для этого нужно знать объектную модель ОО и как именно его вызывать.
16 — 19.09.06 — 15:25
у меня было такое… просто офис не был установлен)))
17 — 19.09.06 — 15:25
(14) даже StarOffice 5.0 вызывался, но были проблемы с кодировками.
18 — 19.09.06 — 15:27
(8) Раз запустился, а больше не хочет. То есть файл создается но не открывается, не ругается
19 — 19.09.06 — 15:29
(18) Убей Excel-евские процессы
20 — 19.09.06 — 15:31
ЗапуститьПриложение отрабатывает аналогично проводнику — передает винде управление
21 — 19.09.06 — 15:31
(19) Как?
22 — 19.09.06 — 15:32
Через диспетчер задач — процессы
23 — 19.09.06 — 15:39
(21) … гы гы гы… killtask
24 — 19.09.06 — 15:40
tasklist
taskkill
25 — 19.09.06 — 18:10
вы должны закрыть ВСЕ экселевские процессы использующие файл, который вы хотите обработать. У меня так же были проблемы на этом этапе
26 — 19.09.06 — 18:38
(19)-(25) да ну ? и это поможет для Excel = СоздатьОбъект(«Excel.Application»); ?
ru5t
27 — 19.09.06 — 20:04
да , при наличии соответствующих прав .
jediAlex 4 / 4 / 4 Регистрация: 12.07.2011 Сообщений: 627 |
||||
1 |
||||
14.12.2016, 10:26. Показов 9115. Ответов 8 Метки нет (Все метки)
Здравствуйте. Делаю собственную конфигурацию в 1С8.3. Есть несколько обработок, которые выводят результат выборки данных в таблицу значений на форме и надо выгрузить эти данные в Excel. Проблема начинается с самой первой строки процесса выгрузки:
Вываливается ошибка «Недопустимая строка с указанием класса». Что не так? помогите пожалуйста. Во вложении скриншот сообщения об ошибке. Миниатюры
0 |
о_____О 224 / 223 / 37 Регистрация: 19.11.2010 Сообщений: 1,062 |
|
14.12.2016, 13:44 |
2 |
jediAlex, а excel установлен? Добавлено через 1 минуту
0 |
4 / 4 / 4 Регистрация: 12.07.2011 Сообщений: 627 |
|
14.12.2016, 13:51 [ТС] |
3 |
все есть, все установлено. Попробовал на локальной версии конфигурации — работает. Залил БД на SQL сервер и такое выскочило…
0 |
о_____О 224 / 223 / 37 Регистрация: 19.11.2010 Сообщений: 1,062 |
|
14.12.2016, 13:58 |
4 |
Код где работает? На клиенте или сервере?
0 |
4 / 4 / 4 Регистрация: 12.07.2011 Сообщений: 627 |
|
15.12.2016, 09:13 [ТС] |
5 |
код на сервере работает
0 |
3052 / 1999 / 524 Регистрация: 25.06.2009 Сообщений: 6,964 |
|
15.12.2016, 09:15 |
6 |
jediAlex, надо на клиенте.
0 |
jediAlex 4 / 4 / 4 Регистрация: 12.07.2011 Сообщений: 627 |
||||||||||||
15.12.2016, 10:19 [ТС] |
7 |
|||||||||||
вот полный код процедуры на сервере:
Добавлено через 1 минуту
Добавлено через 17 минут
Причем обработок, в которых данные выгружаются в Excel 4. В одной код срабатывает, объект excel создается, а в других — нет. Во всех делал создание объекта Excel на сервере.
0 |
476 / 413 / 93 Регистрация: 26.09.2012 Сообщений: 1,912 |
|
15.12.2016, 10:58 |
8 |
Когда ваш код выполняется на сервере, то и эксель с дллкой смотрятся на сервере и еще два миллиона параметров доступа. И судя по ошибке нет у вас экселя на сервере. А почему все не выгрузить в табличный документ, а потом его сохранить как файл эксель?
0 |
4 / 4 / 4 Регистрация: 12.07.2011 Сообщений: 627 |
|
15.12.2016, 13:49 [ТС] |
9 |
Спасибо, разобрался.
0 |
In my C# application i am importing and exporting data to excel. I have office 2013.
I am using following code:
using Excel = Microsoft.Office.Interop.Excel;
Excel.Application _excelApp = null;
_excelApp = new Excel.Application();
This code was working fine but recently i installed Microsoft project professional 2013, it also update office. After this i am getting error in _excelApp = new Excel.Application();
Error is:
Unable to cast COM object of type ‘System.__ComObject’ to interface
type ‘Microsoft.Office.Interop.Excel.Application’. This operation
failed because the QueryInterface call on the COM component for the
interface with IID ‘{000208D5-0000-0000-C000-000000000046}’ failed due
to the following error: Error loading type library/DLL. (Exception
from HRESULT: 0x80029C4A (TYPE_E_CANTLOADLIBRARY)).
pnuts
58.1k11 gold badges86 silver badges138 bronze badges
asked May 18, 2015 at 11:45
1
@Deepak gupta, i can t comment so i post it here. Maybe Soner is right. I used to have the same problem so i decided to use the old way to open an Excel file (with an oledb command).
What do you need? Read an Excel or save a new one?
For example in my case i needed to read an Excel (that was and .xls or .xlsx):
//Check whether file extension is xls or xslx
if (fileExtension == ".xls")
connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileLocation + ";Extended Properties="Excel 8.0;HDR=Yes;IMEX=2"";
else if (fileExtension == ".xlsx")
connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileLocation + ";Extended Properties="Excel 12.0;HDR=Yes;IMEX=2"";
//Create OleDB Connection and OleDb Command
OleDbCommand cmd = new OleDbCommand();
OleDbConnection con = new OleDbConnection(connectionString);
cmd.CommandType = System.Data.CommandType.Text;
cmd.Connection = con;
OleDbDataAdapter dAdapter = new OleDbDataAdapter(cmd);
con.Open();
DataTable dtExcelSheetName = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
string getExcelSheetName = dtExcelSheetName.Rows[0]["Table_Name"].ToString();
//send query, send query, fill adapter:
cmd.CommandText = "SELECT * FROM [" + getExcelSheetName + "A1:GR255] WHERE [0] IS NOT NULL ";
dAdapter.SelectCommand = cmd;
dAdapter.Fill(dtExcelRecords);
con.Close();
Or maybe you can try using this library ExcelLibrary that is described in this post Create Excel (.XLS and .XLSX) file from C#.
answered May 18, 2015 at 13:23
paulofer85paulofer85
54510 silver badges15 bronze badges
This is way to create Object and thereby to copy the worksheet from One excel to another Excel
Dim CopyFrom As Object
Dim CopyTo As Object
Dim CopyThis As Object
Dim xl As Object
xl = CreateObject("Excel.Application")
xl.Visible = False
CopyFrom = xl.Workbooks.Open("E:EXCELFrom.xls")
CopyTo = xl.Workbooks.Open("E:EXCELTo.xls")
For i = 0 To 1
''To use a password: Workbooks.Open Filename:="Filename", Password:="Password"
If i = 0 Then
CopyThis = CopyFrom.Sheets(1)
CopyThis.Copy(After:=CopyTo.Sheets(CopyTo.Sheets.Count))
CopyTo.Sheets(3).Name = "Sheet3"
Else
CopyThis = CopyFrom.Sheets(2)
CopyThis.Copy(After:=CopyTo.Sheets(CopyTo.Sheets.Count))
CopyTo.Sheets(4).Name = "Sheet4"
End If
Next
CopyTo.Sheets(1).Activate()
CopyTo.Save()
'CopyTo.SaveAs("E:EXCELCheck.xls")
xl.Quit()
answered Jun 15, 2015 at 11:13
The problem has been resolved. When i installed Microsoft project professional 2013, it also update microsoft office, but the updation of office was not successful.
When i repair office, it started working fine.
answered Oct 16, 2015 at 8:35
Deepak guptaDeepak gupta
1,93811 silver badges11 bronze badges
После обновления платформы 1С на последнюю текущую версию столкнулся с ошибкой в обработке, которая работала еще до сегодняшнего дня.
Вызов осуществляется на сервере 1С:Предприятия, в управляемом приложении.
Эксель = Новый COMОбъект(«Excel.Application»);
При этом сервер приложения 1С 32х разрядный, хотя и стоит на Windows 64 битной версии.
Если запускать этот же метод на клиентской части, то помогает стандартное действие, выполненное с правами администратора:
Regsvr32 «C:Program Files (x86)1cv8(версия платформы)bincomcntr.dll»
Однако не в этом случае…
Поиск по интернету и «гугление» конечно помогает в большинстве случаев 🙂 однако вариантов было перепробовано несколько и ничего не помогло кроме следующего:
- Заходим на сервер приложений 1С под локальным админом
- Запускаем DCOMCNFG (Консоль настроек «Component Services»)
- Открываем ветку Console Root -> Component Services -> Computers -> My computer -> DCOM Config
- Ищем «Microsoft Excel Application»
- Если нашли, то переходим к пункту 4 (Настраиваем свойства DCOM компонента «Microsoft Excel Application»)
- Закрываем «Component Services»
- Настройка реестра
- Запускаем REGEDIT
- Открываем ветку ComputerHKEY_CLASSES_ROOTAppIDEXCEL.EXE, если ее нет, то создаем
- Создаем в ней строковый параметр AppID = {00020812-0000-0000-C000-000000000046}
- Выполняем команду «mmc comexp.msc /32», которая делает то же что и DCOMCONFIG, но позволяет видеть 32 битные компоненты.
- После этого в Component Services должен появиться «Microsoft Excel Application»
- Настраиваем свойства DCOM компонента «Microsoft Excel Application»
- Закладка «Security»
- «Launch and Activation Permissions» — Customize — Edit
- Добавляем пользователя, под которым запускается агент сервера 1С
- Назначем ему только следующие права (allow):
- Local Launch
- Local Activation
- «Access Permissions» — Customize — Edit
- Добавляем пользователя, под которым запускается агент сервера 1С
- Назначаем ему только следующие права (allow):
- Local Access
- «Launch and Activation Permissions» — Customize — Edit
- Закладка «Identity»
- Должно быть выбрано «The launching user»
- Закладка «Security»
- Системные папки
- Папка «C:WindowsSysWOW64configsystemprofileDesktop»
- Проверяем наличие папки , если нет -то создаем.
- Заходим в свойства этой папки.
- Закладка Security
- Добавляем, если нет, пользователя, под которым запускается агент сервера 1С
- Добавляем право «Read» и «Write»
- Папка «C:WindowsSystem32configsystemprofileDesktop»
- Проверяем наличие папки , если нет -то создаем.
- Заходим в свойства этой папки.
- Закладка Security
- Добавляем, если нет, пользователя, под которым запускается агент сервера 1С
- Добавляем право «Read» и «Write»
- Папка «C:WindowsSysWOW64configsystemprofileDesktop»
Источник информации © Инфостарт.
Подскажите кто-нибудь сталкивался с данной ошибкой?
Делаю отчет (XMLExcelReport_RU) в пакете, но возникла ошибка.
Причем файл создается в нужной мне папки, но возникает ошибка.
логи
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. —> System.NullReferenceException: Object reference not set to an instance of an object.
at Dynamics.Ax.Application.ComOfficeDocument_RU.Getcomerrormsg() in ComOfficeDocument_RU.getCOMErrorMsg.xpp:line 7
at Dynamics.Ax.Application.ComOfficeDocument_RU.Initapplication(Boolean _bVisible, Int32 _displayAlerts, Boolean , Boolean ) in ComOfficeDocument_RU.initApplication.xpp:line 32
at Dynamics.Ax.Application.ComOfficeDocument_RU.Initapplication(Boolean _bVisible, Int32 _displayAlerts)
at Dynamics.Ax.Application.ComOfficeDocument_RU.Newfile(String _template, Boolean _bVisible, Int32 _displayAlerts, Boolean , Boolean , Boolean ) in ComOfficeDocument_RU.newFile.xpp:line 19
at Dynamics.Ax.Application.ComOfficeDocument_RU.@Newfile(String _template, Boolean _bVisible, Boolean , Boolean )
at Dynamics.Ax.Application.ComOfficeDocument_RU.Newfile(String _template, Boolean _bVisible)
at Dynamics.Ax.Application.XmlExcelReport_NormsExpense_VSN.Processinexcel(String _filename) in XmlExcelReport_NormsExpense_VSN.processInExcel.xpp:line 60
at Dynamics.Ax.Application.XMLExcelReport_RU.Run() in XMLExcelReport_RU.run.xpp:line 78
— End of inner exception stack trace —