Страница 1 из 1

Метод WScript.Run - проблема с пробелами в имени файла

Добавлено: 23 ноя 2005, 09:49
Sokl
Метод WScript.Run использую для того, чтобы из VBA.Excel открывать файлы других приложений. Интересная особенность - если строка пути или имени файла содержит пробелы, то метод отказывается работать.

Что делать?

Заранее благодарен.

Добавлено: 25 ноя 2005, 06:43
Sokl
Сам разобрался!!! Могу пояснить, о чем хотя бы речь-то шла! Скорее всего, я неясно выразил свою мысль...
WScript - это ~ http://msdn.microsoft.com/library/defau ... Script.asp ~
Объект Wscript имеет метод .Run - я его использую для того, чтобы из Excel открывать документы и файлы, связанные с какими-либо приложениями, например, файлы *.doc, *.psd, *.mp3, *. .....
Так вот, оказывается, что для правильной работы Wscript.Run, нужно делать не так:

Код: Выделить всё

Call WshScript.Run("C:\Documents and Settings\UserName\Мои документы\MyVBA\Excel\d.mp3", 4, False)
А вот так:

Код: Выделить всё

Call WshScript.Run(Chr(34) & "C:\Documents and Settings\UserName\Мои документы\MyVBA\Excel\d.mp3" & Chr(34), 4, False)
p.s.: Пуск / Выполнить - работает аналогично: если в пути или имени файла есть пробелы, то без " не обойтись.........

Добавлено: 25 ноя 2005, 08:01
Avsha
Sokl,
Я тоже вовсю пользуюсь этим запуском, который посоветовал когда-то treider
Sub start(command As String)
Set WshScript = CreateObject("WScript.Shell")
D = WshScript.Run(command, 4, False)
End Sub
Для аргументов с пробелами проходит и такой синтаксис:
start ("""C:\Temp\d d.txt""")
т.е. чтобы обозначить один знак " при задании значения текстовой переменной ставим два знака - ""

Но ваш вариант с chr(34) смотрится получше:
start (chr(34) & "C:\Temp\d d.txt" & chr(34)) :)

Добавлено: 25 ноя 2005, 09:45
Sokl
Да он мне тоже нравится... Главное - не понятно, что за 34...

Добавлено: 25 ноя 2005, 10:07
Avsha
34 - это код символа " , по кодировке Unicode всем символам можно дать код, размер которого 2 байта=16 бит.
Откройте Таблицу Символов в Windows (Пуск\Программы\Стандартные\Служебные\Таблица Символов, там символ кавычки
второй сверху имеет код U+0022 - это в шеснадцатиричной системе, переводим в калькуляторе 22 в десятичную систему - получается 34.
Там - в справке Таблицы Символов написано все, то что я привел выше.

Добавлено: 25 ноя 2005, 10:37
Sokl
Да я знаю.... Я имею в виду, не понятно для обычного взгляда на этот код, ну, скажем через месяц!!! Коды некоторых символов в моей голове держатся, а вот, например, про кавычки постоянно забываю ... Приходится MsgBox Asc("""")....
А вообще, Avsha, спасибо за ликбез! Прикольно получилось... Ы :lol: ...

Добавлено: 25 ноя 2005, 11:38
Avsha
Ну тогда можно так, чтоб не забылось :)

Кавычка = chr(34)
start (Кавычка & "C:\Temp\d d.txt" & Кавычка)

Добавлено: 25 ноя 2005, 13:44
Игорь Акопян
"коменты - рулят" (с) ;)