Căn Chỉnh trong Word

Liên hệ QC

vanvan9697

Thành viên chính thức
Tham gia
11/5/12
Bài viết
94
Được thích
5
Em có 1 File Word, Trong đó có nhiều trang đang để dọc và để ngang. Anh (Chị ) có thể giúp em đoạn Macro có thể căn chỉnh với những vẫn đề như sau với ạ !. Em cảm ơn anh ( chị ) nhiều ạ
Căn chỉnh
Khổ dọc: Left 1,2 inch Right 0,9 Top 0,6 Bottom 0,6 inch
Khổ Ngang: Top 1,2 inch Bottom 0,8 inch Left 1 inch Right 0,7 inch
Tiêu Đề
Thiết Lập tiêu Đề Cố định trong VBa để các khổ dọc và khổ ngang được tự động thiết lập với nhau
Khổ dọc: Tiêu Đề được làm như

Văn bản pháp luật
Ban hàng: Ngày ..


Bộ phát hành:
Hình Thức phát hành :

Khổ ngang Tiêu Đề được làm

Bảng Đánh Giá tác động ngành
Thông tin được cung cấp bởi :...


Văn bản pháp luật
Ban hàng: Ngày ..

 

File đính kèm

  • Thong tu.docx
    13.9 KB · Đọc: 6
Tôi không biết có ai giúp được bạn không nhưng rất có thể không ai hiểu bạn muốn gì. Nếu đúng thế thì có kêu 100 lần cũng thế thôi.
Tiêu Đề
Thiết Lập tiêu Đề Cố định trong VBa để các khổ dọc và khổ ngang được tự động thiết lập với nhau
Khổ dọc: Tiêu Đề được làm như

Văn bản pháp luật
Ban hàng: Ngày ..

Bộ phát hành:
Hình Thức phát hành :
Khổ ngang Tiêu Đề được làm


Bảng Đánh Giá tác động ngành
Thông tin được cung cấp bởi :...

Văn bản pháp luật
Ban hàng: Ngày ..

Tiêu Đề ở đây là cái gì? Header?

Tốt nhất là soạn thêm 1 tập tin nữa mà bạn thao tác bằng tay để có tập tin như mong đợi. Lúc đó người ta sẽ so sánh tập tin nguồn với tập tin mong đợi để hiểu bạn muốn gì.
 
Tôi không biết có ai giúp được bạn không nhưng rất có thể không ai hiểu bạn muốn gì. Nếu đúng thế thì có kêu 100 lần cũng thế thôi.


Tiêu Đề ở đây là cái gì? Header?

Tốt nhất là soạn thêm 1 tập tin nữa mà bạn thao tác bằng tay để có tập tin như mong đợi. Lúc đó người ta sẽ so sánh tập tin nguồn với tập tin mong đợi để hiểu bạn muốn gì.
Dạ nó là Header anh ạ !. Anh Giúp em với ạ
 

File đính kèm

  • Thong tu(1).docx
    17.6 KB · Đọc: 13
Dạ nó là Header anh ạ !. Anh Giúp em với ạ
1. Mở tập tin "Thông tu.docx" -> lưu lại thành "Thong tu.docm" -> Alt + F11 -> menu Insert -> Module -> dán code bên dưới vào module mới thêm.

2. Với trang dọc thì tôi không thiết lập TopMargin (giảm từ 1 xuống 0.6 inch) vì một đoạn văn bản bị đẩy sang trang mới sau khi tôi chèn header. Bạn có thể mở lại thiết lập để nghiên cứu xem có đúng thế không.

3. Bạn cho tập tin với các trang dọc, dọc, ngang, ngang. Không biết có nhiều trang rồi đan xen nhau không. Vd. dọc, dọc, ngang, ngang, dọc, ngang, dọc, ngang ... Tôi không thêm trang để test.

