Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Функция из текстового файла / 15 сообщений из 15, страница 1 из 1
07.09.2006, 15:00:55
    #33971207
Taranaga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция из текстового файла
Уважаемые, как можно реализовать следующее:
Есть файл func.txt например со следующим содержанием:
Код: plaintext
1.
2.
Sub ppp(text as string)
	msgbox(text)
end sub
Как можно из VBA выполнить процедуру из этого файла передачей в нее значение аргумента text?
Пробовал так:
Код: plaintext
Application.Run "func.txt!ppp(""текст"")"
- говорит, что не может найти макрос ppp...

Выручайте - очень надо :)
...
Рейтинг: 0 / 0
07.09.2006, 16:19:03
    #33971553
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция из текстового файла
А интересно будет работать такая строчка
Код: plaintext
kill myCmputer
...
Рейтинг: 0 / 0
07.09.2006, 16:33:17
    #33971634
Taranaga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция из текстового файла
vkodor
А интересно будет работать такая строчка
Код: plaintext
kill myCmputer
А ну! Смешки в строю!!! :)
Чем ржать, помог бы лучше... :)
...
Рейтинг: 0 / 0
07.09.2006, 16:45:36
    #33971694
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция из текстового файла
Taranaga vkodor
А интересно будет работать такая строчка
Код: plaintext
kill myCmputer
А ну! Смешки в строю!!! :)
Чем ржать, помог бы лучше... :)

Откудо в ... алмазы?
Откудо в txt компилятор VB?
...
Рейтинг: 0 / 0
07.09.2006, 16:47:13
    #33971704
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция из текстового файла
Taranaga
Выручайте - очень надо :)
Для чего может понадобится такая ...?
...
Рейтинг: 0 / 0
07.09.2006, 16:58:17
    #33971762
Taranaga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция из текстового файла
Все просто.
Существует куча различных отчетов в екселе.
Для того чтобы отследить востребованность этих отчетов у пользователей - события открытия, закрытия, записи и пр. пишутся в общий текстовый лог файл с указанием времени, юзера, наименования и кода отчета.

Все, что выше - уже реализовано.

Проблемы начинаются, когда нужно изменить скрипт для записи лог файла. В каждый отчет не залезишь - они лежат не только в сети, но и на машинах юзеров...

Как решение проблемы в будущем - представляется отдельный текстовый файл с процедурой/функцией. При необходимости процедуру в этом файле можно будет поменять и все отчеты для записи лога будут использовать обновленную процедуру.
...
Рейтинг: 0 / 0
07.09.2006, 17:41:00
    #33971970
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция из текстового файла
TaranagaВсе просто.
Существует куча различных отчетов в екселе.
Для того чтобы отследить востребованность этих отчетов у пользователей - события открытия, закрытия, записи и пр. пишутся в общий текстовый лог файл с указанием времени, юзера, наименования и кода отчета.

Все, что выше - уже реализовано.

Проблемы начинаются, когда нужно изменить скрипт для записи лог файла. В каждый отчет не залезишь - они лежат не только в сети, но и на машинах юзеров...

Как решение проблемы в будущем - представляется отдельный текстовый файл с процедурой/функцией. При необходимости процедуру в этом файле можно будет поменять и все отчеты для записи лога будут использовать обновленную процедуру.

Не правильным путём идешь?
Проще написать скрипт, который будет находить нужные отчёты (файлы) в сети, открывать их (в скрытом виде), находить строчки в программе и менять их на нужные.

Если ты хочешь чтоб твои отчёты запускали внешний файл с функцией, то это должен быть bat или vbs или jscript подойдет xls или doc, но ни как не txt
...
Рейтинг: 0 / 0
07.09.2006, 18:03:19
    #33972067
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция из текстового файла
Я что-то подобное видел, кажется, на microsoft.com. A именно, программно создавались модули; деталей, правда не помню. Делалось через Application.VBE. Поищу, может найду пример.
...
Рейтинг: 0 / 0
07.09.2006, 18:06:58
    #33972088
k-nike
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция из текстового файла
Попробуйте копнуть
Код: plaintext
Application.Evaluate

