Импорт Из Excel По Времени

  • Автор темы toli4sky
  • Дата начала
T

toli4sky

Доброго времени суток!
Пришел я к выводу, что нужно упростить работу и двумя вариантами это все автоматизировать. Варианты похожи, но пока не совсем работают, поэтому я опять здесь)))
Суть вопроса в следующем, есть либо список компов, либо конкретный ресурс сетевой. И там и там файлы Excel с конкретным шаблоном. Соответственно требуется как то агентом, по времени это все выдергивать и импортировать.
Агент по импорту я сделал и в том, и в том варианте, он прекрасно работает, но только из меню, а как я ставлю его в режим запуск по времени он дает сбой.
Права безопасности агента стоят полные (в разделе безопасность свойства агента), я в базе менеджер, агент подписан мной. Ошибка в следующем месте.
Когда выполнение кода доходит до строки "Call xlWorkBooks.Open(xlPath)" и смотря через консоль сервера, выдает ошибку, что неправильно указан путь ...там то... или файл используется другой программой...
Путь пытался указывать просто на конкретный адрес, сначала своего компа, потом и на сам сервер такого вида:
\\имя сервера\с$\папка\*.* и так пробовал с:\папка, ошибка одна и та же, файл лежа на сервере занят быть не может, некому просто его трогать.
Вроде все объяснил, если кому это знакомо, очень прошу помощи
 

duchan

Green Team
20.09.2006
128
11
BIT
249
Уже даже не смешно... обсуждалось 100500 раз...
Сервер работает под SYSTEM, и без "танцев с бубном" не имеет доступа к сетевым ресурсам...
... и это проблема не Domino (!!!) - так работает винда!...

как обойти ищите на форуме, было описано множество раз!... :)

... и еще, раз не работают и локальные, то смотрите права агента в агенте - свойства агента, 2-ая закладка, security level
 
T

toli4sky

Ну не надо ругаться, я в тут новичек, про 100500милион тысяч раз я понимаю, что может где то было обсуждено лет 20 назад, и мельком в какой то теме, может даже не касающейся excel, а просто по обращению к файлам, но что то все мои поиски приводят к нулю, может те самые руки из не оттудава растут при написании запроса в поиске.
Если сталкивались дайте хоть намек, где искать, а то пришел спросить, а мне в ответ типа гугл и хелп в помощь, давай дуй отсюдава
 

rinsk

Lotus Team
12.11.2009
1 156
126
BIT
45
Ну не надо ругаться, я в тут новичек, про 100500милион тысяч раз я понимаю, что может где то было обсуждено лет 20 назад, и мельком в какой то теме, может даже не касающейся excel, а просто по обращению к файлам, но что то все мои поиски приводят к нулю, может те самые руки из не оттудава растут при написании запроса в поиске.
Если сталкивались дайте хоть намек, где искать, а то пришел спросить, а мне в ответ типа гугл и хелп в помощь, давай дуй отсюдава
Не нужно обижаться - коллега верно заметил, что этот вопрос следует адресовать в другой форум. И так же коллега дал полностью исчерпывающую информацию по разрешению Вашей проблемы. Читайте внимательно.
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
Toli4sky
Запускай сервер домино под учёткой Админа с максимальными правами и он будет иметь доступ к папке
Это в свойствах службы - указать от чьего имени она будет работать
 
A

afest

я вообще в таких случаях запускал агента под именем сервера, а не юзверя (даже при доступе манагера)
 
T

toli4sky

Это в свойствах службы - указать от чьего имени она будет работать
ну вроде нашел такую штуку, указать там и перезапустить ее, ну даже если так, вроде интересная штука, а как путь до папки с файлами указать?
так:
\\сервер\папка\*.*
или так:
c:\папка\*.*
?
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
541
Toli4sky
\\сервер\папка\*.* или \\IP-сервера\папка\*.*
Сервер не обязательно может быть тот же, где лотусня работает.
Но мы выгружаем.

Добавлено: А еще лучше сделать документ-настройку в базе, где будет лежать путь до папки.
И тянуть путь оттуда, тогда можно будет легче его сменить.
 
T

