gpt4 book ai didi

excel - 我应该如何格式化 OneDrive 文件路径以便 Open() 或 FSO.OpenTextFile 打开它?

转载 作者:行者123 更新时间:2023-12-04 19:50:31 24 4
gpt4 key购买 nike

我尝试通过以读/写方式打开 OneDrive 的内存中锁定一个小的虚拟文本文件,这样我就可以独占访问另一个打开的共享 xlsm 中的一些共享 Excel 表格。必要的修改后,我将关闭该文件以允许其他用户锁定它并在必要时修改共享的 xlsm。

OpenFSO.OpenTextFile 命令在本地文件上按预期工作。但是,我无法使用“https://d.docs.live.net/ .....”文件路径工作。它们抛出运行时错误。

Workbooks.Open 可以处理此类路径名(正如我自己阅读和测试的那样 in another SO post )但我不想在 Excel 中打开文件,只是将其锁定在操作系统级别的内存中直到我完成修改。

Public Sub GetExclusiveAccess()

Dim fso As FileSystemObject
Dim txtStream As TextStream
Dim filepath As String
Dim PathDelimiter As String

PathDelimiter = IIf(InStr(ThisWorkbook.Path, "//") > 0, "/", "\")
filepath = ThisWorkbook.Path & PathDelimiter & "filelock.txt"

' First method

Set fso = New FileSystemObject
'On Error Resume Next
Set txtStream = fso.OpenTextFile(filepath, ForWriting, False)
'On Error GoTo 0
If txtStream Is Nothing Then GoTo Error
'Success...
txtStream.Close

' Second method

Open filepath For Output As #1
'Success...
Close #1

Error:

End Sub

最佳答案

我看到你想要构建与我完全相同的设置。
我建议改为读取和写入文件锁定文本文件。
文件可能会卡住而不是在应该关闭的时候关闭,但根据我的经验,更改内容更安全。

我有一个文本文件,其中包含单词“open”或“closed”,具体取决于它将打开共享数据库文件的值。

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(TXT_File_Path, 1)
Contents = objFile.ReadLine
DoEvents
objFile.Close

if Contents = "Open" then
' output error
else
' open file

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile(TXT_File_Path)

objFile.WriteLine "Open" ' write open in the text file
objFile.Close

Set FSO = Nothing
Set oFile = Nothing


' do your stuff


Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile(TXT_File_Path)

objFile.WriteLine "Closed" ' write Closed in the text file
objFile.Close

Set FSO = Nothing
Set oFile = Nothing
end if

我相信我在 Microsoft 帮助页面上找到了一个名为 IsWorkBookOpen 的函数。

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

如果工作簿 (Excel) 打开或关闭,这将返回真/假。
但我主要依赖文本文件,因为它更快并且可以保存额外的信息(我的是最后打开的)。

我还建议您更改为 xlsb 文件,因为它们比 xlsm 更快。像这样的数据库文件需要打开和关闭很多次,当文件通过网络达到大约 2 MB 时,将花费很长时间。

关于excel - 我应该如何格式化 OneDrive 文件路径以便 Open() 或 FSO.OpenTextFile 打开它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58803112/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com