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

» Excel VBA

Автор: jONES1979
Дата сообщения: 26.02.2007 16:29
saurian

[more]
Код:
'Send Email without Installing the SMTP Service
'Description
'Demonstration script that uses CDO to send email from a computer where the SMTP Service has not been installed. Designed to work on Microsoft's
corporate network.

Set objEmail = CreateObject("CDO.Message")
objEmail.From = "admin1@fabrikam.com"
objEmail.To = "admin2@fabrikam.com"
objEmail.Subject = "Server down"
objEmail.Textbody = "Server1 is no longer accessible over the network."
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
"smarthost"
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objEmail.Configuration.Fields.Update
objEmail.Send
Автор: FiziK07
Дата сообщения: 27.02.2007 12:32
Нужна помощь.

Как объединить все листы книги в один? Формат листов одинаковый

Тоесть, чтобы создался новый лист с даными всех листов.

Помогите плизз !!!
Автор: SERGE_BLIZNUK
Дата сообщения: 27.02.2007 14:35
FiziK07
Цитата:
Тоесть, чтобы создался новый лист с даными всех листов
ну, что значит "с данными всех листов"?
пусть на первом листе:
A B C
Иванов 12 01.12.2006

на втором
Петров 32 01.02.2007

что должно быть на итоговом??
Автор: FiziK07
Дата сообщения: 27.02.2007 14:39
jONES1979

На итоговом должно быть
A B C
Иванов 12 01.12.2006
Петров 32 01.02.2007



Автор: pasha123321
Дата сообщения: 27.02.2007 20:58
Помогите! Есть на листе коллекция рисунков. Нужно: вставлять в определенную ячейку другого (или этого же) листа один из рисунков на выбор (возможно, из раскрывающегося списка). Коллекция статическая.
Автор: Olive77
Дата сообщения: 28.02.2007 11:53

Цитата:


Цитата: Цитата:есть ли соединение с интернетом (в общем случае)?


http://www.vbnet.ru/subscribe/showsubscribe.asp?id=56#cunning1
Автор: pavelkoryakin
Дата сообщения: 28.02.2007 15:36

Цитата:
Снятие блокировки со страницы, если пароль забыл

А как снять защиту VBA проекта? Я не могу его развернуть в редакторе, требует пароль...
Автор: The okk
Дата сообщения: 01.03.2007 09:39
pavelkoryakin
Снять защиту можно только если знаешь пароль. Если забыл пароль, придется взламывать - это тебе не с листа защиту снимать
Автор: Stasssm
Дата сообщения: 01.03.2007 09:40
Подскажите, как мне автоматизировать сравнение двух списков, т.е.
есть список оборудования с инвентарными номерами:

А В
инв.номер наименование

через месяц бухгалтерия выдала новый список и у меня есть подозрения, что несколько позиций были либо удалены (списано оборудование), либо добавлены. Уверен, что переименовывание не делали, т.е. ни для одного инв. номера не меняли наименование оборудования.
Как можно заставить Excel помочь мне определить какие позиции были удалены или добавлены, чтобы мне не искать это вручную, т.к. список очень большой.
Искать (сравнивать) можно только по инв. номеру.


Автор: The okk
Дата сообщения: 01.03.2007 10:15
Stasssm
Это делается с помощью формул ВПР. VBA тут не нужен. Делаешь столбец с функцией вида:
=ЕСЛИ(ВПР(параметры_старого_списка)=ВПР(параметры_нового_списка);ИСТИНА;ЛОЖЬ)
ВПР будет производиться по столбцам с инвентарным номером, сравниваться будут соответствующие значения в столбцах с наименованием.
В итоге, где будет ЛОЖЬ - там несовпадение. Если не понятно, пиши в тему Excel FAQ (ссылка в шапке).
Автор: jONES1979
Дата сообщения: 01.03.2007 12:15
pavelkoryakin
есть программы от elcomsoft

http://www.elcomsoft.com/prs.html
Advanced Office Password Recovery
Advanced VBA Password Recovery
Автор: Stasssm
Дата сообщения: 01.03.2007 14:10
Мне иногда приходиться работать со списками. Данные бывают разные - иногда это фамилии, иногда цифры.
Очень часто необходимо прошерстить какой-нибудь список и по какому нибудь критерию что-нибудь изменить. Вот например есть список:

А В С
12345 аааа ббббб
вввв гггггг
23456 ссссс дддд

и т.д.
Подскажите как можно, например используя FOR или FOR EACH... пробежаться по всей базе и удалить те строки, в которых пустые ячейки столбца А, т.е. удалить строку с данными "вввв" и "ггггг".
У меня как у собаки которая понимает, а сказать не может. Я читаю те модули которые вы пишете и могу немного их править, но самому построить от начала до конца весь макрос не получается, хотя ни один раз лазил читать Help по этим функциям.
Автор: AndVGri
Дата сообщения: 01.03.2007 19:10
Stasssm

