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

» Excel VBA (часть 2)

Автор: V4mp
Дата сообщения: 19.02.2009 19:39

Цитата:
да. через OLE-автоматизацию.

А можно простейший пример какой нибудь?
Например, берем данные с ячейки A1 - подставляем в существующий документ ворд - с документа записываем данные в ячейку A2.


Цитата:
Application.EnableCancelKey = xlDisabled
'Здесь должен быть код Вашей программы.
Application.EnableCancelKey = xlInterrupt

Спасибо.


Цитата:
попробуйте здесь - Технические характеристики и ограничения Microsoft Excel

немного не то - как я понял, это ограничения самого эксэля, но не vba

Автор: Akvilon1
Дата сообщения: 21.02.2009 00:54

Цитата:
И еще один вопрос -
как из vba получать письма с почты? Возможно ли это напрямую из кода и как? Или лучше всего подключать какие-нибудь сторонние библиотеки? Тогда посоветуйте, какую выбрать.
С отправкой разобрался - оптимальный вариант - использовать CDO.MESSAGE А вот что делать с получением?


Можно попробовать работать напрямую с почтовым сервером через winsock или сетевые API с использованием протокола SMTP. Помнится я так и делал когда нужно было получить почту с сервера. Это быстрее, проще, надежнее ИМХО чем подключать сторонние библиотеки и\или использовать модели Outlook и пр.
Пример найти у себя не смог попробуйте посмотреть: Здесь и Здесь о протоколе SMTP

Если решите пойти этим путем и не разберетесь пишите - будем разбираться вместе
Автор: grooogler
Дата сообщения: 21.02.2009 12:00
Понадобился вот такой вот макрос.

Таблица А:
111111:ппппппп@111111:ппппппп@55345.ftp.543534534.ru/53453453.ru/www
вававававава:oojaiH4j@вававававава:oojaiH4j@neels.ru
..........:444444444444@..........:444444444444@444444444444444444.ru
prima:fffffffffffff@prima:fffffffffffff@gral.rudddd

Таблица В (Результат)
111111:ппппппп@55345.ftp.543534534.ru/53453453.ru/www
вававававава:oojaiH4j@neels.ru
..........:444444444444@444444444444444444.ru
prima:fffffffffffff@gral.rudddd


Как именно он должен это сделать.
В наших строках присутствует повторение некоторых вещей через @
"111111:ппппппп@" и "111111:ппппппп@"

"вававававава:oojaiH4j@" и "вававававава:oojaiH4j@"

"..........:444444444444@" и "..........:444444444444@"

"prima:fffffffffffff@" и "prima:fffffffffffff@"

Вот такие дубли и надо убрать во всех строках Таблицы А, и получившееся поместить в Таблицу В. Всё остальное оставляем без изменений. Дубли убираем только вот по тому принцыпу что я написал выше, то есть "*:*@". Если строка не содержит никаких таких дублей - ничего в ней не меняя тоже пишем её в Таблицу В.
Заренее спасибо.

p.s. шаблон здесь http://slil.ru/26937210
Автор: saha4
Дата сообщения: 23.02.2009 16:53
Здравствуйте, подскажите, в графике мне нужно поставить вместо чисел по оси Х месяци (конкретно Июнь, Июль, Август, Сентябрь).Я нашел как поставить месяци но у меня выбило все Январь.Подскажите, как решить проблему...Зарание спасибо!
Автор: SAS888
Дата сообщения: 24.02.2009 05:57
grooogler
Посмотрите Здесь. Запустите макрос "DelDouble".
Автор: CEMEH
Дата сообщения: 24.02.2009 14:30
ВОПРОСЫ

1. Каким образом Excel запустить в режиме "свернуть"? Книга будет открываться каждый час, в ней выполняется макрос но это не должно мешать работе на компьютере.

2. Как убрать процес excel после завершения работы программы?
ActiveWindow.Close закрывает только книгу, а сам excel висит на рабочем столе.

3. Может есть способ реализации двух первых вопросов заставив excel работать в режиме не отображать на экране? Какие есть варианты скрытого запуска Excel из назначенных заданий?

