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

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


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

Лучшие эксперты в разделе

solowey
Статус: Студент
Рейтинг: 145
∙ повысить рейтинг »
Megaloman
Статус: Академик
Рейтинг: 131
∙ повысить рейтинг »
Sergey V. Gornostaev
Статус: Специалист
Рейтинг: 56
∙ повысить рейтинг »

∙ Basic

Номер выпуска:1131
Дата выхода:24.11.2018, 02:45
Администратор рассылки:Андреенков Владимир (Академик)
Подписчиков / экспертов:15 / 13
Вопросов / ответов:3 / 5

Консультация # 175025: Уважаемые эксперты, подскажите код, как находясь в Вордовском документе при помощи ВБА Проверить есть ли соединение с интернетом, но только точно, или нет соединения или нет соединения с локальным диском, имеется ввиду когда Интернет Эксплойер используется не для интернета, а как средство соединения по локальной сети Спасибо Эндрю...
Консультация # 112108: Здравствуйте, эксперты. Вопрос по Exel. Необходимо вставить в лист Рисунок (только *.jpg) из файла в определенное место, масштабировать его по высоте, сохранить текстовые данные листа в базе с путем хранения файла, УДАЛИТЬ ТОЛЬКО РИСУНОК для очередного ввода. Написан Макрос, не удается удалять рисунок. Заранее спасибо....
Консультация # 163151: Добрый день! Уважаемые эксперты, помогите пожалуйста написать код программы в VBA, которая меняла бы две строки местами, пусть мне дана строчка 0 0 0 0 0 -1 -1 -1 0 и вторая строчка 5 5 10 2 1 0 0 0 20 мне надо что бы вторая встала на место первой, а первая на место второй Заранее большое спасибо!...

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

Уважаемые эксперты, подскажите код, как находясь в Вордовском документе при
помощи ВБА
Проверить есть ли соединение с интернетом, но только точно, или нет
соединения или нет соединения с локальным диском, имеется ввиду когда
Интернет Эксплойер используется не для интернета, а как средство
соединения по локальной сети
Спасибо Эндрю

Дата отправки: 08.12.2009, 16:51
Вопрос задал: Ципихович Эндрю
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Vasiliy83:

Здравствуйте, Ципихович Эндрю.
Нашел пару вариантов для проверки доступности хоста.
Вот первый код:

Const NETWORK_ALIVE_AOL = &H4
Const NETWORK_ALIVE_LAN = &H1
Const NETWORK_ALIVE_WAN = &H2
Private Type QOCINFO
    dwSize As Long
    dwFlags As Long
    dwInSpeed As Long 'байты в секунду
    dwOutSpeed As Long 'байты в секунду
End Type
Private Declare Function IsDestinationReachable Lib "SENSAPI.DLL" Alias "IsDestinationReachableA" (ByVal lpszDestination As String, ByRef lpQOCInfo As QOCINFO) As Long
Private Sub Main()
    Dim Ret As QOCINFO
    Ret.dwSize = Len(Ret)
    If IsDestinationReachable("rfpro.ru", Ret) = 0 Then 'вывод сообщения в зависимости от ответа
        MsgBox "Доступа нет!"
    Else
        MsgBox "Доступ есть!" + vbCrLf + _
           "Скорость передачи данных от хоста: " + Format$(Ret.dwInSpeed / 1024, "#.0") + " Кб/с," + vbCrLf + _
           "Скорость передачи данных к хосту: " + Format$(Ret.dwOutSpeed / 1024, "#.0") + " Кб/с."
    End If
End Sub

этот код проверяет именно связь (отправка ICMP-пакета) с хостом. В случае неудачи функция IsDestinationReachable возвращает 0, в случае успеха - 1.
Проверил на несуществующих хостах - 0, на рабочих - 1. В качестве хоста можно указать IP-адрес компьютера или DNS-имя (т.е. проверить связь как в Интернет-сайтом, так и с локальным ПК).
Изменить данный код под свои задачи не составит труда. Одно "но" - если хост жив, но на нем запрещен ответ на ICMP, то Word виснет! (может проблема только у меня...)
показания скорости какие-то неправильные (видимо не совсем верно используется функция, но оно и не требуется)

второй код такой:
Sub TestPing()
Dim strComputer As String
strComputer = "rfpro.ru" 'имя хоста, который проверяется
If Not SystemOnline(strComputer) Then
MsgBox "Этот хост мертв: " & strComputer, vbOKOnly, "Статус хоста"
Else
MsgBox "Хост жив!", vbOKOnly, "Статус"
End If
End Sub

Function SystemOnline(ByVal ComputerName As String)
' функция возвращает True если хост пингуется
' имя хоста указывается или IP-адресом или DNS-именем
' Класс Win32_PingStatus использованный в данной функции требует  ОС Windows XP или более позднюю
Dim colPingResults As Variant
Dim oPingResult As Variant
Dim strQuery As String