Попробуйте нечто следующее:

Public Sub DeleteRow()
Dim LastRow As Long
Dim iRow As Long

'Пусть активная ячейка где-то в таблице
iRow = ActiveCell.CurrentRegion.Row
LastRow = ActiveCell.CurrentRegion.Rows.Count + iRow - 1&

Do Until iRow > LastRow
If IsEmpty(Cells(iRow, 1&).Value) Then
'удалить пустую строку
Cells(iRow, 1&).EntireRow.Delete
LastRow = LastRow - 1&
Else
'перейти к следующей
iRow = iRow + 1&
End If
Loop
End Sub
Автор: Dim75
Дата сообщения: 02.03.2007 05:53
помогите заполучить

ActiveX элемент MSFlexGrid

обыскал всё, не могу найти
а без него файл отказывается работать
Автор: The okk
Дата сообщения: 02.03.2007 05:58
Stasssm

Цитата:
Подскажите как можно, например используя FOR или FOR EACH... пробежаться по всей базе и удалить те строки, в которых пустые ячейки столбца А, т.е. удалить строку с данными "вввв" и "ггггг".

Данные - Автофильтр - Выбираешь первый столбец. В фильтре выбираешь "Пустые". Удаляешь. Все. Зачем тут VBA?

Добавлено:
Dim75

Цитата:
помогите заполучить

ActiveX элемент MSFlexGrid

обыскал всё, не могу найти

Странно. А разве этот контрол не входит в стандартную комплектацию? У меня установлен. Поищи у себя файл "msflxgrd.ocx" в папке system32
Автор: SERGE_BLIZNUK
Дата сообщения: 02.03.2007 07:23
The okk
Цитата:
Странно. А разве этот контрол не входит в стандартную комплектацию? У меня установлен. Поищи у себя файл "msflxgrd.ocx" в папке system32

похоже - не входит... У меня WinXP SP2 + Office 2002 SP3 - такого нет


Добавлено:
Элементы ActiveX, включенные в состав Microsoft Office XP Developer
В данной статье перечисленны все элементы ActiveX, включенные в Microsoft Office XP Developer. Список включает имя файла элемента ActiveX, название, версию и описание управления элементов. Далее представлено краткое описание элементов ActiveX,...

Автор: The okk
Дата сообщения: 02.03.2007 08:05
SERGE_BLIZNUK

Цитата:
похоже - не входит... У меня WinXP SP2 + Office 2002 SP3

И что, нет ни файла, ни дополнительного пункта в Additional Controls?
У меня та же конфигурация и у меня есть - пусть старая (2.0), но не из воздуха же она появилась .
Автор: Dim75
Дата сообщения: 02.03.2007 08:08
The okk

Цитата:
Странно. А разве этот контрол не входит в стандартную комплектацию? У меня установлен. Поищи у себя файл "msflxgrd.ocx" в папке system32


я проверял до этого - нет его
Автор: The okk
Дата сообщения: 02.03.2007 08:11
Dim75
Он?
Автор: Dim75
Дата сообщения: 02.03.2007 08:53
The okk

СПАСИБО ПРЕОГРОМНОЕ !!!!!
всё зашуршало )
Автор: Stasssm
Дата сообщения: 02.03.2007 09:45
The okk

Цитата:
Данные - Автофильтр - Выбираешь первый столбец. В фильтре выбираешь "Пустые". Удаляешь. Все. Зачем тут VBA?


Согласен с Вами полностью (в данном примере это делать лучше именно так), но мне хотелось на основе этого примера используя Ваш код в дальнейшем пытаться самому делая в коде небольшие изменения работать со списками, а не напрягать Вас из-за каждой проблемы. Если конечно это вас каждый раз не напрягает, то я буду с удовольствием писать.

Например недавно была ситуация, что из-за определенных данных второй ячейки списка (столбец В) нужно было скопировать данные рядом стоящей ячейки (столбец D) и поместить на другой лист (столбец С), но желательно чтобы данные шли по порядку, т.е. без пробелов в строках.
Если честно то расчитывал от вас получить что-то типа: Для всего списка данных, если данные ячейки (столбца В) = тому-то, то скопировать рядом стоящую ячейку на Лист2 в столбец С и так по всему списку.
Автор: The okk
Дата сообщения: 02.03.2007 09:58
Stasssm

Цитата:
Например недавно была ситуация, что из-за определенных данных второй ячейки списка (столбец В) нужно было скопировать данные рядом стоящей ячейки (столбец D) и поместить на другой лист (столбец С), но желательно чтобы данные шли по порядку, т.е. без пробелов в строках.

