2

我目前遇到 On.Time() 命令的问题。

Ontime 偏移值设置为 00:00:10 检查文件是否打开。(一种实时检查器)。

Sub MacroAutoRun1()

Dim RunTime1 As Date
RunTime1 = Now + TimeValue("00:10:00")
Application.OnTime RunTime1, "MacroAutoRun1"

If IsFileOpen("H:\Operations_Front_Office\Organisation Helpdesk & Renseignement\Test\1\Statistik.xlsm") Then
    Interface.Interface_Statistik_Open_Val.Caption = "File in use"
Else
    Interface.Interface_Statistik_Open_Val.Caption = "File currently not used"
End If

If IsFileOpen("H:\Operations_Front_Office\Organisation Helpdesk & Renseignement\Test\1\Timesheet.xlsm") Then
    Interface.Interface_Timesheet_Open_Val.Caption = "File in use"
Else
    Interface.Interface_Timesheet_Open_Val.Caption = "File currently not used"
End If

If IsFileOpen("H:\Operations_Front_Office\Organisation Helpdesk & Renseignement\Test\1\Datasheet_Roulement_Final_Original.xlsm") Then
    Interface.Interface_Roulement_Open_Val.Caption = "File in use"
Else
    Interface.Interface_Roulement_Open_Val.Caption = "File currently not used"
End If

IsFileOpen 是一个创建的函数,如下所示:

Function IsFileOpen(FileName As String)
    Dim iFilenum As Long
    Dim iErr As Long

    On Error Resume Next
    iFilenum = FreeFile()
    Open FileName For Input Lock Read As #iFilenum
    Close iFilenum
    iErr = Err
    On Error GoTo 0

    Select Case iErr
    Case 0:    IsFileOpen = False
    Case 70:   IsFileOpen = True
    Case Else: Error iErr
    End Select
End Function

我现在的问题是,在进行检查时,其他程序似乎无法完成,例如:

If DateDfrHDSKMALADIE = 0 Then
            Set FoundHDSKMaladie = Sheets("Congé + Maladie").Columns(1).Find(What:=Maladie1HDSKtxt, After:=Sheets("Congé + Maladie").Cells(1, 1))
            X = FoundHDSKMaladie.Row
            Y = FoundHDSKMaladie.Column + HDSKMALADIENumb
        Sheets("Congé + Maladie").Cells(X, Y) = "M"

然后 FoundHDSKMaladie 返回“Nothing”,在我看来,甚至没有应用 Find 方法。

你听说过这样的问题吗?我想在后台保持搜索打开(最好),如果这不起作用,我将在离开页面时恢复停止计时器,并在用户返回页面时重新激活它。

在此先感谢您的帮助。

4

1 回答 1

1

我不确定您使用的方法为什么会中断其他过程,但我过去使用工作簿存在函数使用过类似的东西。由于您要检查的文件似乎是工作簿,我建议检查使用此函数而不是 IsFileOpen 函数是否可以解决问题。我相信我在一本 excel/vba 傻瓜书中看到了这种方法。

例如,函数的字符串是“Statistik.xlsm”。

Function WorkbookExists(ByVal BookToCheck As String) As Boolean


Dim Path As String

On Error GoTo Find_Err
Path = Workbooks(BookToCheck).Saved
On Error GoTo 0
WorkbookExists = True
Exit Function

Find_Err:

WorkbookExists = False
End Function
于 2013-08-16T23:14:26.387 回答