VBA : Điều chỉnh lại các cột trong bảng của tài liệu word để làm sách song ngữ.
Sub AdjustThreeColumnTables()
' Bỏ qua lỗi và tiếp tục thực thi nếu có bảng không hợp lệ
On Error Resume Next
' Khai báo các biến sẽ được sử dụng
Dim tbl As Table
Dim pageWidth As Single
Dim remainingWidth As Single
Dim col1and3Width As Single
Dim cell As Cell
' Xác định độ rộng có thể sử dụng của trang giấy (chiều rộng trang trừ đi lề trái và phải)
With ActiveDocument.PageSetup
pageWidth = .PageWidth - .LeftMargin - .RightMargin
End With
' Bắt đầu vòng lặp qua từng bảng trong tài liệu
For Each tbl In ActiveDocument.Tables
' Chỉ thực hiện trên các bảng có chính xác 3 cột
If tbl.Columns.Count = 3 Then
' Đảm bảo bảng không tự động điều chỉnh kích thước
tbl.AllowAutoFit = False
' Thiết lập loại độ rộng ưa thích thành điểm (points) và đặt độ rộng của bảng sao cho vừa khít trang
tbl.PreferredWidthType = wdPreferredWidthPoints
tbl.PreferredWidth = pageWidth
' Cho phép cột giữa tự động điều chỉnh theo nội dung để có chiều rộng nhỏ nhất có thể
tbl.Columns(2).AutoFit
' Tính toán độ rộng còn lại cho hai cột kia
remainingWidth = pageWidth - tbl.Columns(2).Width
col1and3Width = remainingWidth / 2
' Gán độ rộng đã tính cho cột 1 và cột 3
tbl.Columns(1).Width = col1and3Width
tbl.Columns(3).Width = col1and3Width
' Lặp qua từng ô trong cột đầu tiên
For Each cell In tbl.Columns(1).Cells
' Căn đều (justify) nội dung văn bản trong ô
cell.Range.ParagraphFormat.Alignment = wdAlignParagraphJustify
' Thiết lập để văn bản vừa khít với kích thước ô
cell.FitText = True
Next cell
' Lặp qua từng ô trong cột thứ ba
For Each cell In tbl.Columns(3).Cells
' Căn đều (justify) nội dung văn bản trong ô
cell.Range.ParagraphFormat.Alignment = wdAlignParagraphJustify
' Thiết lập để văn bản vừa khít với kích thước ô
cell.FitText = True
Next cell
End If
Next tbl
' Thông báo cho người dùng khi quá trình hoàn tất
MsgBox "Đã hoàn tất việc điều chỉnh các bảng có 3 cột!", vbInformation
End Sub
Không có nhận xét nào:
Đăng nhận xét