![]() |
![]() |
|
1C Ворд и Эксель Ø |
☑ | ||
---|---|---|---|---|
0
ionn
29.09.05
✎
12:13
|
Сделал обработку которая берет таблицу из Word и переносит ее в Excel, а потом уж работает с данными.
Так вот, я ничего лучше не придумал чем copy paste (выделяется таблица копируется и вставляется). Это естественно все очень долго, а главное, когда paste уже сработало excel продолжает обдумывать что ему подсунули, а обработка пытается выполнять следующие команды. И появляется окно: Сервер занят. Действие не может быть завершено, т.к. программа "Microsoft Excel" не отвечает на запросы. И кнопки "Переключиться" и "Повторить". Если после завершения вставки нажать Повторить,то все нормально сработает. Как можно избежать появления этого окна, или может по-другому из Worda в Excel перегонять? 1C v77 |
|||
1
callisto
29.09.05
✎
12:26
|
задача загрузчика данных: взять из этого (например из Excel)
а не "перегонять" данные из формата в формат... и уже потом взять. . т.е. данные надо сначала в Excel сделать... и работать только с Excel |
|||
2
smaharbA
29.09.05
✎
12:30
|
так ненадо делать, но раз сделал то в ехеле в начале переноса...
oExcel.Calculation = -4135; oExcel.ScreenUpdating = 0; После переноса... oExcel.ScreenUpdating = -1; oExcel.Calculation = -4105; |
|||
3
ionn
29.09.05
✎
12:57
|
(1) Я бы с удовольствием работал только с Excel, но вот банк присылает свои отчеты в Worde :( А как работать с таблицами в Worde я не знаю.
(2) чёй-то не сработало, окошко снова вылезло |
|||
4
ionn
29.09.05
✎
14:07
|
up
|
|||
5
Гений самоучка
29.09.05
✎
14:29
|
Может сделать так:
Сделай шаблон в ехселе, в нем макрос который с вордом работает и этот пасте выполняет. И вызывай из 1с этот макрос. У меня так работает - графики многочиселнные в екселе строит. и управление в обработку не возвращается. А вообще с вордом разберись, там ничего сложного, так же как и в екселе. Делаешь макрос с желаемыми действиями и его разбираешь. |
|||
6
smaharbA
29.09.05
✎
14:36
|
НомерТабицы=1;
КоличествоСтрок=oWord.ActiveDocument.Tables(НомерТабицы).Rows.Count; КоличествоКолонок=oWord.ActiveDocument.Tables(НомерТабицы).Columns.Count; Для НомерСтроки=1 по КоличествоСтрок Цикл Для НомерСтолбца=1 по КоличествоКолонок Цикл Сообщить(oWord.ActiveDocument.Tables(НомерТабицы).cell(НомерСтроки,НомерСтолбца)); КонецЦикла; КонецЦикла; |
|||
7
ionn
29.09.05
✎
14:39
|
Спасибо, а как вызвать макрос?
|
|||
8
Гений самоучка
29.09.05
✎
14:44
|
Точно не помню, что-то типа
Application.Run(имя макроса) Сделай макрос с запуском другого макроса - посмотри :) |
|||
9
Young
29.09.05
✎
15:55
|
(7) К вопросу "как вызвать макрос":
http://www.script-coding.info/MSOffice.html |
|||
10
ionn
30.09.05
✎
13:04
|
Попробавл и макросом сделать и циклами пройтись, не получилось:
Работа макроса также вызвает окно "Сервер занят" Если делать как (6) то получается очень долго, и чем дольше работает тем медленнее :( |
|||
11
smaharbA
30.09.05
✎
13:09
|
Тебе просто пример дан, можно всю строку враз как текст читать...
|
|||
12
smaharbA
30.09.05
✎
13:12
|
А можно и асинхронный вызов их сделать, пусть макрос в ехеле весит, "рождаешь" макрос vbs из 1С и запускаешь его, недожидаясь окончания выполнения и все... Либо в томже оффисе класс при открытии выполняющий определенные действия, открытие пролетит для 1С незамеченным, офис начнет работать сам посебе, а ты в 1С можешь дальше кнопки жмакать...
|
|||
13
ionn
30.09.05
✎
14:37
|
что-то с чтением строки целиком у меня не получается пока,
а макрос я делал, это не помагает, т.к. мне нужно перегнать данные в Excel, сохранить файл, а потом подключиться к этому файлу через ODBC |
|||
14
smaharbA
30.09.05
✎
14:43
|
Ты непонял, если надо, поднимай ветку в понедельник, может и сделаю...
|
|||
15
ionn
03.10.05
✎
07:35
|
up
|
|||
16
smaharbA
03.10.05
✎
07:43
|
Чуток позднее
|
|||
17
ionn
03.10.05
✎
14:03
|
up
|
|||
18
ionn
04.10.05
✎
07:16
|
up?
|
|||
19
smaharbA
04.10.05
✎
10:15
|
Отдам долг...
Вот тупенький метод...(А так, все...) ... Процедура Ворд2Ексель() Перем ИмяФайла,ИмяНачКаталога; ФС.ВыбратьФайл(0,ИмяФайла,ИмяНачКаталога,,"Текст(*.doc)|*.doc",); Стр=" |set Word=CreateObject(""Word.Application"") |Word.Documents.Open("""+ИмяНачКаталога+ИмяФайла+""") |set Excel=CreateObject(""Excel.Application"") |Excel.Calculation = -4135 |Excel.ScreenUpdating = 0 |Excel.DisplayAlerts=0 |Excel.Workbooks.Add |For i=1 to 100 |Excel.ActiveWorkbook.Worksheets.Add |Next |For i=1 to 100 |Word.ActiveDocument.Content.Copy |Excel.ActiveWorkbook.Worksheets(i).Paste |Next |Excel.ActiveWorkbook.SaveAs(""C:\123.xls"") |Excel.DisplayAlerts=-1 |Excel.ScreenUpdating = -1 |Excel.Calculation = -4105 |Excel.Quit() |Word.Quit()"; Текст=СоздатьОбъект("Текст"); Текст.ДобавитьСтроку(Стр); Текст.Записать(КаталогИБ()+"Word2Excel.vbs"); ЗапуститьПриложение("wscript.exe "+КаталогИБ()+"Word2Excel.vbs"); КонецПроцедуры // Ворд2Ексель И неделай через MSScripting там есть ограничение на время выполнения, после ченго вопрос/предупреждение |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |