Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на Basic / VBA


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Асмик Гаряка
Статус: Советник
Рейтинг: 10782
∙ повысить рейтинг »
Роман Селиверстов
Статус: Советник
Рейтинг: 5226
∙ повысить рейтинг »
Гуревич Александр Львович
Статус: Профессионал
Рейтинг: 4412
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Basic/VBA

Номер выпуска:1088
Дата выхода:18.07.2013, 11:00
Администратор рассылки:Андреенков Владимир (Профессор)
Подписчиков / экспертов:68 / 36
Вопросов / ответов:3 / 6

Консультация # 140414: Здраствуйте ув. эксперты. Задача такова. Мне необходимо проверить, есть ли в задачах процесс abc.exe. И если он есть, то необходимо его закрыть и после этого открыть процесс abc1.exe. Иначе просто открыть abc1.exe. Заранее спасибо и всем хорошие оценки за достойные ответы. ...


Консультация # 181046: Здравствуйте, уважаемые эксперты! Прошу Вас ответить на следующий вопрос: Как запретить ввод букв в ячейку в Excel?? ( необходим макрос на VBA) спасибо)...
Консультация # 179368: Здравствуйте уважаемые эксперты, ниже следует мой макрос. Он делает: выделенный текст в документе сначала упаковывает его во временный файл помещает, далее этот файл прикрепляет в Оутлуке польз ователь отправлет письмо самостоятельно, темпашка удаляется. И тот Исходный файл открывается. Остался последний ньюанс. А именно был например документ ...

Консультация # 140414:

Здраствуйте ув. эксперты. Задача такова. Мне необходимо проверить, есть ли в задачах процесс abc.exe. И если он есть, то необходимо его закрыть и после этого открыть процесс abc1.exe. Иначе просто открыть abc1.exe. Заранее спасибо и всем хорошие оценки за достойные ответы.

Дата отправки: 21.07.2008, 15:47
Вопрос задал: Горбунов Андрей Александрович
Всего ответов: 2
Страница онлайн-консультации »


Консультирует PsySex (Профессионал):

Здравствуйте, Горбунов Андрей Александрович!
К ответу прикрепляю пример, который умеет составлять список запущенных процессов, а также убивать выбранный процесс.
Думаю не составит труда написать процедуру поиска строки(abc.exe) в списке запущенных процессов...
для запуска своего процесса используйте функцию shell
Call Shell("c:\abc1.exe", vbNormalFocus)
если потом нужно будет использовать индетификатор запущенного процесса, то испольхуйте
id = Shell("c:\abc1.exe", vbNormalFocus)

Консультировал: PsySex (Профессионал)
Дата отправки: 21.07.2008, 16:15
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Тесленко Евгений Алексеевич:

Здравствуйте, Горбунов Андрей Александрович!
Процедура в прилажении "выловит" и закроет все запущеные процессы "abc.exe", затем запустит "abc1.exe" только если будет указан путь расположения файла - "C:\abc1.exe".
Евгений.

Приложение:

Консультировал: Тесленко Евгений Алексеевич
Дата отправки: 21.07.2008, 16:32
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 181046:

Здравствуйте, уважаемые эксперты! Прошу Вас ответить на следующий вопрос:
Как запретить ввод букв в ячейку в Excel?? ( необходим макрос на VBA)

спасибо)

Дата отправки: 30.11.2010, 20:13
Вопрос задал: Миронычев Виталий
Всего ответов: 2
Страница онлайн-консультации »


Консультирует Измалков Эдуард Леонидович:

Здравствуйте, Миронычев Виталий!
в модуле "ЭтаКнига" нужно написать следующее

Код :
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim i As Integer
Const letters As String = "qwertyuiopasdfghjklzxcvbnmёйцукенгшщзхъфывапролджэячсмитьбю"

For i = 1 To Len(Target.Value)
If InStr(1, letters, Mid(Target.Value, i, 1), vbTextCompare) > 0 Then
MsgBox "Нельзя вводить буквы", vbExclamation
Target.Clear
Target.Select
Exit Sub
End If
Next i

