powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBScript. Проблемы с открытием папки из MsgBox
17 сообщений из 17, страница 1 из 1
VBScript. Проблемы с открытием папки из MsgBox
    #39567395
ypmail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите допилить скрипт? 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
VBScript. Проблемы с открытием папки из MsgBox
    #39567397
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ypmail
Код: vbnet
1.
If MsgBox(f1

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

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


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

И еще лафхак: Если ты будешь называть переменные нормальными вменяемыми именами, твой код можно будет читать и анализировать.
...
Рейтинг: 0 / 0
VBScript. Проблемы с открытием папки из MsgBox
    #39567470
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
VBScript. Проблемы с открытием папки из MsgBox
    #39567475
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что это за объект в файловой системе с именем f1 ?
Shocker.ProВо втором случае ты берешь переменную в кавычки
Если там должна быть именно переменная, то пытаться запустить на выполнение её значение - дикость несусветная.
...
Рейтинг: 0 / 0
VBScript. Проблемы с открытием папки из MsgBox
    #39567477
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
VBScript. Проблемы с открытием папки из MsgBox
    #39567483
ypmail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, вот так работает:

Код: 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
VBScript. Проблемы с открытием папки из MsgBox
    #39567518
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ypmail,

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

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


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



Открывает папку "Компьютер".
...
Рейтинг: 0 / 0
VBScript. Проблемы с открытием папки из MsgBox
    #39569176
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что в e1, не null часом?
...
Рейтинг: 0 / 0
VBScript. Проблемы с открытием папки из MsgBox
    #39569184
ypmail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
VBScript. Проблемы с открытием папки из MsgBox
    #39569446
ypmail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если упростить задачу и привести скрипт к такому виду:
Код: 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
VBScript. Проблемы с открытием папки из MsgBox
    #39569461
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ypmailobjShell.Run "" & path & "" - не работаетКавычек должно быть по 4. Или вместо них вставить явно CHR(34).
И нужно убедиться, что хендлер для папки не переброшен с эксплорера куда-то ещё... в крайнем случае явно запускать его с параметром - именем папки.
...
Рейтинг: 0 / 0
VBScript. Проблемы с открытием папки из MsgBox
    #39569498
ypmail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Из файла vbs все работает.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBScript. Проблемы с открытием папки из MsgBox
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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