Это тоже решается без VBA - только уже вместо автофильтра просто Фильтр. Он как раз для этих целей и существует - копирует отфильтрованный список туда, куда укажешь.
Автор: tec4
Дата сообщения: 02.03.2007 10:00
Каждый месяц приходит таблица в Excel, число столбцов - фиксированное, число строк каждый раз разное. Подскажите, пожалуйста, как с помощью VBA (от нажатия кнопки) подсчитать сумму по строкам, чтобы она отображалась после последней записи в строке.
Автор: Stasssm
Дата сообщения: 02.03.2007 10:24
The okk

Сдаюсь! Вы победили!!!!
Хотя, все же иметь такой код очень хочется даже для того чтобы разобраться в нем, т.к. Help в Excele по VBA все же не для новичков, а в будущем кто знает что придется со списками творить, может не все проблемы смогут решаться фильтрацией или функциям типа ВПР.
Автор: The okk
Дата сообщения: 02.03.2007 11:13
Stasssm
"Золотое правило" VBA в Excel: "Если можешь обойтись без VBA - обойдись!"
Говорю на полном серьезе. Каждый раз, когда захочется что-то написать, убедись сначала, что это не реализуется формулами, фильтрами, условным форматированием и т.д.
Написать макрос фильтра несложно - нажми "Запись макроса" и сделай фильтр, потом нажми "Остановить" и посмотри полученный код - вот тебе и будет макрос.

tec4
А почему просто не поставить в последнюю ячейку формулу суммы? Или так: Данные - Итоги...
Автор: LevT
Дата сообщения: 02.03.2007 14:05

По поводу хелпа в новых офисах хочется долго и матерно ругаться. Такое ощущение, что у них там великие реформы затянулись - да так, что никак не вернутся к уровню хелпа 97 офиса... С VBA-хелпом традиционно все еще хуже, чем в среднем по больнице.

Автор: aar
Дата сообщения: 02.03.2007 14:07
LevT
А что вызывает нарекания?
Автор: The okk
Дата сообщения: 02.03.2007 14:20
aar
Присоединяюсь к вопросу.
Автор: xonix
Дата сообщения: 03.03.2007 16:07
Люди !!! поможите, кто может !!!
инече светит тупой ручной труд на пару недель ((

есть два листа с данными. на первом столбец с уникальными данными.
необходимо найти на втором листе данные из ячейки первого листа и скопировать в соседнюю по строке . на втором листе теже данные с ячейке плюс еще некоторые
С наскока в книжках не нашел, а надо делать
Автор: SERGE_BLIZNUK
Дата сообщения: 03.03.2007 17:59
Stasssm
Цитата:
Если честно то расчитывал от вас получить что-то типа: Для всего списка данных, если данные ячейки (столбца В) = тому-то, то скопировать рядом стоящую ячейку на Лист2 в столбец С и так по всему списку.

таких программок здесь было вагон и малюсенькая тележка!
вот, например, так можно:

Код:
Sub Example1()
' Определить число используемых рядов:
nr = ActiveWorkbook.ActiveSheet.UsedRange.Rows.Count
' Прыгаем вверх до последней заполненной ячейки:
col = 2 ' работать будем со столбцом 2 (это B)
firstrow = ActiveWorkbook.ActiveSheet.Cells(1, col).End(xlDown).Row ' первая использованная строка в столбце Col
lastrow = ActiveWorkbook.ActiveSheet.Cells(nr, col).End(xlUp).Row ' последняя использованная строка в столбце Col
MsgBox "First Row in B = " & firstrow & " last Row in B = " & lastrow

'как вариант - самая первая используемая строка и самая последняя во всём листе
' мы их не используем
Row1 = ActiveWorkbook.ActiveSheet.UsedRange.Row
Row2 = Row1 + ActiveWorkbook.ActiveSheet.UsedRange.Rows.Count - 1
MsgBox "First Row = " & Row1 & " last Row = " & Row2


MaxRow_List2 = ActiveWorkbook.Worksheets("Лист2").UsedRange.Rows.Count
' добавляемые данные будут ПОСЛЕ всех данных на листе 2!!
Col_in_2 = 3 ' это столбец C

'начинаем перенос данных из с текущего листа на "лист 2"
For k = firstrow To lastrow
If ActiveWorkbook.ActiveSheet.Cells(k, Col).Value > 0 Then
ActiveWorkbook.Worksheets("Лист2").Cells(MaxRow_List2 + 1, Col_in_2).Value = _
ActiveWorkbook.ActiveSheet.Cells(k, Col + 1).Value
MaxRow_List2 = MaxRow_List2 + 1
End If
Next k
End Sub

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Стоит ли переходить с Билдера на Делфи?


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