Dùng replace cho các chuỗi ký tự như thế nào? (1 người xem)

  • Thread starter Thread starter linhlan
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

linhlan

Thành viên chính thức
Tham gia
9/8/10
Bài viết
71
Được thích
204
Mình đang gặp khó khăn khi muốn xoá 1 loạt các dòng có chuỗi ký tự như sau: (Thay bởi ký tự rỗng) (Tài liệu được biên soạn trong Word)
<CellCellID="C_1" CellID2="C_2" Value="
<CellCellID="C_2" CellID2="C_2" Value="
<CellCellID="C_3" CellID2="C_2" Value="
<CellCellID="C_4" CellID2="C_2" Value="
<CellCellID="C_5" CellID2="C_2" Value="
<CellCellID="C_6" CellID2="C_2" Value="
<CellCellID="C_7" CellID2="C_2" Value="
.....

đến
<CellCellID="C_3540" CellID2="C_2" Value="

Trong tài liệu này chỉ khác nhau có "C_1" đến "C_3540".
Nếu dùng replace
<CellCellID="C_1" CellID2="C_2" Value lần lượt đến <CellCellID="C_3540" CellID2="C_2" Value thì quá lâu.
Các bạn có cách nào dùng replace để thay 1 loạt chuỗi ký tự này. Mình đang sử dụng office 2003. Xin cám ơn

i6112_replace.png

 
Lần chỉnh sửa cuối:
Mình đang gặp khó khăn khi muốn xoá 1 loạt các dòng có chuỗi ký tự như sau: (Thay bởi ký tự rỗng) (Tài liệu được biên soạn trong Word)
<CellCellID="C_1" CellID2="C_2" Value="
<CellCellID="C_2" CellID2="C_2" Value="
<CellCellID="C_3" CellID2="C_2" Value="
<CellCellID="C_4" CellID2="C_2" Value="
<CellCellID="C_5" CellID2="C_2" Value="
<CellCellID="C_6" CellID2="C_2" Value="
<CellCellID="C_7" CellID2="C_2" Value="
.....

đến
<CellCellID="C_3540" CellID2="C_2" Value="

Trong tài liệu này chỉ khác nhau có "C_1" đến "C_3540".
Nếu dùng replace
<CellCellID="C_1" CellID2="C_2" Value lần lượt đến <CellCellID="C_3540" CellID2="C_2" Value thì quá lâu.
Các bạn có cách nào dùng replace để thay 1 loạt chuỗi ký tự này. Mình đang sử dụng office 2003. Xin cám ơn
Dùng Replace với từ khóa này <CellCellID="C_*" CellID2="C_2" Value="

Không biết dữ liệu còn lại là những gì nên có thể cách này sẽ xóa đi các dữ liệu khác không thuộc diện xóa

Nếu có một file giả lập một cách tổng quát có lẽ sẽ có cách cụ thể hơn.
 
mình đang gặp khó khăn khi muốn xoá 1 loạt các dòng có chuỗi ký tự như sau: (thay bởi ký tự rỗng) (tài liệu được biên soạn trong word)
<cellcellid="c_1" cellid2="c_2" value="
<cellcellid="c_2" cellid2="c_2" value="
<cellcellid="c_3" cellid2="c_2" value="
<cellcellid="c_4" cellid2="c_2" value="
<cellcellid="c_5" cellid2="c_2" value="
<cellcellid="c_6" cellid2="c_2" value="
<cellcellid="c_7" cellid2="c_2" value="
.....

đến
<cellcellid="c_3540" cellid2="c_2" value="

trong tài liệu này chỉ khác nhau có "c_1" đến "c_3540".
Nếu dùng replace
<cellcellid="c_1" cellid2="c_2" value lần lượt đến <cellcellid="c_3540" cellid2="c_2" value thì quá lâu.
các bạn có cách nào dùng replace để thay 1 loạt chuỗi ký tự này. Mình đang sử dụng office 2003. Xin cám ơn

