Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите с OLE! / 25 сообщений из 39, страница 1 из 2
23.09.2003, 18:47
    #32273444
Gyslik.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с OLE!
Помогите пожалуйста!
У меня проблема: есть Б.Д. с полем OLE (Документ Word), подскажите пожалуйста можно ли как-нибудь перевести все эти данные в тип поля "текстовой" (в ручную это сделать не реально т.к. 1000 записей), мне просто все эти данные надо перенести в другую Б.Д., но уже в нормальном виде. (Посмотрел все темы по OLE в форуме, но что-то ничего не нашел).
Мне было бы лучше перевести данные не программно (т.к. VBA я знаю плохо), а, если это возможно, с помощью RAD инструментов.

Буду признателен за любой совет по данной теме!!! :-)
...
Рейтинг: 0 / 0
23.09.2003, 18:53
    #32273453
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с OLE!
Я не знаю, что такое RAD, для меня как раз программно проще. :^) Но если не программно, то тогда Copy & Paste.
...
Рейтинг: 0 / 0
23.09.2003, 19:21
    #32273472
Gyslik.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с OLE!
RAD (rapid application development tool) - инструмент быстрой разработки приложений. А Вы предлагаете 1000 записей Copy & Paste? Я не против программного подхода, я просто не знаю, как работать с VBA.
...
Рейтинг: 0 / 0
24.09.2003, 09:28
    #32273667
OMP
OMP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с OLE!
Если не хочешь переводить данные программно, то воспользуйся этим макросом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Dim I As Long, Table As String
Table =  "<Название таблицы>" 
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

Будет выполнять долго, ну ты же не хочешь программно!!!
...
Рейтинг: 0 / 0
25.09.2003, 15:42
    #32275669
Gyslik.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с OLE!
Спасибо большое за пример!
Но уж простите меня бестолкового, у меня теперь такая загвоздка-
во второй строке пишу:
Table = "(user-tabl)"
а комп ругается на эту строчку и пишет:
Compile error:
Invalid outside procedure!!!
P.S. Библиотеки вроде все подключил.

HELP ME PLEASE!!!
...
Рейтинг: 0 / 0
25.09.2003, 15:47
    #32275683
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с OLE!
> Invalid outside procedure!!!

Это значит, что этот текст должен быть в процедуре.
...
Рейтинг: 0 / 0
25.09.2003, 15:57
    #32275711
Gyslik.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с OLE!
Может я что-то не правильно понял, но я запускаю этот макрос из VBA.
...
Рейтинг: 0 / 0
25.09.2003, 16:06
    #32275729
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с OLE!
Каким образом? Можно полный текст?
...
Рейтинг: 0 / 0
25.09.2003, 16:13
    #32275747
Gyslik.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с OLE!
Вот:

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

Если что, заранее извиняюсь за полное незнание данного вопроса!
...
Рейтинг: 0 / 0
25.09.2003, 16:15
    #32275755
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с OLE!
Ну так это я уже видел. А как сударь (-рыня) это пытается запустить?
...
Рейтинг: 0 / 0
25.09.2003, 16:18
    #32275765
Gyslik.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с OLE!
В VBA - "Run".
...
Рейтинг: 0 / 0
25.09.2003, 16:20
    #32275769
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с OLE!
Какой Run? Кнопка, что ли?
...
Рейтинг: 0 / 0
25.09.2003, 16:24
    #32275777
Gyslik.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с OLE!
Ну можно и кнопкой, если это поменяет суть дела!-)
...
Рейтинг: 0 / 0
25.09.2003, 16:44
    #32275820
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с OLE!
А какой Run, если не кнопка???
...
Рейтинг: 0 / 0
25.09.2003, 17:03
    #32275850
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с OLE!
твой код нужно пометить в общий модуль
и обрамить процедурой, после этого можешь запускать без кнопки а через run

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Public Sub test()

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

end sub
...
Рейтинг: 0 / 0
25.09.2003, 17:10
    #32275859
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с OLE!
Это я уже говорил в 15:47.
...
Рейтинг: 0 / 0
25.09.2003, 17:11
    #32275861
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с OLE!
P.S. А что это все-таки за волшебный Run?
...
Рейтинг: 0 / 0
25.09.2003, 17:23
    #32275874
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с OLE!
Alt+F11 , F5
...
Рейтинг: 0 / 0
25.09.2003, 17:29
    #32275881
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с OLE!
А что значит "без кнопки а через run"? По-моему, кнопка и F5 работают совершенно одинаково.
...
Рейтинг: 0 / 0
25.09.2003, 19:36
    #32276044
Gyslik.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с OLE!
Ннннда и почему я такой бестолковый, сам себе удивляюсь.
Но я не понял:
А что значит "пометить в общий модуль" "и обрамить процедурой"?
А просто из VBA его запустить нельзя что ли?
...
Рейтинг: 0 / 0
25.09.2003, 19:49
    #32276050
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с OLE!
"Поместить в общий модуль"

Нажать Ф11, перейти во вкладку "Модули", нажать
"Создать".

"Обрамить процедурой"

В созданном модуле написать
Public Function aaa()
Нажать Enter.
Автоматом добавится строка
End Sub
Промеж этих строчек вставить твой код.
Сохранить модуль под любым именем.
Закрыть окно редактора ВБА.

"Запустить процедуру":
Нажать Ф11.
Перейти на вкладку "Макросы"
Нажать на кнопку "Создать макрос"
Добавить команду "Выполнить программу" (или "запуск программы")
В нижней половине окна макроса написать имя функции - aaa()
Закрыть и сохранить макрос.
Запустить его.
...
Рейтинг: 0 / 0
25.09.2003, 19:52
    #32276054
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с OLE!
"поме с тить в общий модуль" - поместить в модуль, который виден на странице "Модули" (а не модуль формы или отчета).

"обрамить процедурой" - поместить до и после две строки:

Код: plaintext
1.
2.
Sub ...()

End Sub


> А просто из VBA его запустить нельзя что ли?

Такой возможности в VBA нет. Код вне процедуры - это ошибка (см. пример в 15:42).
...
Рейтинг: 0 / 0
25.09.2003, 19:52
    #32276055
Gyslik.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с OLE!
Вот я балда!
Все сделал, а создать макрос не догадался!!! Спасибо. :-)))
...
Рейтинг: 0 / 0
25.09.2003, 19:54
    #32276058
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с OLE!
2 Geo:

Я абпаздал. Но "Запустить процедуру" можно и без макроса, а просто написав ее имя в Debug Window. Про использование макросов см. соответствующую дискуссию на этом форуме. :^)
...
Рейтинг: 0 / 0
25.09.2003, 19:58
    #32276062
CtrlAlt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с OLE!
>>Без кнопки через Run

Может так:
Application.Run "aaa"
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите с OLE! / 25 сообщений из 39, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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