Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Excel VBA (часть 2)

Автор: Caragius
Дата сообщения: 24.12.2008 17:28
Помогите, пожалуйста, для зачета необходимо решить такую систему методом Крамера

x-y-z=-2
2x-3y-z=-5
5x+7y+z=0

решить необходимо через Visual Basic .

Знаю, что там есть строки
типа
Cells(...)=Cells()/....

Очень прошу помощи
Автор: abb269
Дата сообщения: 25.12.2008 11:33
Здравствуйте,
Может кто подскажет как из макроса Екселя запустить немикрософтовскую программу.
Заранее спасибо
Автор: Vitus_Bering
Дата сообщения: 25.12.2008 14:30
abb269
Shell


Добавлено:
abb269
Shell


Добавлено:
abb269
Используй Shell.
Автор: Aleksanderac
Дата сообщения: 25.12.2008 14:52
усе. спасибо не нужна ваша помощь. когда сохраняешь как надстройки все работает как надо))))
Автор: abb269
Дата сообщения: 25.12.2008 15:25
2Vitus_Bering: спасибо, понял
Автор: TeHNoSaL
Дата сообщения: 25.12.2008 18:27
У меня вопрос, если Excel используется как база данных,допустим есть несколько скрытых листов с значениями, что мне надо сделать чтобы изменить скрытые данные?при том что я не вижу тех листов...
Автор: Frantishek
Дата сообщения: 25.12.2008 21:44
Парни могите плиз разобраться с функцией ВПР.
Нужно сопоставить данные по источнику дата+время вида [00.00.0000 00:00:00] - нифига не получается, почему то функция ориентируется только на первую часть данных (дата) а время игнорируется как составляющая вообще, в результате оригинальность строк не выдерживается и сопоставление проводится некорректно.
Пробовал перевести в текстовый формат, получив некие цифири с дробной частью, так блин и здесь та же песня - вся дробная часть игнорируется. Наверняка же есть решение?
Автор: V4mp
Дата сообщения: 26.12.2008 00:30
Спецы, прошу помощи.
Нужно в эксэле с помощью vba открыть внедренный в него документ ворд, как то вбить в него данные с ячеек эксэля, а затем сохранить этот документ в любую папку. Причем сделать это нужно с помощью макросов эксэля, в документ ворда желательно никаких макросов не вставлять.
Возможно ли это?
Просто даже не представляю, как из эксэля можно управлять вордом...
Можете дать только команды, дальше сам постараюсь разобраться)
Автор: Vitus_Bering
Дата сообщения: 26.12.2008 08:17
V4mp

Цитата:
как из эксэля можно управлять вордом.

OLE-сервером Excel, погугли на эту тему.

Автор: MaximuS G
Дата сообщения: 26.12.2008 10:56
Frantishek
Покажите пример

Добавлено:
TeHNoSaL
А подробней можна ?
Автор: Frantishek
Дата сообщения: 26.12.2008 14:56
MaximuS G
http://slil.ru/26485394
Автор: MaximuS G
Дата сообщения: 26.12.2008 16:14
Frantishek
М-да, пробуйте как то по другому, видимо эту функцию глючит при работе с датами причем такого формата... Интересно, что СОВПАД возвращает ИСТИНУ... Не используйте ее вообще при работе с таким типом данных, что бы исключить ошибку.
Автор: CEMEH
Дата сообщения: 27.12.2008 14:12

Цитата:
Просто даже не представляю, как из эксэля можно управлять вордом...

Открой тему в версии для печати и ищи мой ник (написан англ буквами). Я этот вопрос задавал. Теперь активно пользуюсь.
Автор: V4mp
Дата сообщения: 28.12.2008 17:03
CEMEH

Цитата:
Открой тему в версии для печати и ищи мой ник (написан англ буквами). Я этот вопрос задавал. Теперь активно пользуюсь.

ОГРОМНОЕ СПАСИБО!
в кратце что наобъединял с форума (просьба не ругать за использование чужих ответов, просто лучше, если они все будут в одном посте):
админам просьба добавить вопрос в шапку, а то наверное не я один интересуюсь подобным вопросом...
------------
Пример вставки в новый Word документ (предварительно в Excel надо подключить библиотеку Word):