' Define the WMI query
strQuery = "SELECT * FROM Win32_PingStatus WHERE Address = '" & ComputerName & "'"

' запуск проверки через WMI
Set colPingResults = GetObject("winmgmts://./root/cimv2").ExecQuery(strQuery)
' преобразование WMI-результата в True или False
For Each oPingResult In colPingResults
If Not IsObject(oPingResult) Then
SystemOnline = False
ElseIf oPingResult.StatusCode = 0 Then
SystemOnline = True
Else
SystemOnline = False
End If
Next
End Function

код также прост и изменить его не составляет труда. в случае, если хост жив, но запрещен ответ на ICMP - стабильно показывает, что хост неактивен и никаких зависаний.

Консультировал: Vasiliy83
Дата отправки: 08.12.2009, 19:29

5
нет комментария
-----
Дата оценки: 08.12.2009, 20:20

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

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

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

Здравствуйте, эксперты. Вопрос по Exel. Необходимо вставить в лист Рисунок (только *.jpg) из файла в определенное место, масштабировать его по высоте, сохранить текстовые данные листа в базе с путем хранения файла, УДАЛИТЬ ТОЛЬКО РИСУНОК для очередного ввода. Написан Макрос, не удается удалять рисунок. Заранее спасибо.

Дата отправки: 03.12.2007, 09:48
Вопрос задал: Levochkin Andre
Всего ответов: 2
Страница онлайн-консультации »


Консультирует Genyaa:

Здравствуйте, Levochkin Andre!

Если вставленный рисунок - единственный на активном листе:

ActiveSheet.Shapes(1).Delete

- удалит этот рисунок с листа

Соответственно, если объектов (рисунков) больше, то нужно указывать, какой именно объект нужно удалить, с помощью индекса либо указанием на конкретный объект.

Консультировал: Genyaa
Дата отправки: 03.12.2007, 10:34
Рейтинг ответа:

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


Консультирует Черников Игорь Владимирович:

Здравствуйте, Levochkin Andre!
Удалить все рисунки с активного листа можно так:

ActiveSheet.Shapes.SelectAll
Selection.Delete

Консультировал: Черников Игорь Владимирович
Дата отправки: 05.12.2007, 18:34
Рейтинг ответа:

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

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

Добрый день! Уважаемые эксперты, помогите пожалуйста написать код программы в VBA, которая меняла бы две строки местами, пусть
мне дана строчка 0 0 0 0 0 -1 -1 -1 0
и вторая строчка 5 5 10 2 1 0 0 0 20
мне надо что бы вторая встала на место первой, а первая на место второй
Заранее большое спасибо!

Дата отправки: 24.03.2009, 16:18
Вопрос задал: Lenusia
Всего ответов: 2
Страница онлайн-консультации »


Консультирует Megaloman (Академик):

Здравствуйте, Lenusia! Вопрос очень близок с предыдущим за № 163040

Способ 1. У Вас в таблице записаны две строки чисел одинаковой длины друг над другом. Значения этих строк меняете местами. Становитесь на клетку, с которой начинается верхняя строка, а затем запускаете макрос.

    i = 0
    a = Selection                                           ' Присваеваем переменной a значение выделенной ячейки
    While a <> ""                                           ' Организуем цикл, пока не встретится пустая ячейка
        Selection.Offset(0, i) = Selection.Offset(1, i)     ' Заменяем значение верхней ячейки на значение из нижней
        Selection.Offset(1, i) = a                          ' Заменяем значение нижней ячейки на значение из верхней, котор хранилось в переменной a
        i = i + 1                                           ' Наращиваем счетчик сдвига ячеек в строке
        a = Selection.Offset(0, i)                          ' Присваеваем переменной a значение ячейки сдвинутой на i от выделенной
    Wend
Он будет менять значения верхних клеток местами с нижними, пока не встретится пустая ячейка в строке.

Способ 2. Аналогичен способу 1. Но в макросе надо явно указать (или написать окно ввода) число элементов в строке.
    N = 9
    For i = 0 To N - 1
        a = Selection.Offset(0, i)
        Selection.Offset(0, i) = Selection.Offset(1, i)
        Selection.Offset(1, i) = a 
    Next 


Консультировал: Megaloman (Академик)
Дата отправки: 24.03.2009, 17:54
Рейтинг ответа:

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


Консультирует Botsman:

Здравствуйте, Lenusia!
Предполагаю, что речь идет программе для Excel.
Если да, то как вам вариант, представленный в приложении?
При работе макроса лист с данными должен быть активен.

Приложение:

Консультировал: Botsman
Дата отправки: 25.03.2009, 10:34
Рейтинг ответа:

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


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

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

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


В избранное