Sao lưu các tệp Excel vào một thư mục khác


0

Trong Excel 2007 trong hộp Lưu dưới dạng, có một tùy chọn để 'Tạo bản sao lưu', chỉ cần sao lưu tệp bất cứ khi nào nó được lưu. Thật không may, nó sao lưu tập tin vào cùng thư mục với bản gốc.
Có cách nào đơn giản để thay đổi thư mục này sang ổ đĩa / thư mục khác không? Tôi đã nhầm lẫn với các macro để làm điều này, đến với:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Saves the current file to a backup folder and the default folder
'Note that any backup is overwritten
Application.DisplayAlerts = False
ActiveWorkbook.SaveCopyAs Filename:="T:\TEC_SERV\Backup file folder - DO NOT DELETE\" & _ ActiveWorkbook.Name
ActiveWorkbook.Save
Application.DisplayAlerts = True
End Sub

Điều này tạo ra một bản sao lưu của tập tin ok ngay lần đầu tiên, tuy nhiên nếu điều này được thử lại tôi nhận được:
Lỗi thời gian chạy '1004';
Microsoft Office Excel không thể truy cập tệp 'T: \ TEC_SERV \ Thư mục tệp sao lưu - KHÔNG XÓA \ Kiểm tra Macro Sheet.xlsm. Có một số lý do có thể:
Tên tệp hoặc đường dẫn không tồn tại
Tệp đang được sử dụng bởi một chương trình khác
Sổ làm việc bạn đang cố lưu có cùng tên với ...

Tôi biết đường dẫn là chính xác, tôi cũng biết rằng tập tin không được mở ở bất cứ nơi nào khác. Sổ làm việc có cùng tên với tên tôi đang cố lưu lại nhưng nó chỉ nên ghi đè lên.

Tôi đã đăng câu hỏi về mã hóa trên Stack Overflow nhưng tự hỏi liệu có cách nào dễ dàng hơn để làm điều này không.

Bất kì sự trợ giúp nào đều được đánh giá cao. Joe


Vì một số lý do kỳ lạ, tôi không thấy tùy chọn đó trên Excel '07 của mình. Bạn có phiên bản nào?
Isxek

1
Không giúp trả lời OP, nhưng để trả lời lsxek: Khi bạn truy cập Save As ..., nhấp vào nút Công cụ, Tùy chọn chung. Đây là nơi bạn nhận được tickbox cho "Luôn tạo bản sao lưu" cũng như các tùy chọn mật khẩu. Tùy chọn là cho mỗi tài liệu bất kể ai là người chỉnh sửa, không phải cho tất cả các bảng tính bạn tạo. Nó không thực sự tạo ra một bản sao lưu (nó không thực hiện thêm thao tác ghi), nó giống như thế này: Lưu tệp bình thường tạo một tệp tạm thời mới và khi được lưu hoàn toàn, nó sẽ xóa bản gốc và đổi tên bản sao mới. Sao lưu chỉ cần đổi tên ban đầu thay vì xóa nó.
AdamV

Câu trả lời:


1

Sổ làm việc bạn đang cố lưu có cùng tên với ...

Tôi giả sử điều này kết thúc bằng "như một sổ làm việc đã mở". Tôi không biết tại sao đây là một yêu cầu, nhưng Excel sẽ không chạm vào hai bảng tính có cùng tên tệp. Bạn có thể muốn thử & Workbook.Name & ".bak"mã của bạn.

Mặc dù bạn nên lưu ý rằng có lẽ bạn đang đi sai về điều này. Những gì bạn đang cố gắng gọi là "kiểm soát phiên bản" và bạn nên xem qua Shadow Copies và kho lưu trữ mã nguồn (mặc dù bảng tính Excel này không phải là mã nguồn, bạn vẫn có thể phiên bản tệp). Điều này rất có thể là "Điều phải làm (TM)"


Tôi đã sử dụng mã để chứa .bak, trong trường hợp đầu tiên, nó chạy kết quả mong muốn. Tuy nhiên, mỗi lần chạy sau đó, nó lại xuất hiện lỗi tương tự như trước. Sự giúp đỡ của bạn được đánh giá cao
Joe Taylor

Sử dụng <a href=" technet.microsoft.com/en-us/sysiternals/,> để đảm bảo rằng bản sao không bị giữ mở, đồng thời, tệp không bị gắn cờ là chỉ đọc. Tôi nghĩ rằng SaveCopyAs không thể ghi đè một tệp hiện có. Bạn có thể xóa tệp trước khi chạy SaveCopyAs hoặc xem xét việc đặt tên các bản sao lưu là Filename.YYYY.MM.DD.HH.MM.SS.xls. Mặc dù tôi không thể nhấn mạnh bạn nên sử dụng hệ thống kiểm soát phiên bản mạnh đến mức nào .
ta.speot.is

Cảm ơn bạn đã giúp đỡ. Thật không may, chúng tôi đang làm việc trên một hệ thống nhỏ của hệ thống đại học công ty và đơn giản là không có ý kiến ​​gì về những hệ thống đang diễn ra. Việc sao lưu trong thư mục khác nhau chỉ để giữ một phiên bản của tệp trong thư mục khác trong trường hợp ai đó vô tình xóa nó.
Joe Taylor

0

Ok vì vậy, dài và ngắn của nó dường như không có cách dễ dàng để làm điều này. Không có chức năng có trong Excel để cho phép các bản sao lưu được lưu vào một thư mục khác. Những gì được yêu cầu là một Visual Basic Macro khá đơn giản - tương tự như một cái được nêu ở trên. Tôi đã tính đến các ý tưởng của Taspeotis và vì vậy đã nêu lên câu trả lời của anh ấy. Tôi đã không đưa ra câu trả lời chính xác vì nó không trả lời câu hỏi. Tôi đánh giá cao thời gian đưa ra mặc dù.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.