• Trang chủ
  • Giới thiệu
    • Học gia sư kế toán tại Hà Nội
  • Excel
  • Kế toán
  • Kinh nghỉệm
  • DAX
  • VBA
  • Văn bản
  • Access
  • Liên hệ
    • Chính sách bảo mật
Chủ Nhật, Tháng Ba 26, 2023
  • Login
No Result
View All Result
NEWSLETTER
Học gia sư kế toán
  • Trang chủ
  • Giới thiệu
    • Học gia sư kế toán tại Hà Nội
  • Excel
  • Kế toán
  • Kinh nghỉệm
  • DAX
  • VBA
  • Văn bản
  • Access
  • Liên hệ
    • Chính sách bảo mật
  • Trang chủ
  • Giới thiệu
    • Học gia sư kế toán tại Hà Nội
  • Excel
  • Kế toán
  • Kinh nghỉệm
  • DAX
  • VBA
  • Văn bản
  • Access
  • Liên hệ
    • Chính sách bảo mật
No Result
View All Result
Học Gia sư Kế toán
No Result
View All Result

MÃ VBA ĐỂ LƯU NHƯ MỘT PHIÊN BẢN MỚI NẾU TỆP ĐÃ CÓ SẴN

by My Lê
19/02/2023
in VBA
0
MÃ VBA ĐỂ LƯU NHƯ MỘT PHIÊN BẢN MỚI NẾU TỆP ĐÃ CÓ SẴN

Originally posted on 12/02/2022 @ 21:33

MÃ VBA ĐỂ LƯU NHƯ MỘT PHIÊN BẢN MỚI NẾU TỆP ĐÃ CÓ SẴN

  • Chuyên mục:
  • Excel nâng cao

KIỂM SOÁT PHIÊN BẢN

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.

LÔGIC

Đầ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ó:

  • Xác định liệu phiên bản trước đã tồn tại hay chưa
  • Xác định nơi tệp được lưu (hay liệu nó có được lưu hay không)
  • Tạo phiên bản mới có tên mở rộng (ví dụ thêm “_v2” vào cuối tên tệp)

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.

TÍNH NĂNG XÁC ĐỊNH LIỆU TỆP CÓ TỒN TẠI HAY CHƯA

Để 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:UsersChrisDesktopTestbook1.xlsm”)
On Error Resume Next
TestStr = Dir(FilePath)
On Error GoTo 0

‘Determine if File exists
If TestStr = “” Then
FileExist = False
Else
FileExist = True
End If


EX101 92019 nho

End Function

 

MÃ VBA VỀ VIỆC KIỂM SOÁT PHIÊN BẢN DÀNH CHO EXCEL

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)
VersionExt = “_v”

‘Pull info about file
On Error GoTo NotSavedYet
myPath = ActiveWorkbook.FullName
myFileName = Mid(myPath, InStrRev(myPath, “”) + 1, InStrRev(myPath, “.”) – InStrRev(myPath, “”) – 1)
FolderPath = Left(myPath, InStrRev(myPath, “”))
SaveExt = “.” & Right(myPath, Len(myPath) – InStrRev(myPath, “.”))
On Error GoTo 0

‘Determine Base File Name
If InStr(1, myFileName, VersionExt) > 1 Then
myArray = Split(myFileName, VersionExt)
SaveName = myArray(0)
Else
SaveName = myFileName
End If

‘Test to see if file name already exists
If FileExist(FolderPath & SaveName & SaveExt) = False Then
ActiveWorkbook.SaveAs FolderPath & SaveName & SaveExt
Exit Sub
End If

‘Need a new version made
Do While Saved = False
If FileExist(FolderPath & SaveName & VersionExt & x & SaveExt) = False Then
ActiveWorkbook.SaveAs FolderPath & SaveName & VersionExt & x & SaveExt
Saved = True
Else
x = x + 1
End If
Loop

‘New version saved
MsgBox “New file version saved (version ” & x & “)”

Exit Sub

‘Error Handler
NotSavedYet:
MsgBox “This file has not been initially saved. ” & _
“Cannot save a new version!”, vbCritical, “Not Saved To Computer”

End Sub

MÃ VBA VỀ VIỆC KIỂM SOÁT PHIÊN BẢN DÀNH CHO MICROSOFT WORD

Đ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)
VersionExt = “_v”

‘Pull info about file
On Error GoTo NotSavedYet
myPath = ActiveDocument.FullName
myFileName = Mid(myPath, InStrRev(myPath, “”) + 1, InStrRev(myPath, “.”) – InStrRev(myPath, “”) – 1)
FolderPath = Left(myPath, InStrRev(myPath, “”))
SaveExt = “.” & Right(myPath, Len(myPath) – InStrRev(myPath, “.”))
On Error GoTo 0

‘Determine Base File Name
If InStr(1, myFileName, VersionExt) > 1 Then
myArray = Split(myFileName, VersionExt)
SaveName = myArray(0)
Else
SaveName = myFileName
End If

‘Test to see if file name already exists
If FileExist(FolderPath & SaveName & SaveExt) = False Then
ActiveDocument.SaveAs FolderPath & SaveName & SaveExt
Exit Sub
End If

‘Need a new version made
Do While Saved = False
If FileExist(FolderPath & SaveName & VersionExt & x & SaveExt) = False Then
ActiveDocument.SaveAs FolderPath & SaveName & VersionExt & x & SaveExt
Saved = True
Else
x = x + 1
End If
Loop

