SetVar returns "File is not checked out by you" when it is

I am writing an add-in to prompt users to fill out a revision description when an approved drawing has been revised. I used to have Dispatch do this, but there were too many glitches with Dispatch to make it useful. I am able to use GetVar just fine, but when I use SetVar I get "The file isn't checked out by you, which is required by the operation". But when the program terminates, the file IS checked out by me on my workstation (which is done with the .lockfile command prior to setting the variable).

I am using VB.net with Solidworks and epdm 2016 SP4

Here is the code for reference:

Imports System.Windows.Forms

Imports EdmLib

Public Class MainRevTable

    Implements IEdmAddIn5

    Public Sub GetAddInInfo(ByRef poInfo As EdmAddInInfo, ByVal poVault As IEdmVault5, ByVal poCmdMgr As IEdmCmdMgr5) Implements IEdmAddIn5.GetAddInInfo

        Try

            ' Specify add-in information

            poInfo.mbsAddInName = "Revision Table Prompt"

            poInfo.mbsCompany = "RadiaBeam Technologies"

            poInfo.mbsDescription = "Prompts user to input revision data for drawings during specified state changes."

            poInfo.mlAddInVersion = 1

            ' Specify minimum version of SolidWorks Enterprise PDM

            poInfo.mlRequiredVersionMajor = 6

            poInfo.mlRequiredVersionMinor = 4

            '' Register a menu command

            'poCmdMgr.AddCmd(1, "Test Rev Table", EdmMenuFlags.EdmMenu_Nothing)

            'Add Hooks

            poCmdMgr.AddHook(EdmCmdType.EdmCmd_PreState)

        Catch ex As Runtime.InteropServices.COMException

            MessageBox.Show("HRESULT = 0x" + ex.ErrorCode.ToString("X") + vbCrLf + ex.Message)

        Catch ex As Exception

            MessageBox.Show(ex.Message)

        End Try

    End Sub

    Public Sub OnCmd(ByRef poCmd As EdmCmd, ByRef ppoData As System.Array) Implements IEdmAddIn5.OnCmd

        Try

            'Attach to vault

            Dim vault As IEdmVault5 = poCmd.mpoVault

            Dim AffectedFile As EdmCmdData

            Select Case poCmd.meCmdType

                'A file has changed state

                Case EdmCmdType.EdmCmd_PreState

                    For Each AffectedFile In ppoData

                        If AffectedFile.mbsStrData2 = "Engineering Check" And Right(AffectedFile.mbsStrData1, 6) = "slddrw" Then

                            Dim DRWFile As IEdmFile5 = vault.GetObject(EdmObjectType.EdmObject_File, AffectedFile.mlObjectID1)

                            Dim vars As IEdmEnumeratorVariable8 = DRWFile.GetEnumeratorVariable

                            'Dim vars As IEdmEnumeratorVariable5 = poCmd.mpoExtra

                            Dim RevDesc01 As String = ""

                            'vars = DRWFile.GetEnumeratorVariable

                            DrwName = ""

                            NewDescription = ""

                            DRWFile.LockFile(AffectedFile.mlObjectID2, poCmd.mlParentWnd)

                            vars.GetVar("RevDesc01", "@", RevDesc01)

                            If RevDesc01 = "" Then

                                NewDescription = "Initial Release"

                            Else

                                DrwName = DRWFile.Name

                                DrwName = Left(DrwName, Len(DrwName) - 7)

                                uRevDesc = New RevDesc

                                vars.GetVar("TempRevDesc", "@", uRevDesc.TextBox.Text)

                                NewDescription = "Hello"

                                'uRevDesc.DrawingLabel.Text = "Enter a Revision Description for " & DrwName & ":"

                                'uRevDesc.ShowDialog()

                            End If

                            vars.SetVar("TempRevDesc", "@", NewDescription)

                            vars.Flush()

                            DRWFile.UnlockFile(0, "Set TempRevDesc as " & NewDescription)

                        End If

                    Next affectedfile

                Case Else

                    poCmd.mpoVault.MsgBox(poCmd.mlParentWnd, "An unknown command type was issued.")

            End Select

        Catch ex As Runtime.InteropServices.COMException

            MessageBox.Show("HRESULT = 0x" + ex.ErrorCode.ToString("X") + vbCrLf + ex.Message)

        Catch ex As Exception

            MessageBox.Show(ex.Message)

        End Try

    End Sub

End Class

With Global Variables:

Imports EdmLib

Public Module GlobalVars

    Public DrwName As String

    Public uRevDesc As RevDesc

    Public NewDescription As String

End Module

SolidworksApi macros