|
|
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
Помогите пожалуйста! У меня проблема: есть Б.Д. с полем OLE (Документ Word), подскажите пожалуйста можно ли как-нибудь перевести все эти данные в тип поля "текстовой" (в ручную это сделать не реально т.к. 1000 записей), мне просто все эти данные надо перенести в другую Б.Д., но уже в нормальном виде. (Посмотрел все темы по OLE в форуме, но что-то ничего не нашел). Мне было бы лучше перевести данные не программно (т.к. VBA я знаю плохо), а, если это возможно, с помощью RAD инструментов. Буду признателен за любой совет по данной теме!!! :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 18:47 |
|
||
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
Я не знаю, что такое RAD, для меня как раз программно проще. :^) Но если не программно, то тогда Copy & Paste. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 18:53 |
|
||
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
RAD (rapid application development tool) - инструмент быстрой разработки приложений. А Вы предлагаете 1000 записей Copy & Paste? Я не против программного подхода, я просто не знаю, как работать с VBA. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2003, 19:21 |
|
||
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
Если не хочешь переводить данные программно, то воспользуйся этим макросом: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Будет выполнять долго, ну ты же не хочешь программно!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2003, 09:28 |
|
||
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
Спасибо большое за пример! Но уж простите меня бестолкового, у меня теперь такая загвоздка- во второй строке пишу: Table = "(user-tabl)" а комп ругается на эту строчку и пишет: Compile error: Invalid outside procedure!!! P.S. Библиотеки вроде все подключил. HELP ME PLEASE!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 15:42 |
|
||
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
> Invalid outside procedure!!! Это значит, что этот текст должен быть в процедуре. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 15:47 |
|
||
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
Может я что-то не правильно понял, но я запускаю этот макрос из VBA. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 15:57 |
|
||
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
Каким образом? Можно полный текст? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 16:06 |
|
||
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
Вот: Dim I As Long, Table As String Table = "(user-tabl)" DoCmd.OpenTable Table, acNormal, acEdit For I = 1 To 1000 SendKeys "{TAB}", True 'перейти на поле OLE (оно у меня в таблице второе поле) SendKeys "^~", True ' нажать на клавишу Ctrl+Enter SendKeys "^a", True ' Выделить весь текст в Word SendKeys "^{INSERT}", True ' Скопировать в буфер SendKeys "%{F4}", True ' Закрыть приложение SendKeys "{TAB}", True ' Перейти на следующее поле для вставки (Текст) SendKeys "+{INSERT}", True ' Вставить из буфера DoCmd.GoToRecord acDataTable, Table, acNext ' Переход на следующую запись SendKeys "+{TAB}", True ' Вернуться на предыдущее поле SendKeys "+{TAB}", True ' Вернуться на предыдущее поле Next I Если что, заранее извиняюсь за полное незнание данного вопроса! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 16:13 |
|
||
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
Ну так это я уже видел. А как сударь (-рыня) это пытается запустить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 16:15 |
|
||
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
Какой Run? Кнопка, что ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 16:20 |
|
||
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
Ну можно и кнопкой, если это поменяет суть дела!-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 16:24 |
|
||
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
А какой Run, если не кнопка??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 16:44 |
|
||
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
твой код нужно пометить в общий модуль и обрамить процедурой, после этого можешь запускать без кнопки а через run Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 17:03 |
|
||
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
P.S. А что это все-таки за волшебный Run? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 17:11 |
|
||
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
А что значит "без кнопки а через run"? По-моему, кнопка и F5 работают совершенно одинаково. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 17:29 |
|
||
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
Ннннда и почему я такой бестолковый, сам себе удивляюсь. Но я не понял: А что значит "пометить в общий модуль" "и обрамить процедурой"? А просто из VBA его запустить нельзя что ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 19:36 |
|
||
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
"Поместить в общий модуль" Нажать Ф11, перейти во вкладку "Модули", нажать "Создать". "Обрамить процедурой" В созданном модуле написать Public Function aaa() Нажать Enter. Автоматом добавится строка End Sub Промеж этих строчек вставить твой код. Сохранить модуль под любым именем. Закрыть окно редактора ВБА. "Запустить процедуру": Нажать Ф11. Перейти на вкладку "Макросы" Нажать на кнопку "Создать макрос" Добавить команду "Выполнить программу" (или "запуск программы") В нижней половине окна макроса написать имя функции - aaa() Закрыть и сохранить макрос. Запустить его. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 19:49 |
|
||
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
"поме с тить в общий модуль" - поместить в модуль, который виден на странице "Модули" (а не модуль формы или отчета). "обрамить процедурой" - поместить до и после две строки: Код: plaintext 1. 2. > А просто из VBA его запустить нельзя что ли? Такой возможности в VBA нет. Код вне процедуры - это ошибка (см. пример в 15:42). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 19:52 |
|
||
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
Вот я балда! Все сделал, а создать макрос не догадался!!! Спасибо. :-))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 19:52 |
|
||
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
2 Geo: Я абпаздал. Но "Запустить процедуру" можно и без макроса, а просто написав ее имя в Debug Window. Про использование макросов см. соответствующую дискуссию на этом форуме. :^) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 19:54 |
|
||
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
>>Без кнопки через Run Может так: Application.Run "aaa" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 19:58 |
|
||
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
Я абпаздал. Но "Запустить процедуру" можно и без макроса, а просто написав ее имя в Debug Window. Можно. Только чтобы помочь запустить окно окладки, надо знать версию акцеса. (Вру, надо ^g нажать) А с макросом проще объяснить. А про дисскуссию - эт хр-шо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 20:02 |
|
||
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
> Application.Run "aaa" Понял, спасибо, не знал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 20:10 |
|
||
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
Запустил макрос, пишет: “Введенное выражение содержит имя функции, которое приложению Access не удается найти.” Суть в том, что он не находит таблицу user-tabl, а почему, не понимаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 20:31 |
|
||
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
1. Если таблица называется user-tabl а в программе написано (user-tabl) то ясно, что она ее не найдет. 2. Если Аксесс кричит про имя функции , то откуда такая уверенность, что проблема в имени таблицы ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 20:36 |
|
||
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
“Введенное выражение содержит имя функции, которое приложению Access не удается найти.” Суть в том, что он не находит таблицу user-tabl, а почему, не понимаю. Вряд ли суть в поиске таблицы. Скорее всего, не написал слово Public перед описанием функции, или имя функции в модуле отличается от того имени, что ты написал в макросе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 20:37 |
|
||
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
Public не нужно. Если не сказано Private, значит это Public. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 20:41 |
|
||
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
Тьфу. Знаю! То, что вызывается из макроса, обязано быть Function, а не Sub!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 20:42 |
|
||
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
Слово Public перед описанием функции-написал. Имя функции в модуле не отличается от того имени в макросе. Не находит таблицу user-tabl, т.к. при запуске VBA, пишет, что не удается найти объект (user-tabl). :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 20:46 |
|
||
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
Внимание, повторяю: 1. То, что вызывается из макроса, обязано быть Function, а не Sub!!! 2. Если таблица называется user-tabl а в программе написано (user-tabl) то ясно, что она ее не найдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2003, 20:48 |
|
||
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
Спасибо бльшое, у меня все запустилось!!! Но он выполняет только три первых строчки, а остальные не успевает выполнять (т.к. не успевает закрыть Word) и берет в буфер обмена всю табличку. Я написал программу "задержки" по времени: Public Declare Function timeGetTime_ Lib "winmm.dll" () As Long IPause = 10 ITimeStart = timeGetTime() ITime = timeGetTime() - ITimeStart < IPause ITime = timeGetTime() - ITimeStart Loop но она почему-то не хочет работать, ругает две первых строчки, подскажите пожалуйста, что я не так делаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2003, 16:02 |
|
||
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
Программу задержки выполнил так: For N = 1 To 20000 Next N Но программка все-равно выполняет только первые три строчки!!! Помогите, что же делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2003, 19:08 |
|
||
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
Мне кажется, что проблема в изначальной постановке вопроса. Было запрошено "не программно", вот и получено "не программно". Работает приблизительно и через раз. В то же время если написать нормальную программу, то все будет работать правильно. Какая разница автору вопроса, какой чужой код передирать - программный или не программный? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2003, 22:56 |
|
||
|
Помогите с OLE!
|
|||
|---|---|---|---|
|
#18+
"Какая разница автору вопроса, какой чужой код передирать - программный или не программный?" Разница есть: не программно для меня понятней и я смогу в нем что-либо изменить (т.к. данные из одного OLE поля мне надо было: 1.разнести по трем полям 2.разнести по шести полям). Кстати (может кому-нибудь пригодится), после долгих раздумий я все-таки решил проблему! Надо просто открыть и держать открытым Word, тогда все работает без проблем, а временная задержка здесь не помогает! :-))) P.S. Спасибо всем за советы! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2003, 18:23 |
|
||
|
|

start [/forum/topic.php?all=1&fid=45&tid=1679163]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 194ms |
| total: | 324ms |

| 0 / 0 |
