Bỏ định dạng màu chữ và màu nền khi in trên Word

Liên hệ QC
Tham gia
17/9/12
Bài viết
1,343
Được thích
1,554
Giới tính
Nữ
Em có một vấn đề mà vẫn chưa tìm ra được lời giải mong các anh chị và mọi người giúp đỡ ạ
Trong khi sử dụng Word để soạn thảo thì có những đoạn em cần ghi chú lại hoặc thay màu chữ để tìm lại dễ hơn nên em gặp vấn đề khi in ra thì không được đẹp cho lắm nên em lại phải chỉnh lại bỏ màu và thay màu chữ in xong rồi chọn Don't Save. Em chưa tìm được cách loại bỏ màu nền và thay màu chữ về mặc định giống như dạng tuỳ chọn in Black and White trong Excel. Mong mọi người chỉ giáo thêm để em bổ sung kiến thức ạ. Em xin chân thành cảm ơn

1569395868319.png
 
Em có một vấn đề mà vẫn chưa tìm ra được lời giải mong các anh chị và mọi người giúp đỡ ạ
Trong khi sử dụng Word để soạn thảo thì có những đoạn em cần ghi chú lại hoặc thay màu chữ để tìm lại dễ hơn nên em gặp vấn đề khi in ra thì không được đẹp cho lắm nên em lại phải chỉnh lại bỏ màu và thay màu chữ in xong rồi chọn Don't Save. Em chưa tìm được cách loại bỏ màu nền và thay màu chữ về mặc định giống như dạng tuỳ chọn in Black and White trong Excel. Mong mọi người chỉ giáo thêm để em bổ sung kiến thức ạ. Em xin chân thành cảm ơn

View attachment 225624
Em thử chạy Code sau trong Word nhé( Nhớ quét chọn vùng chọn trước khi chạy Code)
PHP:
Sub Test()
  Selection.Font.Shading.Texture = wdTextureNone
  Selection.Shading.BackgroundPatternColor = wdColorWhite
  Selection.Shading.ForegroundPatternColor = wdColorWhite
  Selection.Range.HighlightColorIndex = wdNoHighlight
End Sub
 
Em thử chạy Code sau trong Word nhé( Nhớ quét chọn vùng chọn trước khi chạy Code)
PHP:
Sub Test()
  Selection.Font.Shading.Texture = wdTextureNone
  Selection.Shading.BackgroundPatternColor = wdColorWhite
  Selection.Shading.ForegroundPatternColor = wdColorWhite
  Selection.Range.HighlightColorIndex = wdNoHighlight
End Sub
Em cảm ơn anh ạ. Em có thể Ctrl A xử lý được cả file nhưng em cần lưu lại những chỉnh sửa đó ạ. Em chỉ cần mất màu nền và chữ thành màu đen khi in thôi ạ. Giống tuỳ chọn Black and White khi in của Excel ý ạ. Em cũng ít dùng Word nên cũng mai một nhiều ạ.
 
Em thử chạy Code sau trong Word nhé( Nhớ quét chọn vùng chọn trước khi chạy Code)
PHP:
Sub Test()
  Selection.Font.Shading.Texture = wdTextureNone
  Selection.Shading.BackgroundPatternColor = wdColorWhite
  Selection.Shading.ForegroundPatternColor = wdColorWhite
  Selection.Range.HighlightColorIndex = wdNoHighlight
End Sub
Em muốn sửa code trên để chạy từ File excel
Mục đích trên File excel/Mở File word/Lưu lại với tên khác/bỏ định dạng màu chữ và màu nền cho toàn bộ văn bản word trong file mới: nhờ các thầy và anh chị em trong GPE giúp sửa đoạn code em thử nhưng không chạy được
Em đang vướng ở 2 dòng bôi đậm ạ
Sub Bomauchu()

With CreateObject("Word.Application")

