не может определить книгу как переменную объекта - PullRequest
0 голосов
/ 08 ноября 2018

Я создаю автоматизированную форму запроса и испытываю головную боль, которая срабатывает только для других пользователей. 3 других получают ошибку во время выполнения, и я не могу понять, что происходит, поскольку я использовал в основном этот же сценарий в других книгах, не сообщая о проблеме.

    Sub tracker_upload()

ActiveWindow.ScrollRow = 1

Run "processing" 'basic UF to display status

With Application
    .ScreenUpdating = False
    .DisplayAlerts = False
End With

Run "archive" 'saves completed form to a SP folder

With WaitForm
    .lbStatus.Caption = "...archiving form to shared drive"
    .Repaint
End With

Application.Wait (Now + TimeValue("00:00:02"))

With Form
    If .Priority_Critical_YN = True Then
    p = "Critical"
    ElseIf .Priority_Must_Have_YN = True Then
    p = "High"
    ElseIf .Priority_Need_YN = True Then
    p = "Medium"
    ElseIf .Priority_Nice_YN = True Then
    p = "Low"
    End If
    .Shapes("upload").Visible = False
End With

With Range("tbData")
    uID = .Cells(1).Value
    .Cells(2) = "New"
    .Cells(3) = p
    .Cells(9) = Environ$("UserName")
    .Cells(10) = Date
    .Hyperlinks.Add .Cells(1), ThisWorkbook.FullName, TextToDisplay:=uID
End With


With WaitForm
    .lbStatus.Caption = "...updating tracker information"
    .Repaint
End With


Dim wb1 As Workbook, wb2 As Workbook

    On Error Resume Next
    Set wb1 = ActiveWorkbook
    Set wb2 = Workbooks("Requests Tracker")
'detect if workbook is already open and open if not
    If wb2 Is Nothing Then
    Application.Workbooks.Open ("My Shared Drive Location\Requests Tracker.xlsx"), ignorereadonlyrecommended = True
    Set wb2 = Workbooks("Requests Tracker")
    End If
  On Error GoTo 0

wb1.Sheets("data").Range("tbData").Copy

With wb2
    .Activate
    With .Sheets("Requests")
        If .Range("tbTracker").Cells(1) = "" Then
        lastrow = .Range("A" & Rows.Count).End(xlUp).Row
        Else: lastrow = .Range("A" & Rows.Count).End(xlUp).Row + 1
        End If
    .Range("A" & lastrow).PasteSpecial xlPasteAllUsingSourceTheme
    .Columns.AutoFit
    End With
    .Save
    .Close True
End With

Set wb2 = Nothing

On Error GoTo 0


With Application
    .CutCopyMode = False
    .ScreenUpdating = True
    .DisplayAlerts = True
    .Wait (Now + TimeValue("00:00:02"))
End With

Unload WaitForm

wb1.Save

mb = MsgBox("This request has been successfully recorded on the Tracker" & vbCrLf _
& vbCrLf _
& "The form will now close, would you like to open the tracker now?", vbYesNo + vbInformation, "completed")

If mb = vbYes Then
    Application.Workbooks.Open ("My Shared Drive Location\Requests Tracker.xlsx"), ignorereadonlyrecommended = True
End If

If Application.Windows.Count = 1 Then
    wb1.Saved = True
    Application.Quit
Else: wb1.Close False
End If

End Sub

Сначала он зависал на линии .Sheets("Requests"), затем на линии под ней. Это было десятичное число перед каждым, которое я нашел действительно странным, поскольку я никогда не сталкивался с этим раньше. Конечно, после того, как .Save и .Close True остались с десятичными знаками, он вызвал еще одну ошибку в следующей функции, которой предшествует десятичная дробь, как показано ниже.

ОБНОВЛЕНИЕ: Я проанализировал бит кода, в котором я установил wb1 и wb2, поскольку я определил, что wb2 выдавал пользователю ошибку. Я провел некоторое тестирование с несколькими другими пользователями, у которых не было проблем с установкой и определением wb2 как Workbooks("Requests Tracker"). Наконец, я получил сабвуфер, добавив расширение файла в конец имени Workbook. Почему это требуется только для этого пользователя?

1 Ответ

0 голосов
/ 27 ноября 2018

Я должен был указать set wb2 = "Requests Tracker.xlsx", чтобы пользователь не столкнулся с ошибкой во время выполнения. Я не знаю, почему .xlsx нужно было добавить для этого одного пользователя и никого больше во всем отделе ... но это решило головную боль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...