Консультация № 143719
12.09.2008, 12:20
0.00 руб.
0 6 0
Мне нужно получить путь к папке "Последние документы", который находится в значении ключа реестра (HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Common\General\RecentFiles). Как это сделать? Я пытаюсь использовать такой макрос, но знаний не хватает (смотрите в Приложении).
Я бы хотел получить значения для моего примера, но справка VBA не конкретная.
Подскажите пожалуйста.
спасибо.

Приложение:
Sub getPathRF()
'получение пути к папке с последними файлами
Dim oPath As String
Dim sPath As String
oPath = "HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Common\General\RecentFiles"
sPath = GetSetting() '???? вот здесь проблема ????
MsgBox sPath
End Sub

Обсуждение

давно
Профессионал
848
1596
12.09.2008, 13:29
общий
Тут конкретная справка ;-)
Неизвестный
12.09.2008, 13:29
общий
Мне подсказали путь решения и я написал такой макрос. Работает. Интересно, его можно как-то оптимизировать? Спасибо. Код ниже:

Sub getSpecFolder_new()
Dim myPath As String
Dim objWSH
Dim bKey As String
Set objWSH = CreateObject("WScript.Shell")
bKey = objWSH.RegRead("HKCU\Software\Microsoft\Office\11.0\Common\General\RecentFiles")
myPath = Environ$("appdata") & "" & "\Microsoft\Office" & bKey 'Set the path.
With Dialogs(wdDialogFileOpen)
.Name = myPath
If .Display = -1 Then
MsgBox .Name
End If
End With
End Sub
давно
Профессионал
848
1596
12.09.2008, 13:32
общий
что вы хотите от оптимизации?? увеличить скорость работы кода? ;-)
Неизвестный
12.09.2008, 13:50
общий
Ну скорость нормальная. Я имел в виду, все ли корректно в этом коде? И нет ли возможность получить полный путь к искомой папке, не используя столько переменных и объединяя их. Спасибо за помощь.
давно
Профессионал
848
1596
12.09.2008, 14:32
общий
ну да этот код можно уменьшить, кстати там еще ошибочка - два слэша подряд идут.. Можно оформить его как функцию. Пример функции и ее вызова.
Код:
 Function RecentFiles() As String
Dim objWSH
Dim bKey As String
Set objWSH = CreateObject("WScript.Shell")
bKey = objWSH.RegRead("HKCU\Software\Microsoft\Office\11.0\Common\General\RecentFiles")
RecentFiles = Environ$("appdata") & "\Microsoft\Office" & bKey & ""
End Function

Sub Command1_Click()
MsgBox RecentFiles + "test.doc"
End Sub
Неизвестный
12.09.2008, 14:39
общий
Спасибо. Я слеш поставил, так как почему-то подумал, что перед ним папка будет без слеша. Спасибо за поправку!
Форма ответа