• Paranoid - курс по анонимности и безопасности в сети от команды codeby. Защита персональных данных, анонимность в сети интернет, настройка виртуальных машин, безопасная передача данных, анти форензика и еще много всего полезного. Подробнее ...

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

toli4sky

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

duchan

Well-known member
20.09.2006
110
3
#2
Уже даже не смешно... обсуждалось 100500 раз...
Сервер работает под SYSTEM, и без "танцев с бубном" не имеет доступа к сетевым ресурсам...
... и это проблема не Domino (!!!) - так работает винда!...

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

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

toli4sky

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

rinsk

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

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
18
#5
Toli4sky
Запускай сервер домино под учёткой Админа с максимальными правами и он будет иметь доступ к папке
Это в свойствах службы - указать от чьего имени она будет работать
 

afest

Well-known member
16.06.2009
78
0
#6
я вообще в таких случаях запускал агента под именем сервера, а не юзверя (даже при доступе манагера)
 

toli4sky

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

savl

Lotus team
28.10.2011
2 135
104
#9
Toli4sky
\\сервер\папка\*.* или \\IP-сервера\папка\*.*
Сервер не обязательно может быть тот же, где лотусня работает.
Но мы выгружаем.

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

toli4sky

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

savl

Lotus team
28.10.2011
2 135
104
#12
А процессов excel на серванте не висит в адовом количестве теперь?
 

toli4sky

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

savl

Lotus team
28.10.2011
2 135
104
#14
хм... Через IP сервера вместо имени тоже ошибка?
Может стоит на сервере, где работает агент сделать подключение сетевого диска через путь к той папке.
И тогда обращаться через букву этого диска.
 

toli4sky

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

savl

Lotus team
28.10.2011
2 135
104
#16
Toli4sky
Так... Что-то я запутался откуда мы читаем...

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

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

toli4sky

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

savl

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

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

toli4sky

Active member
29.11.2011
38
0
#19
Косяка с доступом нет, я сделал простущий агент, который просто возьмет из этой папки файл и создаст там же копию с другим именем...и этотзасранец создал....
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 135
104
#20
попробуйте так: вместо Set xlWorkBooks = xlApp.Workbooks
Код:
Call ExcelApp.Workbooks.Add(fileName(0))
Set ExcelBook = ExcelApp.Workbooks(1)
а значения принтов полагаю верные?