'''''mo file Word

.Visible = True

file = [c4]

Doc = .Documents.Open(ThisWorkbook.Path & "\Import" & "\" & file & ".doc")

.Documents(ThisWorkbook.Path & "\Import" & "\" & file & ".doc").SaveAs FileName:=ThisWorkbook.Path & "\Export" & "\" & [D4] & ".doc"

.Documents(ThisWorkbook.Path & "\Export" & "\" & [D4] &.doc").Selection.WholeStory.Font.Color = wdColorAutomatic

.Documents(ThisWorkbook.Path & "\Export" & "\" & [D4] &.doc").Selection.WholeStory. .HighlightColorIndex = wdNoHighlight



End With

End Sub

�+BT)@P�
 
Lần chỉnh sửa cuối:
Em muốn sửa code trên để chạy từ File excel
Mục đích trên File excel/Mở File word/Lưu lại với tên khác/bỏ định dạng màu chữ và màu nền cho toàn bộ văn bản word trong file mới: nhờ các thầy và anh chị em trong GPE giúp sửa đoạn code em thử nhưng không chạy được
Em đang vướng ở 2 dòng bôi đậm ạ
Sub Bomauchu()

With CreateObject("Word.Application")

'''''mo file Word

.Visible = True

file = [c4]

Doc = .Documents.Open(ThisWorkbook.Path & "\Import" & "\" & file & ".doc")

.Documents(ThisWorkbook.Path & "\Import" & "\" & file & ".doc").SaveAs FileName:=ThisWorkbook.Path & "\Export" & "\" & [D4] & ".doc"

.Documents(ThisWorkbook.Path & "\Export" & "\" & [D4] &.doc").Selection.WholeStory.Font.Color = wdColorAutomatic

.Documents(ThisWorkbook.Path & "\Export" & "\" & [D4] &.doc").Selection.WholeStory. .HighlightColorIndex = wdNoHighlight



End With

End Sub

�+BT)@P�
Selection là thuộc tính của "Word.Application" chứ không phải của Document.

Mà code kia ai viết cho bạn vậy?
 
Selection là thuộc tính của "Word.Application" chứ không phải của Document.

Mà code kia ai viết cho bạn vậy?
Selection là thuộc tính của "Word.Application" chứ không phải của Document.

Mà code kia ai viết cho bạn vậy?
Em copy code trên xuống thôi ạ, một phần là Recorde; Ý của em là chuyển tất cả văn bản trong word về không màu và không có màu nền, muốn sửa thuộc tính Selection của "Word.Application" sang của Document thì như nào vậy anh
 
Set Wapp = CreateObject("Word.Application") rồi dùng Wapp đó.
 
Em thử
Set Wapp = CreateObject("Word.Application")
Wapp.Selection.WholeStory.Font.Color = wdColorAutomatic vẫn không được anh ạ, Để tối em tạo lại File gửi anh chạy lại ạ
Bạn dùng code sau:
Rich (BB code):
Sub ExcelToWord_KhanhChi29()
     Dim i&, j&, TPara&, fPath$, fFile$
     Dim objRange, objTable
     Dim wDoc As Object, aWord As Object
    
     Application.ScreenUpdating = False
     'TAO FILE WORD
     Set aWord = CreateObject("Word.Application")
     fPath = "D:\TestGPE\"   'THAY BANG DUONG DAN TREN MAY CUA BAN
     fFile = "GMXYZ.docx"    'THAY BANG FILE TREN MAY CUA BAN
     Set wDoc = aWord.Documents.Open(fPath & fFile)
     aWord.Visible = True
     wDoc.SaveAs fPath & [D4]
     TPara = wDoc.Paragraphs.Count - 1
     For i = 1 To TPara
         Set objRange = wDoc.Paragraphs(i).Range
         objRange.Font.Color = wdColorAutomatic
         objRange.HighlightColorIndex = wdNoHighlight
     Next
     Application.ScreenUpdating = True
     aWord.Activate   'Xem ket qua
     Set wDoc = Nothing
     Set aWord = Nothing
End Sub
 
Em thử
Set Wapp = CreateObject("Word.Application")
Wapp.Selection.WholeStory.Font.Color = wdColorAutomatic vẫn không được anh ạ, Để tối em tạo lại File gửi anh chạy lại ạ
Nói thêm: Code ở bài trên, tôi cho duyệt qua tất cả các đoạn (paragraph) để thi hành lệnh. Tuy nhiên nếu vẫn muốn dùng câu lệnh có Selection thì bạn chọn vùng bằng tay trên file docx trước đó rồi chạy 2 câu lệnh sau:
Wapp.Selection.Font.ColorIndex = wdAuto
Wapp.Selection.Range.HighlightColorIndex = wdNoHighlight


Bên Excel phải viết như vậy thì mới chạy được.
 
Bạn dùng code sau:
Rich (BB code):
Sub ExcelToWord_KhanhChi29()
     Dim i&, j&, TPara&, fPath$, fFile$
     Dim objRange, objTable
     Dim wDoc As Object, aWord As Object
  
     Application.ScreenUpdating = False
     'TAO FILE WORD
     Set aWord = CreateObject("Word.Application")
     fPath = "D:\TestGPE\"   'THAY BANG DUONG DAN TREN MAY CUA BAN
     fFile = "GMXYZ.docx"    'THAY BANG FILE TREN MAY CUA BAN
     Set wDoc = aWord.Documents.Open(fPath & fFile)
     aWord.Visible = True
     wDoc.SaveAs fPath & [D4]
     TPara = wDoc.Paragraphs.Count - 1
     For i = 1 To TPara
         Set objRange = wDoc.Paragraphs(i).Range
         objRange.Font.Color = wdColorAutomatic
         objRange.HighlightColorIndex = wdNoHighlight
     Next
     Application.ScreenUpdating = True
     aWord.Activate   'Xem ket qua
     Set wDoc = Nothing
     Set aWord = Nothing
End Sub
Code chạy theo đúng ý em rồi ạ, đúng là em không muốn dùng bằng tay chọn bên word
Rich (BB code):
Sub ExcelToWord_KhanhChi29()
     Dim i&, j&, TPara&, fPath$, fFile$
     Dim objRange, objTable
     Dim wDoc As Object, aWord As Object
    
     Application.ScreenUpdating = False
     'TAO FILE WORD
     Set aWord = CreateObject("Word.Application")
     'fPath = "D:\TestGPE\"   'THAY BANG DUONG DAN TREN MAY CUA BAN
     'fFile = "GMXYZ.docx"    'THAY BANG FILE TREN MAY CUA BAN
     fPath = ThisWorkbook.Path & "\"
     fFile = [C4] & ".docx"
     Set wDoc = aWord.Documents.Open(fPath & fFile)
     aWord.Visible = True
     wDoc.SaveAs fPath & [D4]
     TPara = wDoc.Paragraphs.Count - 1
     For i = 1 To TPara
         Set objRange = wDoc.Paragraphs(i).Range
         objRange.Font.Color = wdColorAutomatic
         objRange.HighlightColorIndex = wdNoHighlight
     Next
     Application.ScreenUpdating = True
     aWord.Activate   'Xem ket qua
     Set wDoc = Nothing
     Set aWord = Nothing
End Sub
 

File đính kèm

  • Test doi mau.xls
    44.5 KB · Đọc: 5
  • Giay uy quyen Mau.docx
    22.5 KB · Đọc: 4
Lần chỉnh sửa cuối:
Rich (BB code):
Sub ExcelToWord_KhanhChi29()
     Dim i&, j&, TPara&, fPath$, fFile$
     Dim objRange, objTable
     Dim wDoc As Object, aWord As Object
   
     Application.ScreenUpdating = False
     'TAO FILE WORD
     Set aWord = CreateObject("Word.Application")
     'fPath = "D:\TestGPE\"   'THAY BANG DUONG DAN TREN MAY CUA BAN
     'fFile = "GMXYZ.docx"    'THAY BANG FILE TREN MAY CUA BAN
     fPath = ThisWorkbook.Path & "\"
     fFile = [C4] & ".docx"
     Set wDoc = aWord.Documents.Open(fPath & fFile)
     aWord.Visible = True
     wDoc.SaveAs fPath & [D4]
     TPara = wDoc.Paragraphs.Count - 1
     For i = 1 To TPara
         Set objRange = wDoc.Paragraphs(i).Range
         objRange.Font.Color = wdColorAutomatic
         objRange.HighlightColorIndex = wdNoHighlight
     Next
     Application.ScreenUpdating = True
     aWord.Activate   'Xem ket qua
     Set wDoc = Nothing
     Set aWord = Nothing
End Sub
Anh có cách gì không dùng For .. Next không ạ
 
Code chạy theo đúng ý em rồi ạ,
1. Trước hết là về cái sai của 2 bạn.

wdColorAutomatic và wdNoHighlight được dùng trong code nhưng không được định nghĩa, VBA không biết chúng là gì vì đây là hằng số của Word chứ không là hằng số của Excel. Do không có Option Explicit nên VBA cho đó là BIẾN không được khai báo tường minh. Do chúng không được thiết lập giá trị ở thời điểm chào buổi sáng nên
wdColorAutomatic = 0 và wdNoHighlight = 0.

Bên Word thì đúng là wdNoHighlight = 0, nhưng wdColorAutomatic <> 0. Tuy nhiên có wdColorBlack = 0
nên code chuyển mầu về ĐEN. Tức không về Auto mà là về ĐEN.

Như vậy là 2 bạn đã rất may mắn nhưng kiểu lập trình như thế sẽ có ngày sai. Đi đêm có ngày gặp ma.

VBA bên Excel không biết wdColorAutomatic và wdNoHighlight nó là gì nên phải định nghĩa.

2. Làm kiểu cần cù cũng được nhưng nếu là thay đổi cho toàn bộ document thì có thể làm trong một nốt nhạc.

Ngay sau dòng Sub ExcelToWord_KhanhChi29()

thêm 2 dòng
Mã:
Const wdColorAutomatic = -16777216
Const wdNoHighlight = 0

Thay
Mã:
TPara = wDoc.Paragraphs.Count - 1
For i = 1 To TPara
    Set objRange = wDoc.Paragraphs(i).Range
    objRange.Font.Color = wdColorAutomatic

    objRange.HighlightColorIndex = wdNoHighlight
Next

bằng

Mã:
With wDoc.Content
   .Font.Color = wdColorAutomatic
   .HighlightColorIndex = wdNoHighlight
End With

Anh có cách gì không dùng For .. Next không ạ
Thì cách tôi chỉ ra đấy - trong một nốt nhạc. :D
 
1. Trước hết là về cái sai của 2 bạn.

wdColorAutomatic và wdNoHighlight được dùng trong code nhưng không được định nghĩa, VBA không biết chúng là gì vì đây là hằng số của Word chứ không là hằng số của Excel. Do không có Option Explicit nên VBA cho đó là BIẾN không được khai báo tường minh. Do chúng không được thiết lập giá trị ở thời điểm chào buổi sáng nên
wdColorAutomatic = 0 và wdNoHighlight = 0.

Bên Word thì đúng là wdNoHighlight = 0, nhưng wdColorAutomatic <> 0. Tuy nhiên có wdColorBlack = 0
nên code chuyển mầu về ĐEN. Tức không về Auto mà là về ĐEN.

Như vậy là 2 bạn đã rất may mắn nhưng kiểu lập trình như thế sẽ có ngày sai. Đi đêm có ngày gặp ma.

VBA bên Excel không biết wdColorAutomatic và wdNoHighlight nó là gì nên phải định nghĩa.

2. Làm kiểu cần cù cũng được nhưng nếu là thay đổi cho toàn bộ document thì có thể làm trong một nốt nhạc.

Ngay sau dòng Sub ExcelToWord_KhanhChi29()

thêm 2 dòng
Mã:
Const wdColorAutomatic = -16777216
Const wdNoHighlight = 0

Thay
Mã:
TPara = wDoc.Paragraphs.Count - 1
For i = 1 To TPara
    Set objRange = wDoc.Paragraphs(i).Range
    objRange.Font.Color = wdColorAutomatic

    objRange.HighlightColorIndex = wdNoHighlight
Next

bằng

Mã:
With wDoc.Content
   .Font.Color = wdColorAutomatic
   .HighlightColorIndex = wdNoHighlight
End With
1. Việc dùng VBA Excel để điều khiển Word thì tôi không có tài liệu nào để học nên trước đây toàn mò mẫm để giải quyết yêu cầu thực tế của công việc. Người rành như bác nhìn vào thấy ngay là tay ngang. Bác có thể dẫn cho tôi link nào có tài liệu để học về việc này, tôi rất cảm ơn bác.
2. Con số -16777216 đó sao mà biết được bác? Chắc phải có trong tài liệu chính thống nào đó. À, chắc là dùng cửa sổ Immediate để print rồi.
 
1. Việc dùng VBA Excel để điều khiển Word thì tôi không có tài liệu nào để học nên trước đây toàn mò mẫm để giải quyết yêu cầu thực tế của công việc. Người rành như bác nhìn vào thấy ngay là tay ngang. Bác có thể dẫn cho tôi link nào có tài liệu để học về việc này, tôi rất cảm ơn bác.
Tôi luôn luôn đọc help thôi. Trong Excel hay Word thì tôi cứ VBE -> View -> Object Browser. Rồi đọc thôi. Có những đối tượng nào, thuộc tính và phương thức ra sao đều nhìn thấy hết. Nếu muốn tìm hiểu thêm thì giờ đây đã có google, biết các từ khóa từ Object Browser thì tìm đọc thôi.

Nói cho cùng thì lập trình hướng đối tượng là truy cập được tới các đối tượng cần thiết rồi thực hiện các thuộc tính và phương thức của các đối tượng đó. Thế thôi.

Vd. như trong chủ đề này phải truy cập được tới đối tượng Application - aWord, rồi thông qua thuộc tính của nó để truy cập tới đối tượng Documents, rồi gọi phương thức Open của nó để truy cập tới đối tượng Document - wDoc. Có đối tượng wDoc (document) rồi thì dùng thuộc tính Content của nó để truy cập tới đối tượng Range. Có đối tượng Range rồi thì thiết lập các thuộc tính Font.Color và HighlightColorIndex của nó thôi. Tóm lại là biểu đồ: truy cập tới đối tượng để thực hiện thuộc tính và phương thức của nó. Thế thôi.

2. Con số -16777216 đó sao mà biết được bác? Chắc phải có trong tài liệu chính thống nào đó. À, chắc là dùng cửa sổ Immediate để print rồi.

hangso.png
 
Lần chỉnh sửa cuối:
Tôi luôn luôn đọc help thôi. Trong Excel hay Word thì tôi cứ VBE -> View -> Object Browser. Rồi đọc thôi. Có những đối tượng nào, thuộc tính và phương thức ra sao đều nhìn thấy hết. Nếu muốn tìm hiểu thêm thì giờ đây đã có google, biết các từ khóa từ Object Browser thì tìm đọc thôi.

Nói cho cùng thì lập trình hướng đối tượng là truy cập được tới các đối tượng cần thiết rồi thực hiện các thuộc tính và phương thức của các đối tượng đó. Thế thôi.

Vd. như trong chủ đề này phải truy cập được tới đối tượng Application - aWord, rồi thông qua thuộc tính của nó để truy cập tới đối tượng Documents, rồi gọi phương thức Open của nó để truy cập tới đối tượng Document - wDoc. Có đối tượng wDoc (document) rồi thì dùng thuộc tính Content của nó để truy cập tới đối tượng Range. Có đối tượng Range rồi thì thiết lập các thuộc tính Font.Color và HighlightColorIndex của nó thôi. Tóm lại là biểu đồ: truy cập tới đối tượng để thực hiện thuộc tính và phương thức của nó. Thế thôi.



View attachment 275018
À ha! Lâu nay thực tình là tôi không để ý đến cửa sổ này, mặc dù có thấy đó. Đúng là thiếu sót lớn.

Cảm ơn bác!
 
Lần chỉnh sửa cuối:
Cảm ơn 2 anh, gặp được 2 anh là em may mắn lắm rồi, Do Record bên Word rồi copy sang excel lên có cái dòng:
objRange.Font.Color = wdColorAutomatic
objRange.HighlightColorIndex = wdNoHighlight
Đúng là chúng là hằng số của Word chứ không phải của Excel
 
Web KT
Back
Top Bottom