vba 当文件被其他用户使用时打开excel

2024-01-03

这是我当前的代码

Public Sub OpenFiles()
    'Set LiveDealSheet file path
    'Check if LiveDealSheet is already open
    LDSP = "C:\Users\DCHEUNG\Desktop\Programing\LiveDealSheet.xlsm"
    IsOTF = IsWorkBookOpen(LDSP)

    'Set quick workbook shortcut
    Set TWB = ThisWorkbook
    If IsOTF = False Then
        Set LDS = Workbooks.Open(LDSP)
    Else
        Workbooks("LiveDealSheet.xlsm").Activate
        Set LDS = ActiveWorkbook
    End If
End Sub

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

    On Error Resume Next
    ff = FreeFile()
'i was just browsing through the online library and I found that "Open FileName For..." 
'have a lot of keywords. If I only want to open the file and copy stuff out to 
'another workbook do I use "Open FileName for Input Read As #ff"? 
'Then when I actually open the file in OpenFiles() I change 
'"Set LDS = Workbooks.Open(LDSP)" to "Set LDS = Workbooks.Open(LDSP) (ReadOnly)"
    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

我尝试打开的文件是共享文件。当没有使用时,或者当我已经打开文件时,此代码可以正常工作。但每当另一个用户已经打开文件时,此代码就会停止。

我知道,即使其他用途正在使用该文件,我仍然可以以只读模式打开它。所以我的问题是如何在此处包含该代码,并且希望不会弹出窗口询问您是否要以只读模式打开。

抱歉,如果这是一个愚蠢的问题,但我对编码完全陌生。


首先感谢您的投入。我通过一些尝试和错误自行解决了这个问题。

将代码更改为以下内容

Public Sub OpenFiles()
    'Set LiveDealSheet file path
    'Check if LiveDealSheet is already open
    LDSP = "Z:\LiveDealSheet.xlsm"
    IsOTF = IsWorkBookOpen(LDSP)

    'Set quick workbook shortcut
    Set TWB = ThisWorkbook
    If IsOTF = False Then
        Set LDS = Workbooks.Open(LDSP)
        Debug.Print "Stage 1 Success"

改变了 else 语句中的所有内容

    Else
        On Error Resume Next
        Set LDS = Workbooks("LiveDealSheet.xlsm")
        If LDS Is Nothing Then Workbooks.Open FileName:=LDSP, ReadOnly:=True, IgnoreReadOnlyRecommended:=True
    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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vba 当文件被其他用户使用时打开excel 的相关文章