4. Каким образом записать на VBA удалить.файл "C:\бла\бла\файл.txt"
В "Первых шагах" есть примеры работы с файлами и папками, а про удаление файлов нет ничего.
(уже нашел http://msoffice.nm.ru/faq/macros/workbooks.htm#faq68 )
Автор: SAS888
Дата сообщения: 25.02.2009 04:04
CEMEH
1. Чтобы Excel при запуске сворачивался, вставьте в модуль "Эта книга" код:

Код: Private Sub Workbook_Open()
Application.WindowState = xlMinimized
End Sub
Автор: Troitsky
Дата сообщения: 25.02.2009 08:17
CEMEH

Цитата:
3. Может есть способ реализации двух первых вопросов заставив excel работать в режиме не отображать на экране? Какие есть варианты скрытого запуска Excel из назначенных заданий?

Если имеются в виду стандартные "Назначенные задания", то удобнее, видимо, будет запускать через них скрипт vbs, в котором и описать должным образом что же хотите получить от Excel'я. Типа Visible=False и т.п.
Автор: artursn
Дата сообщения: 25.02.2009 11:05
доброе время суток. Есть такая проблема.
Есть лист, на нем расположены строки
кол название данные.......
потом идем промежуточные итоги

Нужно сделать чтоб данные с этого листа переносились на другой и группировались по названию
Например.
есть такие данные
1, поз 1, 12, 34, 23, 34
1, поз 2, 34, 23, 11, 33
2, поз 1, 32, 234, 66, 45

нужно чтоб создались или два листа с название поз 1 и поз 2
или на одном листе 2 таблицы поз 1 и поз 2
строчки могут меняться....
Автор: CEMEH
Дата сообщения: 25.02.2009 14:42
Troitsky

Цитата:
Если имеются в виду стандартные "Назначенные задания",

Именно так и есть

Цитата:
Visible=False и т.п.

А можно подробнее?
Автор: Arch1S
Дата сообщения: 25.02.2009 15:49

Цитата:
А можно подробнее?

а что тут поподробнее то?
Visible имеет тип bool, тоесть может принимать только true и false

используешь Visible=False с объектам
Автор: artursn
Дата сообщения: 25.02.2009 16:40
вот примерно что получилось....как это можно упростить и сократить.
Test
Автор: SAS888
Дата сообщения: 26.02.2009 07:43
artursn
Посмотрите Здесь.
Автор: artursn
Дата сообщения: 26.02.2009 09:42
Мне немножко не так надо.
Нужно только чтоб выводило среднее по группе и все...справа я делал таблицу вспомогательную, потому что по другому не знал как посчитать...и вначале делить хотел чтоб посчитать среднее.
Автор: SAS888
Дата сообщения: 26.02.2009 09:46
artursn

Цитата:
Мне немножко не так надо.
Телепатов здесь нет.
Прикрепите файл-пример того, что должно получиться. Например, на 1 листе - данные, на 2 - желаемый результат. И подробно опишите что требуется.
Автор: artursn
Дата сообщения: 26.02.2009 10:36
вот сделал лист исходные данные и результат...
Таблица
В идеале нужно посчитать по группе авто средний коэффициент, как это я делал на первой листе по условиям. Потом на основе этого сформировать лист, на котором будут все авто одной группы, и гос номер, число, средний коэффициент по группе, и рассчитать сумму.... Исходные данные могут меняться, есть объединены ячейки(промежуточные итоги) в исходных данных, которые не надо учитывать.
Автор: skawl
Дата сообщения: 26.02.2009 11:09
Привет. Такой вопрос по VBA. У меня есть функция Application.Inputbox в которую вводятся цифры, которые дальше используются в формулах для подсчёта значений. Мне нужно сделать проверку. Например, если вводят не цифры, а буквы - нужно чтобы вылазило окошко с сообщением об ощибке.
Автор: SAS888
Дата сообщения: 26.02.2009 12:19
skawl
Например, так:

Код: M1: a = InputBox("Введите число")
On Error Resume Next
a = CDbl(a)
If Err <> 0 Then
MsgBox "Недопустимое значение"
GoTo M1
End If
On Error GoTo 0
Автор: artursn
Дата сообщения: 26.02.2009 15:48
SAS888
а мое не смотрел?
Автор: SAS888
Дата сообщения: 27.02.2009 07:39
artursn
Посмотрел. На сколько понял, сделал Здесь.
Автор: artursn
Дата сообщения: 27.02.2009 10:02
Все то, но методика расчета среднего коэффициента, из-за чего вся эта вазня не такая...
Для того чтоб рассчитать этот коэффициент нужно сложить по одной группе все "число" , все по "сумма", потом разделить "сумма" на "число" и на этот коэффициент умножать на листе "результат" все группу. для этого я писал все те условия по выбору чисел....
Автор: SAS888
Дата сообщения: 27.02.2009 10:31
artursn

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

Я так и делаю. Коэффициенты считаются как по каждой строке, так и в строке "Итого по группе". А вот что делать после
Цитата:
и на этот коэффициент умножать на листе "результат" все группу
не понятно. Пожалуйста, по-подробнее.
Давайте сделаем так.
В моем последнем файле выполни макрос, и на листе "результат" в столбце "средний коэффициент" вставьте те формулы, которые требуются. тогда мне все будет ясно. После того, как мы сформировали "результат" и подсчитали эти коэффициенты, что еще нужно делать? Не понимаю.
Автор: artursn
Дата сообщения: 27.02.2009 10:31
и еще у меня колонки в оригинале "число" в "G", сумма на "W" можешь в коментариях показать как выбрать нужный столбец

Добавлено:
вот по строчке считать не надо...а на тот коэффициент который получился в результате "итого по группе" умножать все строчки группы.
Автор: SAS888
Дата сообщения: 27.02.2009 10:49
artursn
Лаконичность, конечно, хорошо. Но не до такой же степени. Не экономьте слова.
Цитата:
на тот коэффициент который получился в результате "итого по группе" умножать все строчки группы.
Какие строки? Получили коэффициент по группе, умножили на него (что?) и куда результат?
Автор: artursn
Дата сообщения: 27.02.2009 11:00
ну вот мы посчитали коэффициент в итоговой строке. теперь этот коэффициент надо прописать во всех строках этой группы.... а потом умножить "число" на "коэффициент" и получить "сумму".
Автор: kronic
Дата сообщения: 27.02.2009 11:49
Помогите разобраться
как можно из переменой содержащей разные симолы в том числе и управляющие оставить только : "+-0123456789."
Заранее спасибо.
Автор: artursn
Дата сообщения: 27.02.2009 11:49
с исходных данных мы берем 2 числа: "число" и "коэффициент для группы"
потом на листе результатов формируем: авто, число, коэффициент, и сумма которая равняется "число" умножить на "коэфф"
Коэффициент для одной группы авто одинаковый!!!!!
в итоги коэффициент не надо считать..там только итоги по "число" и по "сумма"
Автор: volanddt
Дата сообщения: 27.02.2009 15:45
Друзья! Задача довольно тривиальная, обращаюсь к мало-мальски понимающим людям в VBA и excel. Помогите чем можете!!!

Здесь сама задача, ну не выходит у меня каменный цветок. =)))
Автор: Jaroldino
Дата сообщения: 27.02.2009 15:56
Хелп
Есть книга, в которой несколько листов. На каждом листе есть много табличек, в которых есть одна ячейка "ФИО сотрудника" и в соседней сами ФИО. Общее количество фамилий заранее неизвестно.
Как программно найти фамилии сотрудников во всей книге и загнать их в ListBox (отбрасывая при этом дубли).
Заранее благодарю.
Автор: orange2009
Дата сообщения: 01.03.2009 09:51
Неделю назад начал учить vba. А для работы очень нужен. Помогите страждущему.
Проблема: есть колонка в ней варьируется кол-во значений(от 1 до ххх), мне нужно узнать сколько заполненных значений в колонке(типа СЧЕТЕСЛИ), а затем эти значения просуммировать (значения строковые), вот что я наваял
Dim s As Worksheet
Dim l As Worksheet
Dim k As String

Set s = Worksheets("Титульный")
Set l = Worksheets("Заказчик")
k = "образованием земельного участка путем объединения земельных участков с кадастровыми номерами "

s.Range("a10") = k & l.Range("i9") & " ; " & l.Range("i10") & " ; " & l.Range("i11") & " ; " & l.Range("i12")

но хочется не менять каждый раз код, когда меняется кол-во строк, как это сделать в цикле, ума не дам?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133

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


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