toli4sky

Разведал все штуки, сервер запущен от имени системы, т.е. права все есть, ескель тоже там стоит, если пишу своим вариантом
\\сервер\c$\папка\*.* то пишет, что указан не верный путь или файл, или файл занят другой программой, а если просто пишу \\сервер\папка\*.* то пишет illegal function call
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
541
А процессов excel на серванте не висит в адовом количестве теперь?
 
T

toli4sky

Смотрел, в на серваке процессов нет екселя, максимум смотрю через управление, там только строка, что к моей папке висит сеанс и открыт один файл от системы, я его отбрубаю, запускаю заново, и опять ничего, опять один сеанс появляется...
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
541
хм... Через IP сервера вместо имени тоже ошибка?
Может стоит на сервере, где работает агент сделать подключение сетевого диска через путь к той папке.
И тогда обращаться через букву этого диска.
 
T

toli4sky

savl
По ИП та же ерунда, ошибка, а вот про подключение сетевого диска я как то где то слышал, что можно на него будет ссылаться, только вот не пойму в чем будет разница от обычного, для сервера, своего диска?
если на локальный диск сервера я пишу путь \\Сервер\C$\папка\*.*
а на сетевой как лезть?
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
541
Toli4sky
Так... Что-то я запутался откуда мы читаем...

1. Если агент на серванте читает/пишет на свой же локальный диск серванта, то можно через букву {c:\ или d:\ и тд}
2. Если агента на серванте читает/пишет сетевой диск другого серванта: расшариваем тот диск в сеть, обращение через сетевой путь или IP или подключаем сетевой диск и через букву.

Судя по всему первый случай, да?
 
T

toli4sky

savl
Ну по идее первый вариант, т.к. наверно проще :rolleyes: (кстати в данном случае только читает, если только он не будет создавать временный файл, как при обычном открытии екселя)
Но этот вариант почему то не срабатывает
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
541
Под идее все равно создает... хотя может вызов поможет: .Open(FileName, , true) типа только на чтение
Хм... посмотрел один из своих импортеров:
Код:
Call ExcelApp.Workbooks.Add(fileName(0))
Set ExcelBook = ExcelApp.Workbooks(1)
Вполне работает, попробуйте.
И еще, создайте в своей папке файлик 1.txt и выполните в том же агенте строку: fileExists = (Dir$ (strPath) <> "" )
strPath - полный путь к 1.txt
будет ошибка -> косяк с доступом.

И еще, в свойствах агента. Выставите сервер где ему работать.
 
T

toli4sky

Косяка с доступом нет, я сделал простущий агент, который просто возьмет из этой папки файл и создаст там же копию с другим именем...и этотзасранец создал....
FileCopy "C:\Folder\asd.xls", "C:\folder\asdqw.xls"

может в коде что то у меня косяк (хотя по запуску из меню все Ок работает)
извините, если не так код пишу в сообщении

'путь беру из дока с настройкой
v = Evaluate({@DbLookup(NoCache; "":""; "ViewOpt"; "PathDir";"Values")})
xlPathOrig$=v(0)
Print "agent import 3" & xlPathOrig

xlPathAll$=Dir(xlPathOrig$,0)
Print "agent import 3.1" & xlPathOrig

If IsEmpty(xlPathOrig) Then Exit Sub
Do While xlPathAll$ <> ""

'напишем полный путь до текущего файла
xlPath=StrLeft(xlPathOrig,"*") & xlPathAll
Print "agent import 4"

'Создаем объект MS Excel и скрываем его
Set xlApp= CreateObject("Excel.Application")
xlApp.Visible = False
Print "agent import 5"

'Определяем книгу и лист
Set xlWorkBooks = xlApp.Workbooks
Print xlpath

Call xlWorkBooks.Open(xlPath)
Print "agent import 5.2"

и в место этого последнего принта идет ошибка
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
541
попробуйте так: вместо Set xlWorkBooks = xlApp.Workbooks
Код:
Call ExcelApp.Workbooks.Add(fileName(0))
Set ExcelBook = ExcelApp.Workbooks(1)

а значения принтов полагаю верные?
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!