|
0 / 0 / 0
Регистрация: 25.01.2010
Сообщений: 5
|
||||||
Как в программу VB вставить код записанный из VBA Excel?13.02.2010, 01:00. Показов 5244. Ответов 12
Метки нет (Все метки)
Всем доброе время суток. Я начинаю изучать программирование на Visual Basic, и столкнулся с таким вопросом, каким образом код макроса, записанный в Microsoft Excel можно вставить в программу. Задача следующая: программа запускает файл (*.xls), через каждые две минуты повторяет ряд действий с возможностью остановки таймера. При закрытии программы книга Excel сохраняется и закрывается. Также хочется, чтоб программа работала только на моем рабочем компьютере, для чего необходимо произвести проверку системы. Код и саму программу прилагаю. Всем буду благодарен за помощь.
0
|
||||||
| 13.02.2010, 01:00 | |
|
Ответы с готовыми решениями:
12
Как значение из VBA вставить в формули Excel Как на UserForm вставить Лист1 Excel? В VB это возможно, а в VBA? Пользовательская функция на VBA для Excel - как вставить данные на лист? |
|
73 / 40 / 3
Регистрация: 07.02.2010
Сообщений: 72
|
||||||
| 14.02.2010, 20:21 | ||||||
Сообщение было отмечено как решение
Решение
Как я понял, твой макрос не написан, а сгенерирован Excel. Лично я так не делаю(в целях универсальности и переноса скрипта в другие документы). Для твоего случая (я так понял тебе необходимо выполнить какие-то действия с документом Excel из внешнего приложения) - создаешь объект Excel (dim Exc as object : set Exc = createobject("excel")), далее с помощью него открываешь нужный документ... пардон в твоем куске кода это уже есть, обращаешься не к регионам по буквенно-цифровому адресу("B1"), а обращайся к объекту sheet(или activeSheet).cells(row,col) , тебе не придется использовать буфер обмена(как в твоем примере макроса), ты сможешь считать значения нужной ячейки в переменную (ну или напрямую в другую ячейку). Дальше можешь творить с данными все, что душе угодно(можешь вычисления произвести, рассортировать, выгрузить в конце-концов в БД что-ли). Прошу извинения за сумбур в ответе...
Добавлено через 7 минут А по поводу запуска только на твоем компе есть пример получения имени компьютера(потом сравни полученое имя с оригиналом и если не сойдется программу заверши, таким образом твоя программа будет привязана к компу с определенным именем) Пример взял где-то давно, источник не помню, но работает как часы)
4
|
||||||
|
0 / 0 / 0
Регистрация: 25.01.2010
Сообщений: 5
|
||||||||
| 15.02.2010, 21:49 [ТС] | ||||||||
А вот по этому совету: ![]()
0
|
||||||||
|
73 / 40 / 3
Регистрация: 07.02.2010
Сообщений: 72
|
||||||
| 15.02.2010, 22:34 | ||||||
|
Для начала:
если содержимое ячейки нужно именно как бы вырезать (очистить) то: ActiveSheet.Cells(2, 2)="" и все Добавлено через 11 минут Насчет таймера: Размещаешь где хочешь(на любой твоей форме), свойство interval = милисекунд, свойство enabled=true, в обработке события Timer1_timer() пишешь нужный код, но.... в коде размещаешь оператор обработки прерываний DoEvents. В этом месте система будет ожидать событий, а наша задача его подсунуть скажем в событие KeyDown формы (если код клавиши равен... можно с шифтом, то Timer1.interval=0, Timer1.Enable=False и вывалиться из программы например).
1
|
||||||
|
0 / 0 / 0
Регистрация: 25.01.2010
Сообщений: 5
|
|
| 15.02.2010, 22:42 [ТС] | |
|
Спасибо
с замещением ячеек все понятно только при запуске приложения выкидывает ошибку как с ней быть?
0
|
|
|
73 / 40 / 3
Регистрация: 07.02.2010
Сообщений: 72
|
||||||||||||||||
| 15.02.2010, 22:58 | ||||||||||||||||
|
Понял, прозевал моментик
Добавлено через 6 минут и еще перед этим всем нужно получить экземпляры обьектов директивой Set
Вот для примера куски моего кода на схожую тему, думаю разберешься:
1
|
||||||||||||||||
|
0 / 0 / 0
Регистрация: 25.01.2010
Сообщений: 5
|
||
| 16.02.2010, 21:35 [ТС] | ||
|
файл "\ME.xls" запущен
![]() И прошу пояснить для чего необходим оператор выполнения последовательности команд "with...end with" и какие экземпляры обьектов нужно получить директивой Set
0
|
||
|
73 / 40 / 3
Регистрация: 07.02.2010
Сообщений: 72
|
|||||||||||||||||||||
| 16.02.2010, 22:08 | |||||||||||||||||||||
|
Операционные скобки With ..... End With служат для сокращения записи. К примеру чтоб не набивать в каждой строчке Form1.Picture1 при обращении к свойствам Picture1(если их скажем кучу сразу поменять захотелось) пишем:
Добавлено через 8 минут по поводу ошибки: на скрине VB ругается на обьект которого нет, в данном случае это и ActiveWorkBook и ActiveWorkBook.Sheets Сделай так:
дальше по примеру
Про обьекты забыл написать mExcel - экземпляр Excel, как бы базовый обьект, он создает/открывает книгу - mapWorkBookOut в которой есть лист - mWorkSheet с которым мы в данный момент работаем. Таким образом тебе нужны три обьекта, создаем их директивой Set. Добавлено через 4 минуты Еще пунктик!!! после работы с обьектами их обязательно нужно зачистить, иначе может даже процесс в памяти остаться навсегда.
1
|
|||||||||||||||||||||
|
0 / 0 / 0
Регистрация: 25.01.2010
Сообщений: 5
|
|
| 16.02.2010, 22:40 [ТС] | |
|
Огромное спасибо за разъяснения.
![]() Теперь буду весь раздел собирать в первоначальный код "задачу" ![]() Еще раз благодарю kres, будут вопросики задам.
0
|
|
|
90 / 58 / 7
Регистрация: 07.02.2010
Сообщений: 732
|
||||||
| 26.12.2010, 07:48 | ||||||
|
Здрям! Продолжу тему:
Сгенерировал в Экселе код:
Мой с ним бой рождает только дополнительные ошибки. Добавлено через 18 минут P.S. После таки импорта этого кода в VB (предполагаю, что очень некорректного ) выдает сообщение, что Range, Row, Columns не определены.
0
|
||||||
|
90 / 58 / 7
Регистрация: 07.02.2010
Сообщений: 732
|
|
| 14.01.2011, 19:02 | |
|
Вот как нерадивым студентам задачки решать, так это вообще без базара, а как что посерьезнее, так тишина гробовая.
Подскажите тогда, пожалуйста, пару хороших книг по данному вопросу.
0
|
|
|
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
|
|
| 14.01.2011, 21:27 | |
|
Kir@,
т.е. нужно работать через VB в Excel? Библиотеку Excel надо подключить. Как это сделать, сейчас не знаю.
1
|
|
|
90 / 58 / 7
Регистрация: 07.02.2010
Сообщений: 732
|
||||||
| 15.01.2011, 16:11 | ||||||
0
|
||||||
| 15.01.2011, 16:11 | |
|
Помогаю со студенческими работами здесь
13
Excel+VBA как программно вставить и сохранить на листе картинку из внешнего файла? Как защитить VBA код в EXCEL?
Вставить в код VBA код на другом языке
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Ниже машинный перевод статьи The Thinkpad X220 Tablet is the best budget school laptop period .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы,. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|