麻辣家族討論版版's Archiver

cowww 發表於 2023-5-22 11:58

檔案開啟另存複本

[i=s] 本帖最後由 cowww 於 2023-5-22 12:00 編輯 [/i]

請教論壇的大大們

我想把另存新檔改成先判斷檔案是否有被開啟
如果有,就另存複本
如果沒有,就直接儲存

原先的語法
  ThisWorkbook.SaveAs fileName:= _
        "\\group.com\dept\備份\123\急件專案狀態追蹤_v2_0.xlsm", WriteResPassword:="6112"

以下是修改的語法,請問哪裡有錯誤
    Dim fileName As String
    fileName = "\\shl-group.com\dept\急件專案狀態追蹤_v2_0.xlsm"
   
    If IsFileOpen(fileName) Then
        Dim copyName As String
        copyName = Left(fileName, Len(fileName) - 5) & "_Copy.xlsm"
        
        ThisWorkbook.SaveCopyAs fileName:=copyName, WriteResPassword:="6112"
        
    Else
        ThisWorkbook.SaveAs fileName, WriteResPassword:="6112"
    End If

[attach]36408[/attach]

quickfixer 發表於 2023-5-23 05:56

[i=s] 本帖最後由 quickfixer 於 2023-5-23 05:59 編輯 [/i]

你程式碼有少,isfileopen不是內建的功能
應該還要有一個function isfileopen(filename as string),自建的副程式

cowww 發表於 2023-5-23 11:39

[b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=121261&ptid=23999]2#[/url] [i]quickfixer[/i] [/b]

非常感謝quickfixer大大的解惑

GPT給我了這一段語法,測試上是沒有問題的
Function IsFileOpen(filePath As String) As Boolean
    Dim fileNum As Integer
    fileNum = FreeFile()

    On Error Resume Next
    Open filePath For Binary Access Read Write Lock Read Write As fileNum
    If Err.Number <> 0 Then
        IsFileOpen = True
    End If
    Close fileNum
    On Error GoTo 0

准提部林 發表於 2023-5-25 19:48

[b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=121262&ptid=23999]3#[/url] [i]cowww[/i] [/b]


這個少了結尾
End Function

cowww 發表於 2023-5-26 07:45

[b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=121304&ptid=23999]4#[/url] [i]准提部林[/i] [/b]

非常感謝准提部林大大的提醒

想說可以執行就沒甚麼注意了

頁: [1]

麻辣家族討論版版為 麻辣學園 網站成員  由 昱得資訊工作室 © Since 1993 所提供