随机推荐

  • 如何在 swift 中将 sockaddr 转换为 sockaddr_in

    var sa tab sockaddr sockaddr repeating sockaddr count Int RTAX MAX let addr sockaddr sa tab Int RTAX DST let addr in soc
  • 在Android SDK中访问麦克风

    有没有什么方法可以访问 Android 手机中的麦克风 类似于访问android hardware Camera 我知道我们可以使用媒体记录器将 Android 应用程序中的音频录制到文件中 如下所示link http developer
  • 转义 URL 参数语句 if else switch

    这段代码有一个小问题 function getParameters var searchString document getElementById input1 value params searchString split hash i
  • 可编辑的 UITableView,每个单元格上都有一个文本字段

    我是 iOS 世界的新手 我想知道如何制作一个UITableView具有自定义单元格 其外观和行为类似于您尝试在设备上配置某些 WiFi 连接时所拥有的单元格 你知道UITableView细胞含有UITextField带有蓝色字体 您可以在
  • 如何将 ascii 流绑定到准备好的语句

    我正在测试快速加载示例代码Teradata 官方网站 http developer teradata com doc connectivity jdbc reference current samp T20208JD java txt 为了
  • unity 如何使用单个操纵杆控制摄像机视图?

    有谁知道如何仅用一个操纵杆控制摄像机视图 目前我使用的是开关的操纵杆 这是我当前的代码 public class MoveCamera MonoBehaviour public float speed 1 0f Camera cameraM
  • svcutil.exe 是 xsd.exe 的替代品吗?

    我正在使用 xsd exe 从 xsd 文件生成一些 C 类 我遇到了此处和其他网站上介绍的相同问题 其中 xsd exe 生成 Type 数组 而不是 xsd 文件中类型的通用列表集合 有些人建议 如果将 dataContractOnly
  • 在多个设备上刷新令牌

    我有一个 Api 和一个移动客户端 我使用刷新令牌如下 用户提供凭据 Api 返回访问令牌和刷新令牌 然后刷新令牌及其到期日期时间保存在数据库的用户表中 客户端使用给定的访问令牌消耗一些受保护的资源 访问令牌过期 因此客户端提供刷新令牌并获
  • 使用 mongoose 将 mongo 对象的字段设置为空

    我在一个对象上调用 user save 在其中设置 user signup date null user first name null user signup date null user save 但是当我查看 mongodb 中的用户
  • 如何在函数返回输出的末尾向用户显示消息?

    我正在创建一个函数来导入 txt文件并返回一个data frame 有时我想向用户显示一条消息以配合数据 我的问题是 通过将消息包含在函数正文中 它会显示在数据之前 并且以很大的形式显示data frame如果行很多 用户可能永远不会看到它
  • Hazelcast MapStoreConfig 被忽略

    我正在使用地图存储将我的 hazelcast 分布式地图保存在数据库中 在我的测试用例中 我启动了三个 hazelcast 实例 每个实例的配置方式相同 Config cfg new Config cfg setInstanceName n
  • 哪里可以找到 z3py 教程

    由于某些安全问题 rise4fun z3py 将在几周内不可用 我试图找到一些学习z3py的资源但徒劳无功 请推荐一些学习z3py的资源 我使用 Z3Py 教程源创建了一个 zip 文件 它基本上是一些 HTML 页面和一堆 python
  • scrapy 500个请求后添加延迟

    我有一个起始 2000 个 url 的列表 我正在使用 DOWNLOAD DELAY 0 25 为了控制请求的速度 但我还想在n个请求后添加更大的延迟 例如 我希望每个请求延迟 0 25 秒 每 500 个请求延迟 100 秒 Edit 示
  • 更改 UITableViewCell 的高度

    我想做一个UITableViewCell大 我该怎么办 我已经尝试调整其框架但没有任何反应 我能做些什么 您需要实施 CGFloat tableView UITableView tableView heightForRowAtIndexPa
  • Flutter“计算”内存泄漏 - 如何废弃计算实例使用的堆变量?

    我正在尝试使用compute https docs flutter io flutter foundation compute html我的移动应用程序中的实例以减少jank https flutter dev docs testing u
  • 如何从 WebSocket 端点内获取真实的系统文件路径

    当我在 Servlet 上下文中时 我可以通过调用 request getServletContext getRealPath UPLOAD PATH 轻松获取真实的系统文件路径 请问朋友们 我怎样才能在 Java EE 7 中的 WebS
  • VBScript 中的类:为什么这两个示例执行相同的操作?

    我在这个 StackOverFlow 问题上找到了这段代码 VBScript 中的对象 类字典 https stackoverflow com questions 13543942 dictionary of objects classes
  • 带有 like 子句的内连接

    我正在使用带有 like 子句的内部联接 我尝试过的sql是 SELECT tbl songs id AS sid tbl songs name AS sname tbl albums id AS aid tbl albums name A
  • Pentaho中如何将字符串转换为日期类型?

    我尝试将字符串值转换为日期 该字符串具有以下格式 yyyy MM dd 但是当我尝试使用选择值进行转换时 在元日期中我选择了文件名 类型 日期和货币 dd MM yyyy我收到这个错误 String couldn t convert str
  • vba 当文件被其他用户使用时打开excel

    这是我当前的代码 Public Sub OpenFiles Set LiveDealSheet file path Check if LiveDealSheet is already open LDSP C Users DCHEUNG De