У меня есть кнопка в форме с кодом ниже, сидящим в форме. Раньше выполнялось без проблем. Внезапно при нажатии на кнопку я теперь получаю эту ошибку времени выполнения:
Ошибка времени выполнения 91: переменная объекта или переменная блока не задана в процедуре cmdImportEDD_Click, строка 0
Я попытался закомментировать отдельные строки в коде, чтобы найти проблему. Я закончил тем, что определил, что часть FileDialog кажется проблемой. Тем не менее, после добавления части If.. then
в последний раз код снова заработал, но сегодня ошибка возвращается.
Чтобы было ясно, ошибка появляется до выполнения кода VBA (отсюда строка 0) и Compile также не выдают ошибок!
Что здесь происходит, что я не получаю?
Private Sub cmdImportEDD_Click()
On Error GoTo cmdImportEDD_Click_Error
Dim fDialog As FileDialog
Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
fDialog.AllowMultiSelect = False
fDialog.InitialFileName = GetDownloadFolder
fDialog.Show
If fDialog.SelectedItems.Count < 1 Then
Exit Sub
End If
Debug.Print fDialog.SelectedItems(1)
'Replace the selected file with the current one
Dim sOldFile As String
sOldFile = strTARGET_EDD_SALESFILE
Dim oFSO As FileSystemObject
Set oFSO = New FileSystemObject
oFSO.DeleteFile sOldFile
oFSO.MoveFile Source:=fDialog.SelectedItems(1), Destination:=sOldFile
'Perform the update
DoCmd.SetWarnings False
DoCmd.OpenQuery "qry_app_EDD", acViewNormal, acAdd
DoCmd.SetWarnings True
MsgBox "The data has been successfully imported!", vbOKOnly Or vbInformation, "Import Data: EDD"
On Error GoTo 0
Exit Sub
cmdImportEDD_Click_Error:
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure cmdImportEDD_Click, line " & Erl & "."
End Sub
Код для GetDownloadFolder:
Function GetDownloadFolder() As String
Dim objShell
Dim objFolder
Dim objFolderItem
Dim temp
Const DESKTOP = &H10&
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(DESKTOP)
Set objFolderItem = objFolder.Self
temp = objFolderItem.Path
temp = Left(temp, Len(temp) - 7) & "Downloads" '<--- I believe this is the download folder
GetDownloadFolder = temp
End Function
Отменив OnError, я теперь получаю сообщение об ошибке на линии Set objFolderItem = objFolder.Self