4. Được hay không tôi cũng kết thúc. Bạn nhờ thì nhờ thôi, đừng gọi tên ai. Ai biết và có thời gian, hứng thú thì giúp. Đừng ép cụ thể ai.

5. Code cho module
Mã:
Option Explicit

Sub SettingAndHeader()
Dim k As Long, start As Long, end_ As Long, PagesCount As Long, currPage As Long
Dim hf As HeaderFooter, sec As Section, bd As Border, tabl As Table, text As String, text2 As String, orient
    PagesCount = ThisDocument.Range.Information(wdNumberOfPagesInDocument)
    For k = 1 To PagesCount
'        nhay toi cac trang lien tiep
        Selection.GoTo wdGoToPage, wdGoToAbsolute, k
        With Selection.PageSetup
            If .Orientation = wdOrientPortrait Then
                .LeftMargin = Application.InchesToPoints(1.2)
'                .TopMargin = Application.InchesToPoints(0.6)
                .RightMargin = Application.InchesToPoints(0.9)
                .BottomMargin = Application.InchesToPoints(0.6)
            Else
                .LeftMargin = Application.InchesToPoints(1)
                .TopMargin = Application.InchesToPoints(1.2)
                .RightMargin = Application.InchesToPoints(0.7)
                .BottomMargin = Application.InchesToPoints(0.8)
            End If
        End With
    Next k
   
'    them section
    currPage = 1
    PagesCount = ThisDocument.Range.Information(wdNumberOfPagesInDocument)
    Do Until currPage >= PagesCount
        If currPage = PagesCount Then
            Selection.End = ActiveDocument.Range.End
            Selection.start = start
        Else
            Selection.GoTo wdGoToPage, wdGoToAbsolute, currPage + 1
            Selection.start = start
            end_ = Selection.End
        End If
'        xoa page break
        Selection.Find.Execute Findtext:="^m", ReplaceWith:=""
        Selection.End = end_
'        neu chua co section break thi them
        If Not Selection.Find.Execute("^b") Then
            Selection.start = Selection.End
            If Not Selection.Information(wdWithInTable) Then Selection.InsertBreak wdSectionBreakNextPage
        End If
        currPage = currPage + 1
        start = Selection.End
    Loop
    Selection.End = 0
'    them Header
    ThisDocument.PageSetup.DifferentFirstPageHeaderFooter = True
