0

我试图拼凑其他几个 VBA 来实现这一点,但我是该语言的初学者,所以没有运气。我想使用 VBA 来实现以下目标:

  • 在加载时运行以下命令:
  • 检查当前是否打开了另一个工作簿。该工作簿由一个命名范围 (input_sheet_location) 指定,该范围包含所述工作簿的整个网络位置。
  • 如果没有打开,询问用户是否可以打开。
  • 如果加载失败(即无法找到/被限制/命名范围为空),则退出子并显示错误消息并允许用户继续。
  • 如果它已打开,请继续进行而不提示。

我 99% 确信所有这些事情都是可以实现的;我根本没有将它们串在一起所需的专业知识。因此,我真正缺乏的唯一难题是上面的第二个要点;还有什么,我可以(希望)弄清楚。

谢谢你的时间!

4

1 回答 1

0

我设法弄清楚了;感谢您的回复。

它是这样的:

Sub IsInputSheetOpen()
Dim Ret

Ret = IsWorkBookOpen(range("input_sheet_location_nobrackets"))

If Ret = True Then
    MsgBox "Input sheet is open."
Else
    MsgBox "Input sheet is not open. Auto output won't work without it."
End If
End Sub

Function IsWorkBookOpen(FileName As String)
Dim ff As Long, ErrNo As Long

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

Select Case ErrNo
Case 0:    IsWorkBookOpen = False
Case 70:   IsWorkBookOpen = True
Case Else: Error ErrNo
End Select
End Function

关键是在命名范围(input_sheet_location_nobrackets)内格式化我的文件位置,而不需要方括号,以便将其用作参考。我确定以上内容很混乱,但它似乎有效!

于 2012-05-21T09:34:11.617 回答