i6112_replace.png

neu la file word thì tôi không biêt , nhưng nêu là excel chắc có thể được nhưng bạn thư gởi file là chắc ăn nhất
 
<CellCellID="C_*" CellID2="C_2" Value=". Không được bạn ơi.

 

File đính kèm

<CellCellID="C_*" CellID2="C_2" Value=". Không được bạn ơi.

- Bấm Alt + F11 và chèn 1 module
- Chèn code này vào:
PHP:
Sub ReplaceText()
  Dim i As Long
  For i = 4 To 286
    Selection.Find.Text = "<Cell CellID=""C_" & i & """ "
    Selection.Find.Execute Replace:=wdReplaceAll
  Next
End Sub
- Bấm Ctrl + A để chọn hết dữ liệu rồi Alt + F8, chọn sub ReplaceText và bấm Run
- Chở xem kết quả
 
Vâng, cơ bản là tôi muốn còn lại như file bạn vừa làm. Mong được chỉ giáo tuyệt chiêu để tôi học thêm vì còn sử dụng cho nhiều công việc khác
 
<CellCellID="C_*" CellID2="C_2" Value=". Không được bạn ơi.

Tôi cứ tưởng là trên Excel. Excel mới sử dụng ký tự đại diện được.

- Bấm Alt + F11 và chèn 1 module
- Chèn code này vào:
PHP:
Sub ReplaceText()
  Dim i As Long
  For i = 4 To 286
    Selection.Find.Text = "<Cell CellID=""C_" & i & """ "
    Selection.Find.Execute Replace:=wdReplaceAll
  Next
End Sub
- Bấm Ctrl + A để chọn hết dữ liệu rồi Alt + F8, chọn sub ReplaceText và bấm Run
- Chở xem kết quả
Tôi nghĩ không nên làm quá tắt như vậy. Nên có thêm dòng .Replacement.Text. Vì nếu trước đó người ta dùng Replace thì MS sẽ lưu lại chuỗi này.
PHP:
Sub GPE()
Dim i As Long
Selection.GoTo , , 1
For i = 1 To 100
    With Selection.Find
        .Text = "<Cell CellID=""C_" & i & """ CellID2=""C_2"" Value="""
        .Replacement.Text = ""
        .Execute Replace:=wdReplaceAll
    End With
Next
End Sub
 
Vâng, cơ bản là tôi muốn còn lại như file bạn vừa làm. Mong được chỉ giáo tuyệt chiêu để tôi học thêm vì còn sử dụng cho nhiều công việc khác
Xem file là biết copy sang Excel xử lý rồi copy lại Word rồi. Nhưng mà sau khi copy lại nó sẽ là một cái bảng.
 
- Bấm Alt + F11 và chèn 1 module
- Chèn code này vào:


PHP:
Sub ReplaceText()
  Dim i As Long
  For i = 4 To 286
    Selection.Find.Text = "<Cell CellID=""C_" & i & """ "
    Selection.Find.Execute Replace:=wdReplaceAll
  Next
End Sub
- Bấm Ctrl + A để chọn hết dữ liệu rồi Alt + F8, chọn sub ReplaceText và bấm Run
- Chở xem kết quả

Thật hân hạnh được thọ giáo bài học của bạn, tiếc thay hơi chậm tiêu xin được hướng dẫn từng bước. Tôi cũng đã làm thứ tự như sau:

Bước 1: Tôi mở tập tin ra, dùng Alt + F11 và dán code của bạn đã share cho

i6115_tuan001.png



Bước 2: Tôi trở về tài liệu chính, dùng Ctrl +A và Alt + F8 thì tới đây tôi hơi bị bí, mong được chỉ giáo. Chân thành cám ơn bạn
i6116_tuan002.png
 
Thật hân hạnh được thọ giáo bài học của bạn, tiếc thay hơi chậm tiêu xin được hướng dẫn từng bước. Tôi cũng đã làm thứ tự như sau:

Bước 1: Tôi mở tập tin ra, dùng Alt + F11 và dán code của bạn đã share cho

Bước 2: Tôi trở về tài liệu chính, dùng Ctrl +A và Alt + F8 thì tới đây tôi hơi bị bí, mong được chỉ giáo. Chân thành cám ơn bạn
Hình như bạn copy code của tôi bị thiếu thì phải (Thiếu dòng đầu)
Code của tôi là:
PHP:
Sub ReplaceText()
  Dim i As Long
  For i = 4 To 286
    Selection.Find.Text = "<Cell CellID=""C_" & i & """ "
    Selection.Find.Execute Replace:=wdReplaceAll
  Next
