从注册表中调用路径时类型不匹配的问题

问题描述 投票:0回答:1

我处于要素爬行模式,但这是有效的。需要我现有的用户窗体来选择要保存到的文件夹路径,否则,将禁用输出功能。请注意,整个选择文件夹和输出功能都可以100%工作。功能蠕变问题是我已将系统设置为保存用户上次使用到注册表的文件夹,并且可以从注册表中将其作为字符串重新调用,但是当我尝试设置路径字符串时(行:将WorkFolder设置为返回的文件夹字符串值作为一个对象(?),它作为424对象必需的错误而崩溃。

我已经搜索了如何将内容输入和输出注册表,到目前为止还可以,它只是试图让Set WorkFolder接受从注册表中提取的内容,这使我感到悲伤。文本框被禁用,并且在完成有效的文件对话框选择后即会更新,因此用户知道正在使用的路径....我想用注册表调用值(有效)填充它,然后将WorkFolder设置为路径字符串值删除了“ nothing”,该东西阻止输出功能,因为需要该路径才能正常运行。

调试和将鼠标悬停在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

我处于要素爬行模式,但这是有效的。需要我现有的用户窗体来选择要保存到的文件夹路径,否则,将禁用输出功能。注意整个选择...

excel vba
1个回答
0
投票

假设WorkFolder被声明(在某个地方?)为String,则String不是VBA中的对象-您无法Set它。

© www.soinside.com 2019 - 2024. All rights reserved.