Xem nhanh
Việc theo dõi các phiên bản khác nhau của một tệp luôn khiến tôi đau đầu. Tôi biết ơn rằng mình có quyền truy cập Microsoft SharePoint ở công ty và có khả năng dễ dàng lưu phiên bản mới mà chẳng cần suy nghĩ. Tuy nhiên, tôi đã nhận được một câu hỏi từ một độc giả có tên Kauket, hỏi rằng liệu có khả thi khi tự động lưu phiên bản mới của một tệp. Đây là một câu hỏi rất hay và thật sự khiến tôi phải suy nghĩ. Hãy bàn về cách mà cá nhân tôi xử lý vấn đề này và xem xem chúng ta có thể nghĩ ra một giải pháp hiệu quả hay không.
Đầu tiên, hãy suy nghĩ về cái mà chúng ta sẽ cần lập trình. Dưới đây, tôi sẽ liệt kê vài tính năng quan trọng mà mã VBA của chúng ta cần có:
Tôi quyết định viết mã cho Excel cũng như Microsoft Word và PowerPoint phòng khi bạn muốn sử dụng cùng một quá trình cho văn bản và bài thuyết trình của mình. Thật may, không có quá nhiều điểm khác biệt giữa ba bộ macro này.
Để mã chính VBA hoạt động, bạn sẽ cần sử dụng một tính năng nhỏ xác định liệu một tệp cụ thể (thông qua đường truyền tệp) đã tồn tại trong máy tính hay chưa. Điều này rất quan trọng để xác định số phiên bản phù hợp để sử dụng. Tôi tìm thấy một bài viết hay trên trang web Ron de Bruin viết một cách chi tiết về các cách khác nhau để kiểm tra xem liệu một thứ gì đó đã tồn tại bằng mã VBA. Hãy chắc rằng bạn sẽ xem qua bài viết đầy đủ của anh ấy, Test if Folder, File or Sheet Exists or File is Open (Kiểm tra xem danh mục, tệp hay trang tính có tồn tại chưa hay tệp có đang mở hay không) vì nó là một bài viết đáng đọc. Mã tính năng dưới đây là những gì tôi có thể chắt lọc từ bài viết của Ron.
Hãy chắc rằng bạn thêm tính năng này vào cùng với bất kỳ phiên bản mã macro ứng dụng nào – phiên bản được hiển thị bên dưới. Bạn có thể chỉ dán mã dưới đây vào dưới thủ tục con hoặc Excel, PowerPoint, hay Word.
Function FileExist(FilePath As String) As Boolean ‘PURPOSE: Test to see if a file exists or not ‘SOURCE: www.TheSpreadsheetGuru.com/The-Code-Vault ‘RESOURCE: http://www.rondebruin.nl/win/s9/win003.htmDim TestStr As String’Test File Path (ie “C:\Users\Chris\Desktop\Test\book1.xlsm”) On Error Resume Next TestStr = Dir(FilePath) On Error GoTo 0 ‘Determine if File exists End Function |
Hãy bắt đầu với phiên bản Excel của mã VBA, vì tôi đặt giả thiết rằng hầu hết các bạn đọc đều hứng thú với việc sử dụng tính năng kiểm soát phiên bản bên trong Excel (vì bạn là một trong những độc giả của tôi). Mã chỉ có một nhập liệu và điều này có thể khiến bạn muốn thay đổi và nhập liệu này chính là biến mã VersionExt. Tôi thêm phần mở rộng mặc định “_v” (cụ thể là myReport_v2.xlsx) nhưng bạn có thể thay đổi nó một cách dễ dàng thành “_v” (cụ thể là myReport v2.xlsx) hay bất cứ phần mở rộng nào bạn muốn hay cần. Hãy chắc rằng bạn để lại bình luận bên dưới nếu bạn có bất cứ thắc mắc nào về việc thay đổi mã VBA.
Xin hãy lưu ý rằng bạn sẽ cần mã FileExist Function (nằm trên phần này) dán vào môđun mã. Nếu bạn cần một bài hướng dẫn về cách chèn một macro vào Microsoft Excel để sử dụng macro này trong bất cứ cửa sổ Excel nào của bạn, bạn có thể xem qua bài viết mà tôi viết trước đây có tên How to Create A Personal Macro File (Cách tạo một tệp macro cá nhân).
Sub SaveNewVersion_Excel() ‘PURPOSE: Save file, if already exists add a new version indicator to filename ‘SOURCE: www.TheSpreadsheetGuru.com/The-Code-VaultDim FolderPath As String Dim myPath As String Dim SaveName As String Dim SaveExt As String Dim VersionExt As String Dim Saved As Boolean Dim x As LongTestStr = “” Saved = False x = 2 ‘Version Indicator (change to liking) ‘Pull info about file ‘Determine Base File Name ‘Test to see if file name already exists ‘Need a new version made ‘New version saved Exit Sub ‘Error Handler End Sub |
Điều duy nhất bạn cần thay đổi từ mã VBA Excel đầu tiên chính là thay đổi ActiveWorkbook thành ActiveDocument. Những thứ còn lại đều giống hệt!
Xin hãy lưu ý rằng bạn sẽ cần mã FileExist Function (nằm gần phía trên cùng bài viết này) dán vào môđun mã. Nếu bạn cần một bài hướng dẫn về cách chèn một macro vào Microsoft Word để sử dụng macro này trong bất cứ Word Documents nào của bạn, bạn có thể xem qua bài viết mà tôi viết trước đây có tên How to Create A Personal Macro File (Cách tạo một tệp macro cá nhân).
Sub SaveNewVersion_Word() ‘PURPOSE: Save file, if already exists add a new version indicator to filename ‘SOURCE: www.TheSpreadsheetGuru.com/The-Code-VaultDim FolderPath As String Dim myPath As String Dim SaveName As String Dim SaveExt As String Dim VersionExt As String Dim Saved As Boolean Dim x As LongTestStr = “” Saved = False x = 2 ‘Version Indicator (change to liking) ‘Pull info about file ‘Determine Base File Name ‘Test to see if file name already exists ‘Need a new version made ‘New version saved Exit Sub ‘Error Handler End Sub |
Cũng tương tự như phiên bản Microsoft Word, điều duy nhất bạn cần thay đổi từ mã VBA Excel đầu tiên chính là đổi ActiveWorkbook thành ActivePresentation. Những thứ còn lại đều giống hệt!
Xin hãy lưu ý rằng bạn sẽ cần mã FileExist Function (nằm gần phía trên cùng bài viết này) dán vào môđun mã. Nếu bạn cần một bài hướng dẫn về cách chèn một macro vào PowerPoint để sử dụng macro này trong bất cứ bài thuyết trình nào của bạn, bạn có thể xem qua bài viết mà tôi viết trước đây có tên How to Create A Personal Macro File (Cách tạo một tệp macro cá nhân).
Sub SaveNewVersion_PowerPoint() ‘PURPOSE: Save file, if already exists add a new version indicator to filename ‘SOURCE: www.TheSpreadsheetGuru.com/The-Code-VaultDim FolderPath As String Dim myPath As String Dim SaveName As String Dim SaveExt As String Dim VersionExt As String Dim Saved As Boolean Dim x As LongTestStr = “” Saved = False x = 2 ‘Version Indicator (change to liking) ‘Pull info about file ‘Determine if file has ever been saved ‘Determine Base File Name ‘Test to see if file name already exists ‘Need a new version made ‘New version saved Exit Sub ‘Error Handler End Sub |
Tôi không thể nói cho bạn biết rằng việc giữ các phiên bản của cùng một tệp quan trọng đến nhường nào. Điều này không chỉ giúp bạn tiết kiệm thời gian nếu tệp hiện thời của bạn có lỗi, mà còn cho phép bạn đi đến phiên bản trước nếu bạn quyết định (hay bị bắt buộc) thực hiện dự án theo một hướng hoàn toàn mới. Tôi đã đề cập hai lần việc có tổ chức trong bài viết này (SharePoint và việc tạo phần mở rộng phiên bản của riêng bạn); có các cách hay chương trình nào khác giúp bạn sắp xếp lịch sử tệp của bạn không? Hãy để lại bình luận bên dưới nếu bạn sẵn lòng chia sẻ! Tôi rất háo hức được đọc ý kiến của các bạn.
Có nhiều khả năng là bài viết này không đưa ra câu trả lời mà bạn mong muốn. Tất cả chúng ta đều có các tình huống khác nhau và thật sự không thể để đáp ứng hết các nhu cầu mà mọi người có. Đó là lý do tôi muốn chia sẻ với bạn: My Guide to Getting the Solution to your Problems FAST! (Hướng dẫn của tôi nhằm giúp giải quyết vẫn đề của bạn một cách nhanh chóng!). Trong bài viết này, tôi đã giải thích các cách tốt nhất mà tôi đã nghĩ ra qua các năm nhằm giúp đưa ra câu trả lời đơn giản cho các vấn đề phức tạp trong Excel, PowerPoint, VBA, và còn nhiều nữa!
Tôi khuyên bạn nên xem qua bài hướng dẫn đó trước khi hỏi tôi hay bất kỳ ai trong phần bình luận bên dưới nhằm giải quyết vấn đề cụ thể của riêng bạn. Tôi có thể đảm bảo rằng hết 10 lần thì có 9 lần, một trong những phương pháp của tôi có thể giúp bạn tìm ra câu trả lời nhanh hơn so với khi bạn chờ tôi trả lời đấy. Tôi nỗ lực hết mình để giúp tất cả mọi người, nhưng đôi khi tôi không có đủ thời gian để trả lời tất cả câu hỏi (chẳng bao giờ có đủ thời gian trong một ngày cả!).
Chúc may mắn và tôi hy vọng bài hướng dẫn này sẽ giúp bạn đi đúng hướng!