End Sub
cơ mà
Code thiếu nên khi Alt + F8 sẽ chẳng thấy gì
Tuy nhiên, cũng như ý kiến của bạn huuthang, ta nên sửa code vầy sẽ chắc ăn hơn
PHP:
Sub ReplaceText()
  Dim i As Long
  For i = 1 To 3540
    With Selection.Find
      .Text = "<Cell CellID=""C_" & i & """ CellID2=""C_2"" Value="""
      .Replacement.Text = ""
      .Execute Replace:=wdReplaceAll
    End With
  Next
End Sub
Thử lại xem!
 
Lần chỉnh sửa cuối:
Hình như bạn copy code của tôi bị thiếu thì phải (Thiếu dòng đầu)
Code của tôi là:
PHP:
Sub ReplaceText()
  Dim i As Long
  For i = 4 To 286
    Selection.Find.Text = "<Cell CellID=""C_" & i & """ "
    Selection.Find.Execute Replace:=wdReplaceAll
  Next
End Sub
cơ mà
Code thiếu nên khi Alt + F8 sẽ chẳng thấy gì
Tuy nhiên, cũng như ý kiến của bạn huuthang, ta nên sửa code vầy sẽ chắc ăn hơn
PHP:
Sub ReplaceText()
  Dim i As Long
  For i = 1 To 3540
    With Selection.Find
      .Text = "<Cell CellID=""C_" & i & """ CellID2=""C_2"" Value="""
      .Replacement.Text = ""
      .Execute Replace:=wdReplaceAll
    End With
  Next
End Sub
Thử lại xem!

Trên cả tuyệt vời bạn ơi, xử lý rất tốt

i6120_tuan003.png



Bạn có thể chia sẻ giải thích thêm code dưới đây dùm tôi không để tôi có díp ứng dụng

Selection.Find.Text = "<Cell CellID=""C_" & i & """ "
Đoạn trước đây tôi cần thay thế:
<CellCellID="C_4" CellID2="C_2" Value="

Tôi muốn thay hẳn đoạn chuỗi ký tự sau (theo bài trên) Vui lòng bổ sung đoạn code cho tôi

<CellCellID="C_4" CellID2="C_2" Value="2###



Cám ơn hai bạn Nguyễn Hữu Thắng và Le duy Thuong đã nhanh giúp đỡ cho tôi. Mong hai bạn đừng giận nhau, là người nhà cả mà

 
Lần chỉnh sửa cuối:
Trên cả tuyệt vời bạn ơi, xử lý rất tốt
Bạn có thể chia sẻ giải thích thêm code dưới đây dùm tôi không để tôi có díp ứng dụng
Nói thật là tôi chẳng biết tí gì về Word cả ---> Chỉ là tôi thử record macro xem khi ta dùng Find and Replace để thay thế 1 chuổi thì code viết thế nào, từ đó vào chỉnh sửa lại code thôi!
Mà bạn có biết record macro không nhỉ? (menu Tools\Macro\Record New Macro)...
 
Nói thật là tôi chẳng biết tí gì về Word cả ---> Chỉ là tôi thử record macro xem khi ta dùng Find and Replace để thay thế 1 chuổi thì code viết thế nào, từ đó vào chỉnh sửa lại code thôi!
Mà bạn có biết record macro không nhỉ? (menu Tools\Macro\Record New Macro)...

