Sao lưu & khôi phục
Chiến lược sao lưu đầy đủ cho DVDAddin — license, thiết lập, workbook và dữ liệu tùy biến.
Cần sao lưu những gì
Bốn lớp cần sao lưu
| Lớp | Tần suất | Cách làm |
|---|---|---|
| Workbook (file Excel dự án) | Mỗi lần lưu (Ctrl+S) | Đồng bộ OneDrive + nén lưu trữ hằng tuần |
| License + thiết lập của add-in | Sau mỗi lần cài mới / kích hoạt | Chép 3 file + xuất registry |
| Mẫu và dữ liệu tùy biến | Khi sửa | Chép ra trước mỗi lần cập nhật add-in |
| Script tự viết (VBA, PowerShell) | Khi sửa | Kho Git / thư mục trên đám mây |
Lớp 1 — Sao lưu workbook
Mức cơ bản: AutoRecover
Excel có sẵn tính năng AutoRecover:
- File → Options → Save → "Save AutoRecover information every" → đặt 5 phút.
- Excel tự lưu bản dự phòng tại
%APPDATA%\Microsoft\Excel\.
→ Excel bị sập → mở lại Excel → Excel đề nghị khôi phục file (Recover).
⚠️ Hạn chế: chỉ cứu được lần sập gần nhất, không lấy lại được phiên bản của 1 ngày trước.
Nhiều lệnh của add-in không hoàn tác được
Các lệnh ghi trực tiếp lên bảng tính — Tạo tiêu đề, Lấy Email, Trích bảng, Đánh số, Gộp ô… — không hoàn tác được bằng Ctrl+Z. AutoRecover không cứu được trường hợp này vì file không hề bị sập. Thói quen an toàn: bấm Ctrl+S ngay trước khi chạy một lệnh ghi hàng loạt, để còn đóng file không lưu mà quay lại. Riêng các lệnh có hộp xác nhận và để tick Sao lưu sheet, bấm Ctrl+Z ngay sau lệnh là sheet trở về như trước — xem Khôi phục dữ liệu.
Mức trung bình: đồng bộ OneDrive / Google Drive
Lưu dự án trong thư mục OneDrive:
C:\Users\<user>\OneDrive\Projects\MHC_Van_Phong\Mỗi lần Ctrl+S → file tự tải lên đám mây trong vài giây.
OneDrive có Version History (lịch sử phiên bản: chuột phải vào file → Version history) — khôi phục được phiên bản cũ.
Mức cao: nén lưu trữ hằng tuần
Script PowerShell chạy vào cuối mỗi tuần:
$src = 'D:\Projects\MHC_Van_Phong'
$dst = "D:\Backup\MHC\$(Get-Date -Format 'yyyy-MM-dd').zip"
Compress-Archive -Path "$src\*" -DestinationPath $dst -ForceĐặt lịch: Task Scheduler → hằng tuần, Chủ nhật lúc 23:00.
→ Mỗi tuần 1 file zip → giữ 8 tuần gần nhất.
Mức cao nhất: sao lưu ở nơi khác
Với dự án quan trọng:
- Sao lưu trên máy + trên đám mây + ổ cứng vật lý cất ở văn phòng khác.
- Quy tắc 3-2-1: 3 bản sao, trên 2 loại phương tiện lưu trữ khác nhau, 1 bản để ở nơi khác.
Lớp 2 — License và thiết lập của DVDAddin
Toàn bộ trạng thái của add-in nằm ở ba chỗ, không nằm trong file Excel:
| Vị trí | Nội dung |
|---|---|
%LocalAppData%\DVDAddin\ | license.dat, fx_cache.json, admin-config.json |
%APPDATA%\DVDAddin\ | lang.txt (ngôn ngữ giao diện), TCVN-Custom.json, thư mục Backups\ |
HKCU\Software\DVD\DVDAddin | Toàn bộ Tùy chọn, API key, phím tắt, thiết lập Gantt… |
Các khóa registry và ý nghĩa
HKCU\Software\DVD\DVDAddin\
├── API Keys ← GeminiAPI, ChatGPTAPI, GroqAPI, NvidiaAPI (văn bản thường)
├── Preferences ← toàn bộ thiết lập trong cửa sổ Tùy chọn
├── Shortcuts ← phím tắt tùy biến
├── GanttSettings ← cấu hình biểu đồ tiến độ
├── Model / Service / Temperature ← nhà cung cấp AI và tham số
├── SyncConfig ← thiết lập Kết nối Server
├── Licensing ← MaxSeenUtc, LicenseBlob dự phòng
├── Translate / TextTools / FileList / Chat / Onboarding / SettingsXem thêm Tùy biến nâng cao → Cây registry đầy đủ.
Script sao lưu
$dst = "$env:USERPROFILE\Documents\Backup\DVDAddin"
New-Item -ItemType Directory -Path $dst -Force | Out-Null
# 1. License + cache
Copy-Item "$env:LOCALAPPDATA\DVDAddin\*" $dst -Recurse -Force -ErrorAction SilentlyContinue
# 2. Ngôn ngữ UI + TCVN tùy biến
Copy-Item "$env:APPDATA\DVDAddin\*" $dst -Recurse -Force -ErrorAction SilentlyContinue
# 3. Registry (Tùy chọn, API key, phím tắt)
reg export "HKCU\Software\DVD\DVDAddin" "$dst\settings.reg" /yFile settings.reg chứa API key dạng văn bản thường
API key của Gemini/OpenAI/Groq/NVIDIA nằm trong registry không mã hoá, nên bản xuất ra cũng vậy. Đừng đẩy file này lên kho dùng chung của công ty hay kho Git. Hãy cất ở nơi chỉ mình bạn đọc được, hoặc mở file .reg xoá nhánh API Keys trước khi chia sẻ.
Script khôi phục
$src = "$env:USERPROFILE\Documents\Backup\DVDAddin"
# Đóng Excel trước — file .xll đang nạp sẽ khoá mọi thứ
Get-Process EXCEL -ErrorAction SilentlyContinue | Stop-Process -Force
New-Item -ItemType Directory -Path "$env:LOCALAPPDATA\DVDAddin" -Force | Out-Null
New-Item -ItemType Directory -Path "$env:APPDATA\DVDAddin" -Force | Out-Null
Copy-Item "$src\license.dat" "$env:LOCALAPPDATA\DVDAddin\" -Force -ErrorAction SilentlyContinue
Copy-Item "$src\lang.txt" "$env:APPDATA\DVDAddin\" -Force -ErrorAction SilentlyContinue
Copy-Item "$src\TCVN-Custom.json" "$env:APPDATA\DVDAddin\" -Force -ErrorAction SilentlyContinue
reg import "$src\settings.reg"License không chuyển được sang máy khác bằng cách chép file
Mã máy (Machine ID) được tính bằng SHA-256(MachineGuid | Tên máy | Phiên bản OS). Chép license.dat sang máy mới — hoặc chỉ đổi tên máy, hoặc nâng cấp Windows lên bản lớn hơn — đều cho ra mã máy khác, và mã xác thực (token) bị coi là của máy khác.
Cách đúng: đăng nhập lại bằng email/mật khẩu. Xem Chuyển license sang máy khác.
Nếu license.dat không ghi được
Khi thư mục %LocalAppData%\DVDAddin bị chặn ghi (ACL, Controlled Folder Access, hoặc có thư mục cũ nằm đúng chỗ file), add-in tự chuyển sang lưu ở HKCU\Software\DVD\DVDAddin\Licensing\LicenseBlob. Bản xuất registry ở trên đã bao gồm cả trường hợp này — không cần làm thêm gì.
Lớp 3 — Mẫu và dữ liệu tùy biến
Những gì bộ cài ghi đè mỗi lần cập nhật
Thư mục cài C:\DVDAddin\ được bộ cài ghi đè. Hai thư mục con chứa dữ liệu bạn có thể đã sửa:
C:\DVDAddin\
├── Template\
│ ├── FormNTCV.xlsx ← Mẫu NT công việc
│ ├── FormNTVL.xlsx ← Mẫu NT vật liệu
│ ├── FormNKCT.xlsx ← Mẫu Nhật ký
│ ├── SendEmail.xlsx ← Mẫu Email
│ ├── GanttChart.xlsx ← Mẫu tiến độ
│ └── RebarCutOptimizer.xlsx ← Mẫu Cắt thép
└── Library\
├── Dinh Muc 1776.xlsx
├── Dinh Muc TT10.2019.xlsx
├── Ke hoach thi nghiem.xlsx
├── TCVN-Standards.json ← danh mục tiêu chuẩn gốc
└── TCVN-Custom.template.jsonSửa trực tiếp trong hai thư mục này là mất khi cập nhật. Hai cách an toàn:
- Mẫu riêng của đơn vị: đừng sửa file gốc — mở mẫu, Save As sang thư mục dự án hoặc ổ dùng chung, rồi dùng bản đó. Các lệnh mẫu chỉ dùng để "lấy khung", không bắt bạn quay lại file gốc.
- Tiêu chuẩn TCVN tự thêm: add-in đọc theo lớp —
Library\TCVN-Standards.jsonlà bản gốc,%APPDATA%\DVDAddin\TCVN-Custom.jsonlà lớp phủ của bạn. Hãy thêm tiêu chuẩn riêng vào lớp phủ: nó nằm ngoài thư mục cài nên bộ cài không đụng tới. Cửa sổ quản lý danh mục tiêu chuẩn (mở từ Kế hoạch TN) có nút Sao lưu ghi một bản sao kèm dấu thời gian ra%APPDATA%\DVDAddin\Backups\TCVN-Custom_yyyy-MM-dd_HHmm.json; add-in cũng tự tạo một bản như vậy ngay trước khi bạn dùng Khôi phục / Nhập đè lên, nên lỡ khôi phục nhầm file vẫn quay lại được.
Gỡ cài đặt xoá sạch C:\DVDAddin
Trình gỡ cài đặt xoá cả thư mục cài, kể cả file bạn tự đặt vào đó. Đã chỉnh biểu mẫu trong C:\DVDAddin\Template\ cho hợp với đơn vị mình thì phải sao lưu ra chỗ khác trước khi gỡ. Registry và license thì không bị xoá theo.
Dữ liệu gốc dùng chung cho nhóm
Bảng giá, danh mục công tác, định mức riêng của đơn vị là workbook Excel bình thường — add-in không có cơ chế đăng ký nào cho chúng. Hãy quản lý như mọi tài liệu khác:
\\Cloud\DA_MasterData\
├── BangGia_2026_v3.xlsx
├── BangGia_2026.xlsx ← bản "hiện hành", luôn trỏ tới version mới nhất
└── DanhMucCongTac.xlsxWorkbook con tham chiếu tới tên file không có hậu tố phiên bản để tự lấy bản mới. Khi cập nhật: lưu một bản có số phiên bản, rồi ghi đè lên bản "hiện hành".
Kết nối Server không có bản sao trên máy chủ
Kết nối Server đồng bộ ô và định dạng theo thời gian thực giữa các máy — qua mạng LAN hoặc qua broker MQTT. Nó không lưu dữ liệu ở đâu cả: không có cơ sở dữ liệu phía máy chủ, không có bản chụp nào trên đĩa.
Nghĩa là: workbook trên từng máy chính là bản sao lưu duy nhất. Kết thúc phiên làm việc nhóm, mỗi người phải tự Ctrl+S. Đã ngắt kết nối mà chưa lưu là mất.
Lớp 4 — Script tự viết và chuỗi thao tác
Macro VBA
Workbook có chứa VBA → sao lưu workbook là đã sao lưu luôn macro.
Muốn tách macro ra riêng: Excel → Developer → Visual Basic → File → Export File → lưu file .bas / .cls vào thư mục Scripts\.
Chuỗi Auto Click
Auto Click không lưu ra file riêng. Chuỗi cú click được ghi thành bảng ngay trên sheet đang hoạt động, gồm năm cột STT / Timestamp (ms) / X / Y / Wait (ms).
Muốn giữ lại một chuỗi hay dùng: để nguyên sheet đó trong workbook rồi lưu workbook, hoặc chép bảng sang một workbook riêng làm "thư viện chuỗi thao tác". Nhớ ghi chú kèm độ phân giải màn hình và vị trí cửa sổ lúc ghi — chuỗi phát lại theo tọa độ tuyệt đối, đổi màn hình là bấm sai chỗ.
Script PowerShell tự động hóa
Đặt các script ở một thư mục chung và quản lý bằng Git:
cd //Cloud/DVDAddin_Master/Scripts
git init
git add .
git commit -m "Initial backup"Mỗi lần sửa script → git commit → giữ được lịch sử thay đổi.
Tình huống khắc phục sự cố
Tình huống 1: Máy hỏng — cài lại Windows
Các bước khôi phục:
- Cài Windows + Excel.
- Cài DVDAddin (bộ cài mới nhất, lấy bằng lệnh Tải Tool trên máy khác hoặc từ trang tải).
- Đóng hoàn toàn Excel rồi mới chạy bộ cài — Excel đang mở sẽ khoá file
.xllvà bộ cài báo lỗi. - Chạy script khôi phục ở trên:
settings.regtrả lại toàn bộ Tùy chọn, API key và phím tắt;lang.txttrả lại ngôn ngữ giao diện;TCVN-Custom.jsontrả lại danh mục tiêu chuẩn tự thêm. - Mở Excel → tab DVD Addin → Bản quyền → đăng nhập lại bằng email/mật khẩu (license.dat cũ không dùng được trên máy mới).
- Khôi phục workbook từ đám mây / file zip lưu trữ.
Thời gian khôi phục: 30-60 phút nếu có bản sao lưu tốt.
Tình huống 2: Mã độc tống tiền mã hoá file
Trường hợp xấu nhất:
- File workbook bị mã hoá → mất hết dữ liệu nếu không có bản sao.
- Bản sao lưu nằm trên cùng máy cũng có thể bị mã hoá theo.
Cách giảm thiểu:
- Sao lưu ở nơi khác / trên đám mây (mã độc không với tới được).
- Version History của OneDrive có thể khôi phục phiên bản trước lúc bị mã hoá.
Tình huống 3: Cập nhật Excel làm add-in lỗi
Cách xử lý:
- Tạm tắt DVDAddin: File → Options → Add-ins → Manage: Excel Add-ins → Go → bỏ tick DVDAddin.
- Chờ bản vá của add-in, hoặc quay về bản Excel trước đó nếu môi trường cho phép.
- Trong lúc đó workbook vẫn mở được, chỉ thiếu tính năng của add-in.
Đã sửa mà "vẫn còn lỗi"?
Excel giữ mã của add-in trong bộ nhớ cho đến khi tắt hẳn. Cài đè bản mới trong lúc Excel đang chạy thì bản cũ vẫn tiếp tục chạy. Đóng tất cả cửa sổ Excel (kiểm tra Task Manager không còn EXCEL.EXE), cài, rồi mở lại.
Tình huống 4: Lỡ chạy nhầm một lệnh ghi hàng loạt
Không hoàn tác được. Có ba đường thoát, theo thứ tự:
- Đóng workbook không lưu → mở lại bản trên đĩa.
- OneDrive/SharePoint → Version history → khôi phục bản trước.
- File zip lưu trữ hằng tuần.
Nếu cả ba đều không có thì không còn cách nào — đó là lý do mục này nằm trong trang sao lưu.
Tự động hóa sao lưu
Script sao lưu trọn gói
# backup-all.ps1
$ErrorActionPreference = 'Continue'
$today = Get-Date -Format 'yyyy-MM-dd'
$root = "D:\Backup\$today"
New-Item -ItemType Directory -Path $root -Force | Out-Null
# 1. Trạng thái add-in
New-Item -ItemType Directory -Path "$root\DVDAddin" -Force | Out-Null
Copy-Item "$env:LOCALAPPDATA\DVDAddin\*" "$root\DVDAddin" -Recurse -Force -ErrorAction SilentlyContinue
Copy-Item "$env:APPDATA\DVDAddin\*" "$root\DVDAddin" -Recurse -Force -ErrorAction SilentlyContinue
reg export "HKCU\Software\DVD\DVDAddin" "$root\DVDAddin\settings.reg" /y
# 2. Workbook dự án
if (Test-Path 'D:\Projects') {
Compress-Archive -Path 'D:\Projects\*' -DestinationPath "$root\projects.zip" -Force
}
# 3. Master data + scripts dùng chung
if (Test-Path '\\Cloud\DA_MasterData') {
Compress-Archive -Path '\\Cloud\DA_MasterData\*' -DestinationPath "$root\master.zip" -Force
}
# 4. Dọn backup cũ (giữ 8 tuần)
Get-ChildItem 'D:\Backup' -Directory |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-56) } |
Remove-Item -Recurse -Force
Write-Output "Backup done at $root"Đặt lịch chạy
Task Scheduler:
- Trigger (lịch kích hoạt): hằng tuần, Chủ nhật lúc 23:00.
- Action (việc cần chạy):
PowerShell -File D:\Scripts\backup-all.ps1. - Settings (thiết lập): chọn "Run whether user logged on or not" để chạy cả khi không ai đăng nhập.
Báo tin khi sao lưu thất bại
try {
# backup logic
} catch {
Send-MailMessage -To 'admin@company.com' -Subject 'Backup FAILED' `
-Body $_.Exception.Message -SmtpServer 'smtp.company.com'
}Danh mục kiểm tra khi khôi phục
Khi dựng lại máy:
- [ ] Cài Windows + Excel.
- [ ] Đóng hết Excel, rồi cài DVDAddin.
- [ ] Chép lại
%LocalAppData%\DVDAddin\và%APPDATA%\DVDAddin\. - [ ]
reg import settings.reg. - [ ] Mở Excel → thấy đủ hai tab: DVD Addin và DVD Cons.
- [ ] Bản quyền (DVD Addin › Thông tin) → đăng nhập lại → trạng thái hiện đúng gói bản quyền (STANDARD hay PRO).
- [ ] Thử một lệnh không cần license: Xoá space thừa (DVD Addin › Văn bản và Số › Xử lý văn bản).
- [ ] Thử một lệnh cần license: Nhập nhanh hoặc In hàng loạt.
- [ ] Thử một lệnh cần API key: mở Dịch ngôn ngữ rồi chọn dịch vụ Gemini hoặc ChatGPT (đường Google không cần key nên không kiểm tra được) — nếu báo thiếu key nghĩa là
settings.regchưa được nhập. - [ ] Khôi phục workbook từ đám mây / file lưu trữ.
→ Xong: máy mới giống hệt máy cũ.
Liên quan
- Nguyên tắc làm việc hiệu quả — các mẹo chung.
- Tùy biến nâng cao → Cây registry đầy đủ — chi tiết từng khóa.
- Bảo mật & quyền riêng tư — vì sao file
settings.reglà dữ liệu nhạy cảm. - Bản quyền — chuyển license sang máy khác.
- Kết nối Server — vì sao phiên làm việc nhóm không tự lưu.
- Chuyển từ .xlam sang .xll — chuyển từ bản xlam sang bản xll.