‘New version saved
MsgBox “New file version saved (version ” & x & “)”

Exit Sub

‘Error Handler
NotSavedYet:
MsgBox “This file has not been initially saved. ” & _
“Cannot save a new version!”, vbCritical, “Not Saved To Computer”

End Sub

MÃ VBA VỀ VIỆC KIỂM SOÁT PHIÊN BẢN DÀNH CHO POWERPOINT

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)
VersionExt = “_v”

‘Pull info about file
On Error GoTo NotSavedYet
myPath = ActivePresentation.FullName
myFileName = Mid(myPath, InStrRev(myPath, “”) + 1, InStrRev(myPath, “.”) – InStrRev(myPath, “”) – 1)
FolderPath = Left(myPath, InStrRev(myPath, “”))
SaveExt = “.” & Right(myPath, Len(myPath) – InStrRev(myPath, “.”))
On Error GoTo 0

‘Determine if file has ever been saved
If FolderPath = “” Then
MsgBox “This file has not been initially saved. ” & _
“Cannot save a new version!”, vbCritical, “Not Saved To Computer”
Exit Sub
End If

‘Determine Base File Name
If InStr(1, myFileName, VersionExt) > 1 Then
myArray = Split(myFileName, VersionExt)
SaveName = myArray(0)
Else
SaveName = myFileName
End If

‘Test to see if file name already exists
If FileExist(FolderPath & SaveName & SaveExt) = False Then
ActivePresentation.SaveAs FolderPath & SaveName & SaveExt
Exit Sub
End If

‘Need a new version made
Do While Saved = False
If FileExist(FolderPath & SaveName & VersionExt & x & SaveExt) = False Then
ActivePresentation.SaveAs FolderPath & SaveName & VersionExt & x & SaveExt
Saved = True
Else
x = x + 1
End If
Loop

‘New version saved
MsgBox “New file version saved (version ” & x & “)”

Exit Sub

‘Error Handler
NotSavedYet:
MsgBox “This file has not been initially saved. ” & _
“Cannot save a new version!”, vbCritical, “Not Saved To Computer”

End Sub

 

HÃY CHUẨN BỊ VÀ HÃY CÓ TỔ CHỨC

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.

LÀM THẾ NÀO TÔI CÓ THỂ ĐIỀU CHỈNH CÁI NÀY CHO PHÙ HỢP VỚI NHU CẦU CỦA MÌNH?

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!

 

 


@
·
·
·
Bài viết khác của cùng tác giả

  • Tất cả
  • Python
  • SQL
  • VBA

3.000.000VND 1.800.000VND
PYXL101
Xem chi tiết

3.000.000VND 1.600.000VND
SQL100
Xem chi tiết

499.000VND 199.000VND
PY100
Xem chi tiết

Bài viết liên quan

Cách tạo menu chuyển động đẹp trong Excel sử dụng VBA

Cách lấy danh sách ngẫu nhiên không trùng lặp trong Excel

Cách lọc lấy số trong ô lẫn cả số và chữ hoặc ngược lại

Cách dùng hàm FILTERXML để xử lý tách và sắp xếp dữ liệu

Hàm Hlookup trong Excel; dùng Hlookup, Vlookup hay Xlookup trong trường hợp nào

Xác định ngày bất kỳ là thứ mấy trong tuần


Khóa học liên quan

Khóa học Excel từ cơ bản đến chuyên gia dành cho người đi làm
Chi tiết khóa học

Khóa học Trọn bộ Power Query nền tảng cho công việc báo cáo dữ liệu
Chi tiết khóa học

  

© Học Gia Sư Kế Toán. All rights reserved.

My Lê

My Lê

My Lê tên thật là Mê Ly đã có 10 năm kinh nghiệm trong ngành kế toán.

Next Post
Hướng dẫn phân loại và lọc bản ghi (Record) trong Access 2016

Hướng dẫn phân loại và lọc bản ghi (Record) trong Access 2016

Recommended

Di chuyển trang tính Excel trực tuyến, chia sẻ, nhúng mã trên trang web và làm chúng có khả năng tương tác

Di chuyển trang tính Excel trực tuyến, chia sẻ, nhúng mã trên trang web và làm chúng có khả năng tương tác

4 tuần ago
Hướng dẫn hạch toán tài khoản 138 – Phải thu khác theo hướng dẫn của Thông tư 200

Hướng dẫn hạch toán tài khoản 138 – Phải thu khác theo hướng dẫn của Thông tư 200

4 tuần ago

Tin mới nhất

    Fanpage

    • Liên hệ
    • Giới thiệu
    • Đặt quảng cáo
    Liên hệ chúng tôi qua email : hocgiasuketoan.com@gmail.com

    © 2022 Hocgiasuketoan Premium magazine by Hocgiasuketoan

    No Result
    View All Result
    • Trang chủ
    • Giới thiệu
      • Học gia sư kế toán tại Hà Nội
    • Excel
    • Kế toán
    • Kinh nghỉệm
    • DAX
    • VBA
    • Văn bản
    • Access
    • Liên hệ
      • Chính sách bảo mật

    © 2022 Hocgiasuketoan Premium magazine by Hocgiasuketoan

    Welcome Back!

    Login to your account below

    Forgotten Password?

    Retrieve your password

    Please enter your username or email address to reset your password.

    Log In