Thú thật lĩnh vực này tôi không am hiểu, 1/2 chữ macro cũng dốt đặc. Chính vì thế, tôi nhờ tình cảm của các bạn để chia sẻ cho tôi nhờ, học hỏi thêm để công việc được thuận lợi

Trên cả tuyệt vời bạn ơi, xử lý rất tốt




Bạn có thể chia sẻ giải thích thêm code dưới đây dùm tôi không để tôi có díp ứng dụng

Selection.Find.Text = "<Cell CellID=""C_" & i & """ "
Đoạn trước đây tôi cần thay thế:
<CellCellID="C_4" CellID2="C_2" Value="

Tôi muốn thay hẳn đoạn chuỗi ký tự sau (theo bài trên)

Vui lòng bổ sung đoạn code cho tôi

<CellCellID="C_4" CellID2="C_2" Value="2###
 
Thú thật lĩnh vực này tôi không am hiểu, 1/2 chữ macro cũng dốt đặc. Chính vì thế, tôi nhờ tình cảm của các bạn để chia sẻ cho tôi nhờ, học hỏi thêm để công việc được thuận lợi
Bạn cứ thường xuyên tham gia diễn đàn này đi ---> Bảo đảm khoảng 1 năm sau bạn sẽ thành cao thủ về lập trình thôi (chính là macro ấy)
Mà nói về lập trình, về code hay macro thì Word và Excel cũng hao hao giống nhau đấy!
 
Đoạn trước đây tôi cần thay thế:
<CellCellID="C_4" CellID2="C_2" Value="

Tôi muốn thay hẳn đoạn chuỗi ký tự sau (theo bài trên) Vui lòng bổ sung đoạn code cho tôi

<CellCellID="C_4" CellID2="C_2" Value="2###



Chữ to chưa hẳn là dễ nhìn đâu.
PHP:
Sub GPE()
Dim i As Long
Selection.GoTo , , 1
For i = 1 To 100
    With Selection.Find
        .Text = "<Cell CellID=""C_" & i & """ CellID2=""C_2"" Value=""" & (i -2) & "###"
        .Replacement.Text = ""
        .Execute Replace:=wdReplaceAll
    End With
Next
End Sub
 
PHP:
Sub GPE()
Dim i As Long
Selection.GoTo , , 1
For i = 1 To 100
    With Selection.Find
        .Text = "<Cell CellID=""C_" & i & """ CellID2=""C_2"" Value=""" & (i -2) & "###"
        .Replacement.Text = ""
        .Execute Replace:=wdReplaceAll
    End With
Next
End Sub

Chữ to chưa hẳn là dễ nhìn đâu.
Trước hết do tôi lớn tuổi nên mắt yếu bạn thông cảm cho.

Bạn xem lại đoạn code của bạn có gì không ổn sau khi mình cốp đoạn mã của bạn chỉ dạy cho

i6125_thang.png
 
Trước hết do tôi lớn tuổi nên mắt yếu bạn thông cảm cho.

Bạn xem lại đoạn code của bạn có gì không ổn sau khi mình cốp đoạn mã của bạn chỉ dạy cho

i6125_thang.png
Hình như là chưa Enable Macro. Bạn kiểm tra lại thử xem.
 
Tôi có thấy chỗ nào enable đâu? Tôi đang dùng word bạn à
 
Tôi có thấy chỗ nào enable đâu? Tôi đang dùng word bạn à
Word thì cũng phải Enable chứ. Bạn làm theo như thế này có được không:
Mở file bạn lên
Nhấn Ctrl + F11
Nhấn Ctrl + R
Nhìn bên trái sẽ có cửa sổ Project
Click chuột phải vào chữ Normal chọn Insert Module
Copy code dán vào khung soạn thảo bên phải
Nhấn Alt + q để quay lại cửa sổ Word
Nhấn Alt + F8 để mở cửa sổ Macro
Chạy Code GPE (hoặc Normal.Module1.GPE)
 
Word thì cũng phải Enable chứ. Bạn làm theo như thế này có được không:
Mở file bạn lên
Nhấn Ctrl + F11
Nhấn Ctrl + R
Nhìn bên trái sẽ có cửa sổ Project
Click chuột phải vào chữ Normal chọn Insert Module
Copy code dán vào khung soạn thảo bên phải
Nhấn Alt + q để quay lại cửa sổ Word
Nhấn Alt + F8 để mở cửa sổ Macro
Chạy Code GPE (hoặc Normal.Module1.GPE)

Khó hiểu quá, mở file lên
Nhấn Ctrl + F11
Nhấn Ctrl + R -----> Đến đây cái nội dung của file lại canh lề bên phải cả bạn ơi

Đến 2 bước này thấy thua, không làm được gì cả nên chưa tiếp các bước còn lại
Đừng vội trách tôi do tôi quá chậm tiêu. Nếu được thử chụp màn hình gởi lên xem chứ thấy rối rồi đó bạn Thắng ơi
 
Khó hiểu quá, mở file lên
Nhấn Ctrl + F11
Nhấn Ctrl + R -----> Đến đây cái nội dung của file lại canh lề bên phải cả bạn ơi

Đến 2 bước này thấy thua, không làm được gì cả nên chưa tiếp các bước còn lại
Đừng vội trách tôi do tôi quá chậm tiêu. Nếu được thử chụp màn hình gởi lên xem chứ thấy rối rồi đó bạn Thắng ơi
Tôi xin lỗi. Chỗ bước 2 là Alt + F11 chứ không phải Ctrl + F11.
Bạn dùng Office 2003 hay 2007?
 
ndu96081631 đã viết:
Chào bạn!
Cả Word và Excel đều như nhau, muốn chạy được macro thì phần cài đặt Security của nó phải được đặt ở mức Medium hoặc Low
Cách thiết lập này có khác nhau tùy theo version Office ---> Không biết bạn đang dùng Office nào? 2003? 2007 hay 2010?
Riêng với Word 2003, bạn chỉ cần:
- Đóng hết các file Word
- Khởi động Word, vào menu Tools\Macro\Security và check vào mục "Medium.... " rồi OK
- Đóng Word
- Khởi động file của bạn, sẽ có 1 cảnh báo xuất hiện, bấm nút Enable Macros
---------------------
Với Word 2007 thì có khác:
- Đóng hết các file Word
- Khởi động Word, bấm nút Office Button (góc trái trên cùng) rồi chọn Word Options ---> Chọn mục Trust Center, nhìn sang phải, bấm Trust Center Settings và check vào mục "Disable All Macros with notification" rồi OK
- Thoát Word
- Khởi động lại file của bạn, nếu có cảnh báo hãy bấm Yes
- Ngoài ra, trên thanh công cụ sẽ xuất hiện 1 Tool mới có tên là "Security Warning" ---> Bấm nút Options và chọn "Enable this content"
-----------------------
Word 2010 gần tương tự như Word 2007
-----------------------
Vài hướng dẩn, hy vọng bạn thành công!

Chân thành cám ơn bạn ndu96081631 đã dành thời gian viết bài chia sẻ hướng dẫn cặn kẽ cho mình. Đã thực hiện thành công việc cài đặt Tools\Options\macro security\medium
Và đã ứng dụng các code của các bạn ndu96081631 và huuthang_bd

i6140_mr.-ndu.png


Một lần nữa tôi cũng không quên cám ơn tất cả các bạn (Mr. huuthang_bd) đã quan tâm topic này và đã giúp tôi thực hiện việc chuyển đổi 1 loạt chuỗi ký tự theo yêu cầu. Qua đây tôi hiểu thêm được về Word cũng có Macro
 

Bài viết mới nhất

Back
Top Bottom