Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBScript. Проблемы с открытием папки из MsgBox / 17 сообщений из 17, страница 1 из 1
10.12.2017, 21:03
    #39567395
ypmail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBScript. Проблемы с открытием папки из MsgBox
Помогите допилить скрипт? 2 дня писал. Затыка в том, что при нажатии кнопки "Нет" в MsgBox он должен закрываться, а при нажатии "Да" должен открываться каталог по пути из переменной f1.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Dim a1, b1, c1, d1, e1, f1, objShell
a1 = RecordsToString(SELECT COUNT(*) FROM qdfMain WHERE ID = <ID> AND ID IN (SELECT ID FROM qdfMain WHERE (TypeClaim LIKE '7-10%' OR TypeClaim LIKE '7-90%')))
b1 = RecordsToString(SELECT MAX(TPI) FROM qdfDamage WHERE KI IS NOT NULL AND KI = <KI> AND DamID < <DamID>)
c1 = <TPI>
d1 = RecordsToString(Select KI FROM qdfDamage WHERE DamID = <DamID>)
e1 = (Left (d1, 2) + Right (d1, 2))
f1 = "Старая редакция HST: " & b1 & vbCrLf & "Новая редакция HST: " & c1 & vbCrLf & vbCrLf & "Добавьте актуальное описание мероприятия в папку:" & vbCrLf & "D:\VW DATA\Сервисные мероприятия\Aktionen\" & e1 & vbCrLf & vbCrLf & "Открыть папку?"
If a1 = 1 And b1 <> c1 Then
MsgBox(f1, vbYesNo)
Else If MsgBox(f1, vbYesNo) = vbYes Then
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "f1"
End If
...
Рейтинг: 0 / 0
10.12.2017, 21:10
    #39567397
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBScript. Проблемы с открытием папки из MsgBox
ypmail
Код: vbnet
1.
If MsgBox(f1

ypmail
Код: vbnet
1.
objShell.Run "f1"

Во втором случае ты берешь переменную в кавычки, сможешь объяснить почему?


Подсказка на следующий шаг:
В переменной f1 хранится не путь, судя по коду.

И еще лафхак: Если ты будешь называть переменные нормальными вменяемыми именами, твой код можно будет читать и анализировать.
...
Рейтинг: 0 / 0
11.12.2017, 08:06
    #39567470
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBScript. Проблемы с открытием папки из MsgBox
ypmail
Код: vbnet
1.
2.
3.
4.
5.
6.
If a1 = 1 And b1 <> c1 Then
MsgBox(f1, vbYesNo)
Else If MsgBox(f1, vbYesNo) = vbYes Then
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "f1"
End If



и в чём сакральный смысл вызова MsgBox в двух ветках If?
может надо так (может быть ошибка, т.к. не понятен смысл)?

Код: vbnet
1.
2.
3.
4.
If MsgBox(f1, vbYesNo) = vbYes and not (a1 = 1 And b1 <> c1) Then
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "f1"
End If
...
Рейтинг: 0 / 0
11.12.2017, 08:16
    #39567475
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBScript. Проблемы с открытием папки из MsgBox
А что это за объект в файловой системе с именем f1 ?
Shocker.ProВо втором случае ты берешь переменную в кавычки
Если там должна быть именно переменная, то пытаться запустить на выполнение её значение - дикость несусветная.
...
Рейтинг: 0 / 0
11.12.2017, 08:19
    #39567477
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBScript. Проблемы с открытием папки из MsgBox
HandKotможет надо так (может быть ошибка, т.к. не понятен смысл)?

Код: vbnet
1.
2.
3.
4.
If MsgBox(f1, vbYesNo) = vbYes and not (a1 = 1 And b1 <> c1) Then
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "f1"
End If


Скорее так:
Код: vbnet
1.
2.
3.
4.
5.
6.
If a1 <> 1 Or b1 = c1 Then
    If vbYes = MsgBox(f1, vbYesNo) Then
        Set objShell = CreateObject("Wscript.Shell")
        objShell.Run "f1"
    End If
End If 


В твоём варианте MsgBox() будет вызван точно так же вне зависимости от остальных условий.
...
Рейтинг: 0 / 0
11.12.2017, 08:32
    #39567483
ypmail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBScript. Проблемы с открытием папки из MsgBox
Спасибо, вот так работает:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Dim a1, b1, c1, d1, e1, f1, objShell
a1 = RecordsToString(SELECT COUNT(*) FROM qdfMain WHERE ID = <ID> AND ID IN (SELECT ID FROM qdfMain WHERE (TypeClaim LIKE '7-10%' OR TypeClaim LIKE '7-90%')))
b1 = RecordsToString(SELECT MAX(TPI) FROM qdfDamage WHERE KI IS NOT NULL AND KI = <KI> AND DamID < <DamID>)
c1 = <TPI>
d1 = RecordsToString(Select KI FROM qdfDamage WHERE DamID = <DamID>)
e1 = (Left (d1, 2) + Right (d1, 2))
f1 = "Старая редакция HST: " & b1 & vbCrLf & "Новая редакция HST: " & c1 & vbCrLf & vbCrLf & "Добавьте актуальное описание мероприятия в папку:" & vbCrLf & "D:\VW DATA\Сервисные мероприятия\Aktionen\" & e1 & vbCrLf & vbCrLf & "Открыть папку?"
If a1 = 1 And b1 <> c1 Then
If vbYes = MsgBox(f1, vbYesNo) Then
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "C:\Windows\"
End If
End If



Единички к переменным добавил, т.к. в куске "D:\VW DATA\Сервисные мероприятия\Aktionen\" вместо D почему-то в MsgBox выводилось значение d. Поэтому добавил в переменные 1 и стало нормально выводиться.


Как бы теперь вместо "C:\Windows\" открывать папку, путь которой показан в сообщении MsgBox?
...
Рейтинг: 0 / 0
11.12.2017, 10:17
    #39567518
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBScript. Проблемы с открытием папки из MsgBox
ypmail,

objShell.Run "D:\VW DATA\Сервисные мероприятия\Aktionen\"
...
Рейтинг: 0 / 0
11.12.2017, 18:48
    #39567929
ypmail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBScript. Проблемы с открытием папки из MsgBox
big-dukeypmail,

objShell.Run "D:\VW DATA\Сервисные мероприятия\Aktionen\"
недо ещё значение e1 к этому пути добавить
Код: vbnet
1.
objShell.Run "D:\VW DATA\Сервисные мероприятия\Aktionen\" & e1


не работает
...
Рейтинг: 0 / 0
11.12.2017, 18:50
    #39567930
ypmail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBScript. Проблемы с открытием папки из MsgBox
...
Рейтинг: 0 / 0
13.12.2017, 15:36
    #39569080
ypmail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBScript. Проблемы с открытием папки из MsgBox
Неужели в vbs это никак не обойти?
...
Рейтинг: 0 / 0
13.12.2017, 15:48
    #39569095
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBScript. Проблемы с открытием папки из MsgBox
ypmailне работает
Код: vbnet
1.
objShell.Run """D:\VW DATA\Сервисные мероприятия\Aktionen\" & e1 & """"
...
Рейтинг: 0 / 0
13.12.2017, 17:08
    #39569169
ypmail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBScript. Проблемы с открытием папки из MsgBox
Akina
Код: vbnet
1.
objShell.Run """D:\VW DATA\Сервисные мероприятия\Aktionen\" & e1 & """"



Открывает папку "Компьютер".
...
Рейтинг: 0 / 0
13.12.2017, 17:20
    #39569176
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBScript. Проблемы с открытием папки из MsgBox
а что в e1, не null часом?
...
Рейтинг: 0 / 0
13.12.2017, 17:25
    #39569184
ypmail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBScript. Проблемы с открытием папки из MsgBox
Код: vbnet
1.
d1 = RecordsToString(Select KI FROM qdfDamage WHERE DamID = <DamID>)

Получаем значение 42 G8
Код: vbnet
1.
e1 = (Left (d1, 2) + Right (d1, 2))

Приводим его к виду названия папки 42G8, т.е. чтобы оно было без пробела в середине

MsgBox выводит в конце адреса 42G8 без пробела, а дальше пытаюсь это значение прилепить к постоянному пути и открыть реально существующую по адресу папку: D:\VW DATA\Сервисные мероприятия\Aktionen\42G8
...
Рейтинг: 0 / 0
14.12.2017, 10:01
    #39569446
ypmail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBScript. Проблемы с открытием папки из MsgBox
Если упростить задачу и привести скрипт к такому виду:
Код: vbnet
1.
2.
3.
4.
5.
6.
Dim path, objShell
path = "C:\Program Files"
If vbYes = MsgBox(path, vbYesNo) Then
Set objShell = CreateObject("Wscript.Shell")
objShell.Run path
End If



objShell.Run path - не работает
objShell.Run "" & path & "" - не работает

как правильно записать открытие папки по пути, указанному в переменной?
...
Рейтинг: 0 / 0
14.12.2017, 10:16
    #39569461
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBScript. Проблемы с открытием папки из MsgBox
ypmailobjShell.Run "" & path & "" - не работаетКавычек должно быть по 4. Или вместо них вставить явно CHR(34).
И нужно убедиться, что хендлер для папки не переброшен с эксплорера куда-то ещё... в крайнем случае явно запускать его с параметром - именем папки.
...
Рейтинг: 0 / 0
14.12.2017, 11:06
    #39569498
ypmail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBScript. Проблемы с открытием папки из MsgBox
Спасибо. Из файла vbs все работает.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBScript. Проблемы с открытием папки из MsgBox / 17 сообщений из 17, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]