...
Рейтинг: 0 / 0
07.09.2006, 18:18:28
    #33972146
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция из текстового файла
vbaproЯ что-то подобное видел, кажется, на microsoft.com. A именно, программно создавались модули; деталей, правда не помню. Делалось через Application.VBE. Поищу, может найду пример.
Вот этот пример
...
Рейтинг: 0 / 0
07.09.2006, 18:57:54
    #33972243
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция из текстового файла
TaranagaУважаемые, как можно реализовать следующее:
Есть файл func.txt например со следующим содержанием:
Элементарно Ватсон.
Если в aaa.bas у тебя определена sub aaa(), то вот такой макрос тебя спасет:
Код: plaintext
1.
2.
3.
4.
5.
Sub a(filename As String)
    Dim cm As CodeModule
    Set cm = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule).CodeModule
    cm.AddFromFile (filename & ".bas")
    Application.Run (filename & "." & filename)
End Sub
...
Рейтинг: 0 / 0
07.09.2006, 19:13:27
    #33972274
Taranaga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция из текстового файла
vbaproВот этот примерТам заточено под импорт:
Код: plaintext
wbkPers.VBProject.VBComponents.Import strPath & "ColorCalc.bas"
А хочется чтобы напрямую... иначе придется делать обработчик типа "если нет модуля, то импортировать..." И не факт, что получится отработать есть модуль или нет... k-nikeПопробуйте копнуть
Код: plaintext
Application.Evaluate
Пробую сначала без передачи параметров во внешнюю процедуру. В файле с именем func.bas следующее:
Код: plaintext
1.
2.
sub ppp()
	msgbox("123")
end sub
Никакие извращения с Application.Evaluate ничего хорошего не дали :(
White Owl
Элементарно Ватсон.
Если в aaa.bas у тебя определена sub aaa(), то вот такой макрос тебя спасет:
Код: plaintext
1.
2.
3.
4.
5.
Sub a(filename As String)
    Dim cm As CodeModule
    Set cm = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule).CodeModule
    cm.AddFromFile (filename & ".bas")
    Application.Run (filename & "." & filename)
End Sub
Метерится не по детски на Dim cm As CodeModule:(
...
Рейтинг: 0 / 0
07.09.2006, 19:25:07
    #33972297
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция из текстового файла
TaranagaМетерится не по детски на Dim cm As CodeModule:(
Ну так а ты "Microsoft Visual Basic for Application Extensibility X.Y" подключил? Нет? Ну тогда подключи.
И не забудь зайти в Tools->Macro->Security и поставить галочку на Trust All installed add-ins & templates или просто указать свою книгу в списке тех кому можно заниматься самолечением.
...
Рейтинг: 0 / 0
07.09.2006, 20:20:48
    #33972392
Taranaga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция из текстового файла
Всеже White Owl - круть нереальная!!!
Заработало так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Sub RunTxtModule(FileName As String, ProcedureName As String)
'FileName - путь и имя файла
'ProcedureName - то что нужно запускать из подключаемого модуля
    On Error GoTo ErrHandler
    Application.Run (ProcedureName)
Exit Sub
ErrHandler:
If Err =  1004  Then
    Dim FileName As String
    Dim cm As CodeModule
    Set cm = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule).CodeModule
    cm.AddFromFile (FileName)
    Application.Run (ProcedureName)
    Err.Clear
End If
End Sub
Спасибо!
Однако - это решение сродни примеру от vbapro . Т.е. в книге появляется дополнительный модуль. А также нужно каждому юзеру вдалбливать не только то, что необходимо включать макросы, но и то, что ему нужно ставить галку в безопасности макросов. Таки хотелось чтоб штука работала, как автомат Калашникова, т.е. - всегда.
Может быть есть способы при которых не требуется включения Trust All installed add-ins & templates? То есть без создания модуля?...
...
Рейтинг: 0 / 0
07.09.2006, 21:31:56
    #33972491
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция из текстового файла
TaranagaМожет быть есть способы при которых не требуется включения Trust All installed add-ins & templates? То есть без создания модуля?...
Ну в принципе, модуль можно и не создавать, можно дописывать в один из уже существующих. CodeModule позволяет кроить свои макросы как угодно. Но это не совсем то что ты спрашивал? :)

Но понижать уровень безопасности все равно прийдется. Поищи тут по форуму это обсуждалось уже раз десять.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Функция из текстового файла / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]