Цитата:
Dim word_ As Word.Application
Set word_ = New Word.Application
word_.Documents.Add ' создаем новый документ Word
q = Cells(1, 1).Value ' то что будем вставлять в Word
word_.Selection.TypeText Text:=q ' собственно - вставляем в Word
word_.Visible = True ' делаем документ Word видимым, т.к. по умолчанию он не видим.

------------
Как поключить библиотеку Word'а:


Цитата:
меню Tools / References
находишь Microsoft Word 11.0 Object Library (вместо 11.0 у тебя может быть другая версия - зависит от версии Офиса)
разумеется, что приведённый код будет работать исключительно на машине, на которой установлен Word!

------------
Добавление информации с Excel в Word путем поиска-замены:


Цитата:
Ты говоришь про обычную замену - так иногда делают. Когда Тебе надо вставить текст в Word он привязывается к положению - страница, строка, символ... А если у Тебя изменится прочий-исходный текст что тогда - править макрос?
Чтобы избежать такого гемороя обычно в местах вставки указывают всякую фигню, типо твоей
Цитата:{asdf}
А в макросе пишут - заменить врагмент на...
Вот пример:
Dim Word_ As Object 'Описываем переменную как объект
Set Word_ = GetObject("c:\Мои документы\Sghasdrhy.doc") 'Инициализируем объект. Он автоматом откроется.
Word_.Application.Visible = True 'Делаем его видимым
With Word_.Application.Selection.Find 'Параметры поиска-замены
.Text = "{arqwtrq}" 'то - что ищем.
.Replacement.Text = "asfwqwtqwt" 'то - на что заменяем
.Execute Replace:=wdReplaceAll 'заменяем
End With


Добавлено:
В топике Excel FAQ (часть 4) мои вопросы повисли в воздухе.. может тут кто знает?

1) есть эксэлевский файлик, сохранен из 2007 эксэля в формате excel 2003.
зашифрован на открытие.
и при открытии ентого файла в 2007 эксэле и последующем сохранении ВСЕГДА задается вопрос -
Данный документ зашифрован и защищен паролем. Форматы Office Open XML, доступные в выпуске 2007, обеспечивают более надежное шифрование. Преобразовать документ в формат Office Open XML, чтобы улучшить его защиту?
как этот вопрос убрать? желательно каким-нибудь кодом VB или на худой конец настройкой...

2) в 2003 эксэле вроде нет такого понятия - особый колонтитул на первой странице. (в отличие от 2007 эксэля - там эта фишка появилась) А как все-таки это организовать каким-нибудь хитрым кодом?
Автор: q1wed
Дата сообщения: 29.12.2008 10:16

Цитата:
В топике Excel FAQ (часть 4) мои вопросы повисли в воздухе.. может тут кто знает?

1) есть эксэлевский файлик, сохранен из 2007 эксэля в формате excel 2003.
зашифрован на открытие.

а в указанном топике между прочим ответ прозвучал, повторю его еще раз: сохраняем файл в формате 2007 на 2003 офис устанавливаем обновление позволяющее открывать файлы 2007 офиса. предельно просто, а главное правильно: с течением времени файлов под 2007 будет все больше и больше и без этой обновы твои пользователи 2003 офиса тя просто "заклююють"
Автор: V4mp
Дата сообщения: 29.12.2008 21:30

Цитата:
а в указанном топике между прочим ответ прозвучал, повторю его еще раз: сохраняем файл в формате 2007 на 2003 офис устанавливаем обновление позволяющее открывать файлы 2007 офиса. предельно просто, а главное правильно: с течением времени файлов под 2007 будет все больше и больше и без этой обновы твои пользователи 2003 офиса тя просто "заклююють"

