Board logo

標題: [發問] 檔案開啟另存複本 [打印本頁]

作者: cowww    時間: 2023-5-22 11:58     標題: 檔案開啟另存複本

本帖最後由 cowww 於 2023-5-22 12:00 編輯

請教論壇的大大們

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

原先的語法
  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

本帖最後由 quickfixer 於 2023-5-23 05:59 編輯

你程式碼有少,isfileopen不是內建的功能
應該還要有一個function isfileopen(filename as string),自建的副程式
作者: cowww    時間: 2023-5-23 11:39

回復 2# quickfixer

非常感謝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

回復 3# cowww


這個少了結尾
End Function
作者: cowww    時間: 2023-5-26 07:45

回復 4# 准提部林

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

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




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)