End Sub

Консультировал: Измалков Эдуард Леонидович
Дата отправки: 30.11.2010, 21:43
Рейтинг ответа:

НЕ одобряю +2 одобряю!


Консультирует Евгений:

Здравствуйте, Миронычев Виталий!
Пропишите в исходнике листа следующее:

Dim TolkoTzifra As String
Private Sub Worksheet_Change(ByVal Target As Range)
If (Target.Rows.Count = 1) And (Target.Columns.Count = 1) Then
Application.EnableEvents = False
If IsNumeric(Target.Value) <> True Then
TolkoTzifra = MsgBox("Вводите только цифры", vbOKOnly + vbCritical, "Ошибка")
Cells(Target.Row, Target.Column).Select
Selection.ClearContents
Selection.NumberFormat = "0.0"
Else:
Cells(Target.Row, Target.Column + 1).Select
End If
Application.EnableEvents = True
End If
End Sub

У меня в Excel макрос пошел прекрасно, чего желаю и Вам smile

Консультировал: Евгений
Дата отправки: 30.11.2010, 22:30
Рейтинг ответа:

НЕ одобряю +3 одобряю!

Консультация # 179368:

Здравствуйте уважаемые эксперты, ниже следует мой макрос.
Он делает: выделенный текст в документе сначала упаковывает его во временный файл помещает, далее этот файл прикрепляет в Оутлуке пользователь отправлет письмо самостоятельно, темпашка удаляется. И тот Исходный файл открывается. Остался последний ньюанс.
А именно был например документ на 78 листах, я выделил часть, например на 63 листе, макрос всё сделал и отрывает мне исходный документ, с которого я отправил письмо уже на 1 стр., не логично, как сделать, чтобы он открыл его в том же самом месте и чтобы выделенное осталось выделенным. Подскажи как, где, куда, что надо добавить!!


'условие о том выделен ли текст, если длина текста равна нулю, то есть пустому месту - "", тогда ...
If Len(Application.Selection.Range.Text) = 0 Then
'вывести надпись указанную в кавычках
MsgBox$ "Никакой текст не выделен", vbOKOnly, "Отправка письма программой Outlook не может б ыть выполнена"
'выйти из программы
Exit Sub
End If

Dim TempDocPath As String 'путь для сохранения временного документа
Dim FSO As Object 'системный объект для получения имени временного файла
Dim sFileName As String 'имя временного файла
Dim SelStart As Long 'начало выделения
Dim SelEnd As Long 'конец выделения

CurrDocPath = ActiveDocument.FullName 'путь к папке Temp
TempDocPath = Environ("Temp") 'запоминаем границы выделения
SelStart = Selection.Start
SelEnd = Selection.End
'получаем имя для временного файла
Set FSO = CreateObject("Scripting.FileSystemObject")
sFileName = FSO.GetTempName() 'временное имя для файла
TempDocPath = TempDocPath & "\" & Mid(sFileName, 1, InStrRev(sFileName, ".")) & "doc" 'полный путь к временному файлу
ActiveDocument.SaveAs TempDocPath, 0, AddToRecentFiles:=False 'сохраняем активный доку мент, как временный файл
ActiveDocument.Range(SelEnd, ActiveDocument.Range.End).Delete 'удаляем всё, что находится после выделения
ActiveDocument.Range(0, SelStart).Delete 'удаляем всё, что находится до выделения

''''''''''''''''''''''''''''''''''''''''''
'таким образом в новом документе осталось только то, что было выделено в старом
''''''''''''''''''''''''''''''''''''''''''

Selection.Font.Color = wdColorRed 'окрасить выделенное в красный цвет
ActiveDocument.Close True 'закрываем активный документ с сохранением настроек