http://www.microsoft.com/downloads/details.aspx?displaylang=ru&FamilyID=941b3470-3ae9-4aee-8f43-c6bb74cd1466
Имя файла:    FileFormatConverters.exe
Размер загружаемого файла:    27.6 МБ
слишком большой размер файла для других людей, у которых dial-up...
и еще смущает такая строчка -
Пользователям программ Word, Excel или PowerPoint пакетов Microsoft Office XP и 2003: перед загрузкой пакета обеспечения совместимости установите обновления с высоким приоритетом с веб-узла Microsoft Update.
т.е. конвертер может еще и не стать без обновлений.
есть ли другое решение проблемы?
Автор: q1wed
Дата сообщения: 31.12.2008 07:15
V4mp
на офис 2003 SP3 (без доп. обновлений) встает без проблем, сдается мне на SP1 тож встанет
Автор: KolyaP
Дата сообщения: 03.01.2009 23:51
Подскажите как задать ссылку на объект таким образом, чтобы можно было ею пользоваться не только внутри текущей процедуры?

Например
Set r_p_ID_rc = Sheets(perech_sh).Names("ID_rc").RefersToRange
действует только локально
Автор: Olive77
Дата сообщения: 04.01.2009 00:37
KolyaP
Public r_p_ID_rc

sub yourmacro
...
end sub
Автор: KolyaP
Дата сообщения: 04.01.2009 11:35

Цитата:
KolyaP
Public r_p_ID_rc

sub yourmacro
...
end sub

Спасибо!

Получается, что объявление Public нужно давать в начале модуля.
Я помещал его между макросами в середине, ничего не работало.

Добавлено:
Кстати еще я насколько понял, объявления глобальных констант, переменых и т.п. можно давать только в начале модуля. Объявления в начале пространства для кодов книги или листа не работают?
Автор: Olive77
Дата сообщения: 04.01.2009 14:20
KolyaP

Цитата:
объявления глобальных констант, переменых и т.п. можно давать только в начале модуля. Объявления в начале пространства для кодов книги или листа не работают?

угу
Автор: KolyaP
Дата сообщения: 04.01.2009 17:43
Olive77

Спасибо

Добавлено:
Обнаружил интересную особенность.
Если вставить ComboBox ("Поле со списком" из панели инструментов "Элементы управления"), а потом заполнить поле ListFill Range в свойствах, Excel запрашивает сохранить ли документ, на котором находится этот ComboBox независимо от того менялось что-либо в документе или нет.
Сталкивался кто-нибудь с таким?
И как от этого избавиться?
Автор: Timsi
Дата сообщения: 09.01.2009 22:36
День добрый!
Помогите разобраться с проблемой, пожалуйста !
Проблема: при наступлении определенной даты надо менять значение в огромной куче рабочих книг на строго определенное значение из другой книги, т.е. открываем файл - ищем нужное значение - находим -меняем-закрываем книгу -переходим к следующей и т.д. Надоедает ужас! Подскажите как автоматом закатать. Заранее спасибо!
Автор: CEMEH
Дата сообщения: 10.01.2009 20:12
Timsi
В принципе
Цитата:
открываем файл - ищем нужное значение - находим -меняем-закрываем книгу -переходим к следующей и т.д.

Это уже готовый код. Осталось только перевести его на язык VBA

Цитата:
при наступлении определенной даты
Кто будет контролировать наступление даты? Легче всего создать книгу КонтрольДаты.xls, которую открывать через назначенные задания. Например каждый день в 3:00 запускается КонтрольДаты.xls. в нем код Private Sub Workbook_Open() который сравнивает текущую дату now() с заранее занесенной в какую нить ячейку.
В зависимости от того, что из себя представляет
Цитата:
другой книги
(Может эту книгу с подставляемыми данными вам по сети кидают. ) Либо открывать другую_книгу.xls брать из нее значения и подставлять в кучу_разных_книг.xls Либо, если это ваш файл, то необходимые данные разместить в запускаемой по назначенному заданию КонтрольДаты.xls
Что может пригодиться:
1) Книгу лучше открывать. Я однажды пользовал макрос, который извлекал данные из других книг не открываючи их. Потом вылез глюк. (А может просто файл был слишком большой) Дописал макрос, чтобы книги открывались и закрывались. Стало работать быстрее.
2) ThisWorbook.Path - путь до папки, с которого запущена книга. Пригодится, если придется часто менять дислокацию (флешки, диски и т.д.) папки, в которой будет расположена вся эта картотека.
3) Запись макросов и их последующее редактирование.
4) Форум. Это наверное, первое.