'
    Set hf = ThisDocument.Sections(1).Headers(wdHeaderFooterFirstPage)
    Set tabl = ThisDocument.Tables.Add(hf.Range, 1, 2, wdWord9TableBehavior, wdAutoFitFixed)
   
    For Each bd In tabl.Borders
        bd.LineStyle = wdLineStyleNone
    Next bd

    For k = 1 To ThisDocument.Sections.Count
        Set sec = ThisDocument.Sections(k)
       
        On Error Resume Next
        orient = sec.PageSetup.Orientation
        Do While Err.Number
            Err.Clear
            orient = sec.PageSetup.Orientation
        Loop
        On Error GoTo 0
       
        If orient = wdOrientPortrait Then
            text = "V" & ChrW(259) & "n b" & ChrW(7843) & "n ph" & ChrW(225) & "p lu" & ChrW(7853) & _
                            "t" & vbCr & "Ban h" & ChrW(224) & "nh: Ng" & ChrW(224) & "y " & ChrW(8230)

            text2 = "B" & ChrW(7897) & " ph" & ChrW(225) & "t h" & ChrW(224) & "nh:" & vbCr & "H" & _
                            ChrW(236) & "nh Th" & ChrW(7913) & "c ph" & ChrW(225) & "t h" & ChrW(224) & "nh:"
        Else
            text = "B" & ChrW(7843) & "ng " & ChrW(272) & ChrW(225) & "nh Gi" & ChrW(225) & " t" & ChrW(225) & _
                            "c " & ChrW(273) & ChrW(7897) & "ng ng" & ChrW(224) & "nh" & vbCr & "Th" & ChrW(244) & _
                        "ng tin " & ChrW(273) & ChrW(432) & ChrW(7907) & "c cung c" & ChrW(7845) & "p b" & ChrW(7903) & "i: ..."

            text2 = "V" & ChrW(259) & "n b" & ChrW(7843) & "n ph" & ChrW(225) & "p lu" & ChrW(7853) & "t" & _
                            vbCr & "Ban h" & ChrW(224) & "ng: Ng" & ChrW(224) & "y " & ChrW(8230)
        End If
        With sec
            Set hf = .Headers(wdHeaderFooterFirstPage)
            If k > 1 Then hf.LinkToPrevious = False
            Set tabl = hf.Range.Tables(1)
            tabl.Cell(1, 1).Range.text = text
            tabl.Cell(1, 2).Range.text = text2
           
            Set hf = .Headers(wdHeaderFooterPrimary)
            If k > 1 Then hf.LinkToPrevious = False
           
            On Error Resume Next
            Set tabl = hf.Range.Tables(1)
            If Err.Number Then
                Set hf = sec.Headers(wdHeaderFooterPrimary)
                Set tabl = ThisDocument.Tables.Add(hf.Range, 1, 2, wdWord9TableBehavior, wdAutoFitFixed)
                For Each bd In tabl.Borders
                    bd.LineStyle = wdLineStyleNone
                Next bd
            End If
            On Error GoTo 0
           
            tabl.Cell(1, 1).Range.text = text
            tabl.Cell(1, 2).Range.text = text2
        End With
    Next k
    k = InStrRev(ThisDocument.FullName, ".")
    text = Left(ThisDocument.FullName, k - 1) & "_result" & Mid(ThisDocument.FullName, k)
    ThisDocument.SaveAs2 text
End Sub
 
Lần chỉnh sửa cuối:
Dạ em cảm ơn anh ạ ! Em sẽ nghiên cứu thêm ạ
 
Lần chỉnh sửa cuối:
Hi anh @batman1 . Em Vân xin phép anh hỏi ngang chủ đề này được không ạ ?

Trong Trường hợp trên nếu như em Vân Sử dụng 1 file Excel ThietLapTrangin để điều khiển File word ( thongtu(1))với các thiết lập gồm có:
- Trang: 1-2 Được ghi chú theo dạng 1-2 có nghĩa là trang 1 đến trang 2, còn điền là 1,2 thì là từng trang: Trang 1 và trang 2
- Hướng giấy : được điền với 2 nội dung gồm có Dọc và Ngang
- Left, Right, Top, botton : ở đây là được thiết lập trang in với đơn vị tính là inch
- Header Trái: Được trình bày nội dung theo dạng 2 dòng sẽ hiển thị ở Word là 2 dòng: và hiển thị bên trái của header trang
- Header phải: Được trình bày nội dung theo dạng 2 dòng sẽ hiển thị ở Word là 2 dòng: và hiển thị bên phải của header trang
- Footer Trái : được trình bày nội dung theo dạng 1 Dòng sẽ hiển thị 1 dòng bên trái của trang word ( nếu 2 dòng sẽ hiển thị 2 dòng. hoặc trình bày là số trang sẽ hiển thị là số thứ tự của trang và Hiển trị bên trái của Footer trang bên trái
- Footer Phải: được trình bày là số trang ( sẽ hiển thị số thứ tự của trang) hoặc trình bày nội dung sẽ hiển thị nội dung bên phải của Footer Trang

Em Vân rất mong sự giúp đỡ của anh ( chị ) diễn đàn với vấn đề trên ạ !

Em Vân cảm ơn ( anh ) chị ạ !
 

File đính kèm

  • Thong tu(1).docx
    17.6 KB · Đọc: 4
  • ThietlapTrangin.xlsx
    9.4 KB · Đọc: 6
Web KT
Back
Top Bottom