'''''''''''''' ''''''''''''''''''''''''''''
'отправка письма по Microsoft Outlook

'для работоспособности нужно добавить ссылку на библиотеку
'зайдите в меню Tools-References, найдите Microsoft Outlook Object Library, поставьте птичку

Dim objOL As Outlook.Application
Set objOL = Outlook.Application

Dim objMail As Outlook.MailItem
Set objMail = objOL.CreateItem(olMailItem)

Dim objAttach As Object
Set objAttach = objMail.Attachments

With objMail
.To = "" '"mm@mm.ru; dd@dd.ru" 'адрес e-mail для отправки письма, если несколько адресов e-mail, пишем, отделяя их точкой с запятой - ";"
.CC = "" 'копия
.Subject = "" 'это тема письма
'.Body = "Это текст письма" 'вариант отправки определённого текста
'.Body = ActiveDocument.Sele ction 'вариант отправки выделенного текста
.Attachments.Add TempDocPath '
'.Attachments.Add 'если надо второе вложен ное письмо, тогда добавляем второй Attachments
.OriginatorDeliveryReportRequested = True 'уведомление о доставке письма
.ReadReceiptRequested = True 'уведомление о прочтении письма
.Save ' сохраним письмо
.Display 'показать окно письма, то есть показать открытую программу Outlook
'.Send 'отправить письмо автоматом
End With
Set objMail = Nothing
Set objOL = Nothing
Set objAttach = Nothing

Documents.Open CurrDocPath 'открываем старый, исходный документ
Kill TempDocPath 'удаляем временный документ
Set FSO = Nothing 'установка объекта в значение Nothing требуется для освобождения памяти, которая была выделена для создания этого объекта
Спасибо

Дата отправки: 01.07.2010, 21:01
Вопрос задал: Ципихович Эндрю (Посетитель)
Всего ответов: 2
Страница онлайн-консультации »


Консультирует PsySex (Профессионал):

Здравствуйте, Ципихович Эндрю.
Данная процедура копирует и сохраняет выделенное в файл с именем sFile.
В вашем случае вставляете ее после после определения имени файла TempDocPath
Call SaveSelected(TempDocPath)
и до слов 'отправка письма по Microsoft Outlook ваш код не нужен. Также в конце убрать Documents.Open CurrDocPath, т.к. исходный документ и не закрывался.

Код :
Sub
SaveSelected(sFile as String)
Dim nSymbCnt As Long
Dim dcNew As Document
    nSymbCnt = Selection.End - Selection.Start 'запоминаем колличество выделенных символов
    Selection.Copy 'копируем выделенный текст в текущем документе в буфер обмена
    Set dcNew = New Document 'создаем новый документ
    dcNew.Activate 'делаем его активным
    Selection.PasteAndFormat (wdPasteDefault) 'вставляем скопированное
    Selection.Start = 0 'выбираем текст для покраски в красный цвет
    Selection.End = nSymbCnt 
    Selection.Font.Color = wdColorRed 'красим 
    dcNew.SaveAs sFile, 0, AddToRecentFiles:=False 'сохраняем документ
    dcNew.Close
    Set dcNew = Nothing
End Sub

Консультировал: PsySex (Профессионал)
Дата отправки: 02.07.2010, 15:16

5
нет комментария
-----
Дата оценки: 02.07.2010, 18:24

Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Иноземцева Ольга Степановна:

Здравствуйте, Ципихович Эндрю!
Если правильно поняла, получатель письма должен работать с тем же документом, что и отправитель, по почте получает фрагмент этого документа. При получении письма, у получателя Word-ом нужно открыть этот документ, найти в нем такой же фрагмент, как в письме и выделить его. Тогда у получателя должен быть известен путь к документу .
Но полученным письмом в почте автоматически документ не откроешь.
Можно указать в письме гиперссылку на документ, чтобы его открыть. Но тогда в Word'e на стороне получателя должен быть макрос, который при открытии документа проверял бы почту, искал нужное письмо, считывал из него фрагмент, искал бы его в тексте документа и выделял.
Чтобы из макроса найти нужное письмо, оно должно быть как-то помечено, например в теме.

Наверное так можно сделать, но придется потрудиться, написать еще один макрос для Word-а и установить его на стороне получателя.

Консультировал: Иноземцева Ольга Степановна
Дата отправки: 02.07.2010, 18:10
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!



В избранное