Автор: Timsi
Дата сообщения: 11.01.2009 12:03
День добрый !
Еще раз шаркну ножкой - спасибо огромное за помощь!
Как вы правильно поняли другая книга это расшаренная книга_xls. Изменения в ней делают другие , я же визуально отслеживая сегодня = той дате , провожу изменения. Раб. книги . которые я изменяю .csv(для работы в другой системе ).
То что вы сказали ,я попробую использовать. Вся структуру работы неповоротлива и много ограничений по правам и т.д. и т.п. Вот и пытаюсь с чего-то начать.
Еще раз спасибо)))

Добавлено:
Перевести оказалось не просто , буду дальше пробовать.
Автор: CEMEH
Дата сообщения: 11.01.2009 20:39
Timsi
Ну так давайте пробовать. Задачка для начинающего (в смысле для меня) не сложная.

Не совсем понятны данные в расшаренной Другой_книге. Теоретически можно создать книгу на своем рабочем месте. А вот в ячейки вставить формулу
='\\192.168.1.2\Расшаренная_Папка\[Другая_Книга.xls]Лист1'!$A$1
Теперь, при открытии книги все данные из Другой_Книги будут в вашей. (разумеется, путь к ней у вас будет совершенно другой)

Далее
Цитата:
я же визуально отслеживая сегодня = той дате , провожу изменения

Какого рода изменения?
Допустим Другая_Книга\лист1 и в нем два столбца Наименование_товара и цена. Администратор Другой_Книги ежедневно вносит изменения и вам надо отследить что изменялось? Тогда ваша_книга будет состоять из двух листов Лист1 с вышеуказанной формулой, а лист2 со старыми значениями.
При запуске макроса происходит сравнение каждой ячейки. Если значения отличаются то выполняется некий код, после чего данные из Лист1 копируются в лист2. Если значения равные то ничего не делается.
Не, гадать не буду. Давайте более подробную инфу. Что лежит в Другой_Книге и какие данные нужно получить на выходе.
Кстати VBA лехко пишет в файлы txt... И читает их.
Автор: ttipp
Дата сообщения: 14.01.2009 11:36
ребята помогите пажалуйста! мне нужно както с одно листа с помощью SQL запроса вывести данные на другой в одной книге Excel! приходится подключатся через внешний источник данных к самому себе! тут пастоянно возникают какие то косяки: почему то в одной книге всё работает, а в другой тот же макрос выдаёт ошибку! можно как нибудь это сделать не через подключение к внешним источникам, а допустим через тотже listobject через commandtext??? заранее благодарен!!!
Автор: Timsi
Дата сообщения: 14.01.2009 16:33
День добрый Семен !
Спасибо за ответ!
Теперь инфа:
1)есть около 40 файлов .csv с ценами , т.е. один столбец с наименованием и ценой.
2)Есть файл .xls в нем 4столбца -а) наименование и цена(так скажем текущая)
b)наименование и цена (новые)
c)дата перехода на новую цену
d)мой коммент ,что переход выполнен
Одна из моих обязанностей мониторить этот файл и если сегодня = дате перехода,изменять
в файлах .csv старую цену на новую.
Файлом переходов ,ведает начальник другого подразделения .
Согласен система не удобна, но это к делу не относиться.
так .что если вы Семен согласны ,чем то помочь.хотя бы советом ,буду благодарен.
надо писать макрос, но знаний реально не хватает .
Еще раз спасибо!
Автор: lanselotideo1111
Дата сообщения: 14.01.2009 16:37
Добрый день. Товарищи, помогите решить задачу:

В Excel в ячейке нужно получить выпадающий список, состоящий из некоторого диапазона значений. Задача в том, как получить заливку ячейки того же цвета, что и в условии? Список, получаемый из "Данные - Проверка" не закрашивает ячейку в цвет из списка.
Автор: SAS888
Дата сообщения: 15.01.2009 04:54
Можно по событию изменения значения в ячейке с Вашим выпадающим списком запускать макрос и делать все что угодно.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133

Предыдущая тема: Написание своего HyperTerminal для считывания данных


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.