Я нахожусь в режиме ползучести, но этот действует. Моя существующая пользовательская форма должна выбрать путь к папке для сохранения, если нет, то функция вывода отключена. Обратите внимание, что вся выбранная папка и функции вывода работают на 100%. Проблема с ползучестью состоит в том, что я настроил систему для сохранения папки, которую пользователь последний раз использовал в реестре, и я могу вспомнить ее как строку из реестра, но когда я пытаюсь установить строку пути (строка:Установите WorkFolder) в качестве возвращаемого строкового значения папки в качестве объекта (?), Он вылетает как ошибка, необходимая для объекта 424.
Я искал, как получить данные из реестра и выйти из него, и пока все в порядке,он просто пытается заставить Set WorkFolder принять то, что извлекается из реестра, что вызывает у меня горе. Текстовое поле отключено и обновляется после завершения выбора допустимого диалогового окна файла, чтобы пользователь знал, какой путь используется .... Я хочу заполнить его значением возврата из реестра (что работает), а затем просто установить WorkFolder назначение строки пути, удаляющее «ничто», препятствующее функциональности вывода, так как путь требуется для правильной работы.
При отладке и наведении курсора на sResult у меня есть правильная строка во всплывающей подсказке, мне просто нужно подключить еев Set WorkFolder и затем двигаться дальше. Будет пользовательский «переключатель», который позволит им вспомнить настройку или использовать диалоговое окно для выбора, но сейчас я ломаю часть sResult до того, как появится диалоговое окно, поэтому я знаю, что если оно продолжится, диалоговое окно появитсякаждый раз ...... это та часть, которая работала все время. Я исправлю это позже, установив флажок «вспоминать» или «не вспоминать»… пока я сосредоточен только на том, чтобы заполнить его, как указано выше.
Есть мысли о том, что я делаю неправильно?
Private Sub BtnSelectFolder_Click()
' ===== FOLDER SELECTION BY USER (MANDATORY) =====
Dim fd As FileDialog
Dim result As Long, errNum As Long
'-------------------------------
'Trouble section
Dim oWSH As Object
Dim sResult
Dim KeyId, Rootkey
Rootkey = "HKCU"
KeyId = "Software\VB and VBA Program Settings\MyApplication\WorkbookPath\SaveFolder"
If oWSH Is Nothing Then
Set oWSH = CreateObject("WScript.Shell")
End If
sResult = oWSH.RegRead(Rootkey & "\" & KeyId)
Set WorkFolder = sResult '<<<<<<<<< Why won't this work? Error 424 Object required, but path is pulled from Registry successfully
'Trouble section
'-------------------------------
'All works below
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
With fd
.AllowMultiSelect = False
.ButtonName = "Select"
.Title = "Choose Output Folder"
If InStr(UCase(.InitialFileName), "SYSTEM32") Then
.InitialFileName = Environ("USERPROFILE") & "\Documents"
End If
result = .Show
End With
' Drop if box cancelled
If result = 0 Then Exit Sub
' Made it here; try updating the linked folder, with error handling
On Error Resume Next
Set WorkFolder = fs.GetFolder(fd.SelectedItems(1))
errNum = Err.Number: Err.Clear: On Error GoTo 0
If errNum <> 0 Then
MsgBox "Invalid folder selection", _
vbOKOnly + vbCritical, _
"Error"
Exit Sub
End If
' Update display textbox
TxBxFolder.Value = WorkFolder.Path
'Save path to registry
SaveSetting "MyApplication", "WorkbookPath", "SaveFolder", WorkFolder.Path
' Update the Export button
setExportEnabled
Call CheckExportIsEnabled
End Sub