返回列表 上一主題 發帖

[發問] 存檔時自動備份檔案並轉為.xlsx格式

[發問] 存檔時自動備份檔案並轉為.xlsx格式

不好意思想請問一下,我想打開一份有巨集的excel檔後,在檔案儲存時能同步自動備份檔案到「備份」資料夾
且檔案格式要轉為.xlsx,但我測試以下代碼後,自動備份檔案到「備份」資料夾有成功,但打開檔案時卻出現以下視窗而且完全打不開

擷取.PNG
2016-8-20 01:17


想請問以下代碼是否有誤或該如何修正呢!?非常感謝~~~~~~~

thisworkbook,代碼:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Dim mypath As String, fname As String
fname = "自動備份" & Format(Date, "yymmdd") & ".xlsx"
mypath = ThisWorkbook.Path & "/備份/"
ThisWorkbook.SaveCopyAs mypath & fname
End Sub
*宅女一枚無誤*

回復 2# lpk187

   l大~~~~非常感謝幫忙,不過小妹測試之後原檔出現以下錯誤訊息,可以再請您幫忙看看嗎~~~~
擷取.PNG
2016-8-21 00:27


擷取1.PNG
2016-8-21 00:27


擷取2.PNG
2016-8-21 00:27
*宅女一枚無誤*

TOP

回復 3# zyzzyva

z大~~~~~您又出手相助了!!!非常感謝喔~~~~~
不過測試之後,雖然已經按過存檔,但只要關閉檔案時還是會再出現一次以下的訊息視窗,請問是否可跳過此對話視窗呢!?

擷取3.PNG
2016-8-21 00:36
*宅女一枚無誤*

TOP

回復 10# zyzzyva


   z大~~~~測試已成功,真的超級感謝的呦
*宅女一枚無誤*

TOP

本帖最後由 msmplay 於 2016-11-2 20:02 編輯

回復 10# zyzzyva


   z大~~可以請教兩個延伸的問題嗎?
就是如果自動備份位置希望改為檔案的上層資料夾,該如何修改呢?
例如:檔案 放於 C:\Users\Downloads\測試,希望自動備份檔案於 C:\Users\Downloads


另外如果希望自動備份的檔案固定存為唯讀檔,又該如何修改呢?
例如: 測試檔.xlsm 存檔時自動備份為 測試檔.xlsx(唯讀)
*宅女一枚無誤*

TOP

本帖最後由 msmplay 於 2016-11-2 22:33 編輯

回復 13# zyzzyva

   z大~~~~~測試後,發現第一次存檔成功,但第二次要再存檔就會出現以下錯誤,是不是因為唯讀檔無法覆蓋問題呢??

2.PNG
2016-11-2 22:28
1.PNG
2016-11-2 22:28
*宅女一枚無誤*

TOP

回復 15# zyzzyva

z大~~~~那請問可以存檔即覆蓋舊檔嗎?也就是無論如何,原始檔只要存檔就是要覆蓋備份唯讀檔,可以醬嗎?又該如何修改呢?真的非常感謝~~~~~~
*宅女一枚無誤*

TOP

本帖最後由 msmplay 於 2016-11-3 12:45 編輯

回復 17# zyzzyva

z大~~真的可以了耶!謝謝你*^O^*
*宅女一枚無誤*

TOP

回復 17# zyzzyva

z大~~~~結果公司又要將備份檔改放於像之前寫的那樣,放在檔案下一層備份資料夾內mypath = ThisWorkbook.Path & "\備份\"


結果我嘗試改了一下但都不對,可以再麻煩您嗎~~~~
紅色是我自己亂改的


  • Private Sub Workbook_BeforeClose(Cancel As Boolean)
  •     Dim mypath As String, fname As String
  •     fname = "\自動備份" & Format(Date, "yymmdd") & ".xlsx"
  •     mypath = ThisWorkbook.Path & "\備份\"
  •     Targetfile = mypath & fname
  •     If Not Me.Saved Then
  •         Msg = "Do you want to save the changes you made to "
  •         Msg = Msg & Me.Name & "?"
  •         Ans = MsgBox(Msg, vbQuestion + vbYesNoCancel)
  •         Select Case Ans
  •             Case vbYes
  •                 Me.Save
  •             Case vbNo
  •                 Me.Saved = False
  •             Case vbCancel
  •                 Cancel = True
  •                 Exit Sub
  •           End Select
  •     End If
  •     If Me.Saved Then
  •         Application.DisplayAlerts = False '關閉系統警告訊息
  •         'ThisWorkbook.Save '要儲存自身檔案,請自行選擇要不要儲存
  •         If Dir(Targetfile) <> "" Then
  •             If GetAttr(Targetfile) And vbReadOnly Then
  •                 SetAttr Targetfile, vbNormal
  •             End If
  •         End If
  •         ThisWorkbook.SaveAs mypath & fname, FileFormat:=xlOpenXMLWorkbook
  •         Application.DisplayAlerts = True '開啟系統警告訊息
  •     Else
  •         Me.Saved = True
  •     End If
  •     If Dir(Targetfile) <> "" Then
  •         If GetAttr(Targetfile) Then
  •             SetAttr Targetfile, vbReadOnly
  •         End If
  •     End If
  • End Sub
*宅女一枚無誤*

TOP

回復 20# zyzzyva


   哈~~~~~~怎麼辦我好笨喔!!!
*宅女一枚無誤*

TOP

        靜思自在 : 【生命在呼吸間】佛陀說:「生命在呼吸間。」人無法管住自己的生命,更無法擋住死期,讓自己永住人間。既然生命去來這麼無常,我們更應該好好地愛惜它、利用它、充實它,讓這無常、寶貴的生命,散發它真善美的光輝,映照出生命真正的價值。
返回列表 上一主題