Tách file word ra từng trang mỗi trang là 1 file (1 người xem)

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

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

boomxxl

Thành viên mới
Tham gia
1/4/10
Bài viết
16
Được thích
2
Mềnh gặp khó khăn.. mong được sự giúp đỡ của các bạn...

Vấn đề là mình có 1 file lớn.. nội dung trong đó là bản phân công công việc của từng người.. h mình muốn tách riêng nó ra mỗi trang thành 1 file


vd: 1 file.. nội dung công việc của 160 người... h mình muốn tách ra thành 160 file của 160 người đó...thì làm như thế nào: hic!!

mong được sự giúp đỡ sớm ...!$@!!
 
không ai giúp mềnh hết... hix....
 
cảm ơn bác nó đây... tách thành 3 file.. mò mãi chả biết cách...!$@!!
 

File đính kèm

cảm ơn bác nó đây... tách thành 3 file.. mò mãi chả biết cách...!$@!!
Bạn thử dùng Macro này xem.
PHP:
Sub SlpipFile()
Dim i As Long
Application.ScreenUpdating = False
ChangeFileOpenDirectory ActiveDocument.Path
Selection.Find.ClearFormatting
With Selection.Find
    .Text = "^k"
    .Forward = True
    .Wrap = wdFindContinue
End With
ActiveDocument.Range(0, 0).Select
Do Until Selection.Find.Execute = False
    i = i + 1
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveDown Unit:=wdParagraph, Count:=999999999, Extend:=wdExtend
    Selection.Cut
    Selection.TypeBackspace
    ActiveDocument.SaveAs "File_" & VBA.Format(i, "000") & ".doc", 0
    ActiveDocument.Close
    Documents.Add DocumentType:=wdNewBlankDocument
    Selection.Paste
    ActiveDocument.Range(0, 0).Select
Loop
    ActiveDocument.SaveAs "File_" & VBA.Format(i + 1, "000") & ".doc", 0
Application.ScreenUpdating = True
End Sub
 
hic dòm đoạn code mà ngán.... không có cách nào đơn giản hơn hả bác mềnh mù code lắm..
 
cảm ơn bác nó đây... tách thành 3 file.. mò mãi chả biết cách...!$@!!
Tại sao cái này không dùng 1 danh sách mẫu tên các người nhận, địa chỉ, người mất , ngày mất, số tiền.... Rồi dùng 1 Qđ mẫu sau đó trộn văn bản có hay hơn ko? Chỉ việc ngồi in 1 loáng xong ngay!
 
cái đó thì ở có 1 phòng riêng làm rồi... trộn xong mới ra mớ này nè.. h mềnh phải tách ra từng file để lưu cho từng người .. :(
 
Nguyên văn bởi boomxxl
hic dòm đoạn code mà ngán.... không có cách nào đơn giản hơn hả bác mềnh mù code lắm..
-Cách trả lời này dễ khiến cho người giúp bạn phiền lòng.
-Theo mình, không có cách nào đơn giản hợn là phải dùng code.
-Mình đã lấy code của bác huuthang_bd làm giúp bạn, bạn mở file bấm vào nút chia file.
-Nếu chưa thấy hiệu quả thì vào Tools/Macro/Security/Security level - Chọn mức low/OK -Đóng file và mở lại- Bấm vào nút Chia file.
-Chạy ngon rồi nhớ cám ơn bác huuthang_bd.
 

File đính kèm

ủa, sao em vừa ấn command thì tự file tạo ra các file khác tương ứng nhưng chưa kip save thì nó đã tự động đóng(ko lưu) tất cả lại

anh chị em xem giúp em đoạn code với, hay là có cần phải chú ý gì hơn khi dùng ko. các chế độ protect và macro em đều đã tắt hoặc đưa về low cả ùi
 
ủa, sao em vừa ấn command thì tự file tạo ra các file khác tương ứng nhưng chưa kip save thì nó đã tự động đóng(ko lưu) tất cả lại

anh chị em xem giúp em đoạn code với, hay là có cần phải chú ý gì hơn khi dùng ko. các chế độ protect và macro em đều đã tắt hoặc đưa về low cả ùi
Bạn đã kiểm tra folder chứa file chưa mà biết nó không lưu?
 
HIHI ừ bữa đó khi vào folder lưu thì đã thấy các file rùi, tuy nhiên còn vấn đề tự tắt hết các file sau khi làm xong thì chưa hiểu lắm
 
-Cách trả lời này dễ khiến cho người giúp bạn phiền lòng.
-Theo mình, không có cách nào đơn giản hợn là phải dùng code.
-Mình đã lấy code của bác huuthang_bd làm giúp bạn, bạn mở file bấm vào nút chia file.
-Nếu chưa thấy hiệu quả thì vào Tools/Macro/Security/Security level - Chọn mức low/OK -Đóng file và mở lại- Bấm vào nút Chia file.
-Chạy ngon rồi nhớ cám ơn bác huuthang_bd.

Tại mình không rành thiệt...
nhưng h mình muốn chạy thì như thế nào bác... code mù thiệt á..

cảm ơn bác ấy rất nhiều ấy chứ...
nhưng bây h làm sao đưa vào file word và chạy được bác?...

mềnh mò thêm 1 buổi thì add vào được nhưng vẫn chưa hiểu nhiều lắm... nhưng sao khi tách file ra nó mất chữ cuối... và nhảy thêm 1 trang trắng nữa...

vậy.. có file mình import ra rồi.. sao này muốn đưa vào văn bản khác thì nó cũng chay tương tự hay có thiết lập j phức tạp nữa hok... mò tý thấy thích mà ngại quá.. khó bà cố...

bạn có thể chỉ mình từng công đoạn đưa vào file word được không?

làm sao dời cái command buton ra chỗ khác, với lại muốn làm ở những văn bản khác thì ta phải thực hiện những công đoạn nào bác...
 
Lần chỉnh sửa cuối:
1. Muốn dời Command Button, bạn làm như sau:
-Vào View/Toolbars/Control ToolBox Bấm vào Design Mode ( nút ở góc trái trên)
-Kích phải vào CB chọn Format Control/Layout/ In front of text/OK
-Sau đó bạn có thể kéo CB đến vị trí bất kỳ.
2. Muốn sử dụng cho văn bản khác, bạn copy văn bản mới đó vào file, đặt file vào thư mục khác và bấm CB.
 
đã pm inbox bác... add nick mình với...tks bác

mà sẵn bác chỉ mềnh làm sao cho nó tách ra chỉ từng trang từng trang thoy....

cái chữ i trong code có nghĩa là 1 trang, rồi tách ra trang tiếp theo thì i+1 tức là trang 2, và 3 thì cứ thế.. phải hem..

sao đằng này nó tách ra 1 lần 2 trang... trang trắng không cần thiết....

nhưng sau này có văn bản cần tách 2 trang ra 1 file thì i lúc này có nghĩa là i = i+2 đúng không bác...-\\/.-\\/.
 
Lần chỉnh sửa cuối:
Mã:
Option Explicit
Sub SlpipFile()
Dim i As Long
Application.ScreenUpdating = False
ChangeFileOpenDirectory ActiveDocument.Path
Selection.Find.ClearFormatting
With Selection.Find
    .Text = "^k"
    .Forward = True
    .Wrap = wdFindContinue
End With
ActiveDocument.Range(0, 0).Select
Do Until Selection.Find.Execute = False
    i = i + 1
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveDown Unit:=wdParagraph, Count:=999999999, Extend:=wdExtend
    Selection.Cut
    ActiveDocument.SaveAs "File_" & VBA.Format(i, "000") & ".doc", 0
    Documents.Add DocumentType:=wdNewBlankDocument
    Selection.Paste
    ActiveDocument.Range(0, 0).Select
Loop
    ActiveDocument.SaveAs "File_" & VBA.Format(i + 1, "000") & ".doc", 0
Application.Quit
Application.ScreenUpdating = True
End Sub



mềnh cày đặt như vậy cho file này.. nhưng sao không hiểu nó không tách ra được nữa..
 

File đính kèm

hix bác nào giúp mình với... kiếm không ra tài liệu nào hướng dẫn vụ này hết..
 
giúp mềnh này

bạn xem file mềnh làm hộ bạn nha :

bấm tổ hợp 3 phím sau để thực hiện : Ctrl + Alt + /
(giữ phím Ctrl, rồi giữ tiếp phím Alt, rồi bấm phím / , phím / ở bên phần các phím chữ, không phải bên phần các phím số đâu nha bạn)

Muốn sử dụng lại, lần sau bạn cứ mở file này lên, xoá hết nội dung đi, copy toàn bộ nội dung từ file mới sang rồi lại nhấn 3 cái phím ở trên, thế thôi.

Bạn chú ý mỗi tháng nên tạo riêng một thư mục nha, như vậy dễ quản lý hơn.

bye bye mềnh nha mềnh --=0
 

File đính kèm

để mai mềnh làm thử h không ở chỗ làm... tks bác trước..

hix hay quá bác..... cảm ơn bác nhiều ra được cả cái tên luôn... mềnh choáng mấy s luôn....

mà sao mềnh chép cái khác vô thì nó báo lỗi... debug ra dòng này.....

"File_" & VBA.Format(i, "000") & "_" & Mid(Selection.Text, 10, Len(Selection.Text) - 11) & ".doc"

bác giúp luôn cho trót...

mà học cái này ở đâu vậy bác.. mềnh muốn học.. nó hay quá..
 
Lần chỉnh sửa cuối:
mấy bác quay lại giúp mềnh với..
làm sao chỉ cần tách trang ra.. tên thì đặt lại sao cũng được... 1 trang là thành 1 file là ok rồi...
 
mà sao mềnh chép cái khác vô thì nó báo lỗi... debug ra dòng này.....

"File_" & VBA.Format(i, "000") & "_" & Mid(Selection.Text, 10, Len(Selection.Text) - 11) & ".doc"

bác giúp luôn cho trót...
Theo mình nghĩ lỗi này do trùng tên file, sau khi chép nội dung mới vào file này, bạn phải Save as nó vào một thư mục mới để tránh tình trạng trùng tên file, nếu vẫn không được, bạn vui lòng post file cùng dữ liệu bị lỗi lên đây, mình sẽ fix tiếp cho bạn

mà học cái này ở đâu vậy bác.. mềnh muốn học.. nó hay quá..

ở đây nè bạn : Trang Web hoc VBA for Word

trong trường hợp bạn đọc tiếng Anh mà không hiểu được thì tạm thời bạn cứ học VBA cho Excel đi hen ở trang này đi, rồi từ từ chuyển qua VBA cho MS Word
 
trong trường hợp bạn đọc tiếng Anh mà không hiểu được thì tạm thời bạn cứ học VBA cho Excel đi hen ở trang này đi, rồi từ từ chuyển qua VBA cho MS Word

mềnh có mò được mấy cái VBA làm sẵn nhưng chẳng có cái nào có vụ tách file, lên đây hỏi được hướng dẫn làm mừng lắm chứ.

nhưng cái file này... chả hiểu nó cứ ra file 001 không àh.. y nội dung cũ chả tách được.
 

File đính kèm

mềnh có mò được mấy cái VBA làm sẵn nhưng chẳng có cái nào có vụ tách file, lên đây hỏi được hướng dẫn làm mừng lắm chứ.

nhưng cái file này... chả hiểu nó cứ ra file 001 không àh.. y nội dung cũ chả tách được.
Nhìn thì có vẻ cấu trúc file này giống như file cũ nhưng thực tế nó không giống. Code trước nhận biết các trang dựa vào ký tự xuống trang, trong file này không dùng ký tự đó nên nó không chia theo mong muốn là đúng.
Thông thường thuật toán phụ thuộc rất nhiều vào cấu trúc dữ liệu. Nếu cấu trúc thay đổi thì thuật toán cũng phải thay đổi theo cho phù hợp.
Bạn thử code này xem sao.
PHP:
Sub SlpipFile()
Dim Pages As Long, MainDoc As Document, i As Long
Application.ScreenUpdating = False
ChangeFileOpenDirectory ActiveDocument.Path
Set MainDoc = ActiveDocument
Selection.EndKey Unit:=wdStory
Selection.InsertBreak Type:=wdPageBreak
Selection.Find.ClearFormatting
Pages = Selection.Information(wdNumberOfPagesInDocument)
For i = 1 To Pages - 1
    MainDoc.Activate
    Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:="2"
    Selection.TypeBackspace
    Selection.HomeKey Unit:=wdStory, Extend:=wdExtend
    Selection.Cut
    Documents.Add DocumentType:=wdNewBlankDocument
    Selection.Paste
    ActiveDocument.SaveAs "File_" & VBA.Format(i, "000") & ".doc", 0
    ActiveDocument.Close
Next
Application.ScreenUpdating = True
End Sub
 
bấm tổ hợp 3 phím sau để thực hiện : Ctrl + Alt + /
(giữ phím Ctrl, rồi giữ tiếp phím Alt, rồi bấm phím / , phím / ở bên phần các phím chữ, không phải bên phần các phím số đâu nha bạn)

Muốn sử dụng lại, lần sau bạn cứ mở file này lên, xoá hết nội dung đi, copy toàn bộ nội dung từ file mới sang rồi lại nhấn 3 cái phím ở trên, thế thôi.

Bạn chú ý mỗi tháng nên tạo riêng một thư mục nha, như vậy dễ quản lý hơn.
Code là của anh Thắng, mình chỉ bỏ vào, thêm phần định dạng trang cho gọn lại trong 1 trang, + thêm phím tắt, sử dụng như bài trên.
 

File đính kèm

Nhìn thì có vẻ cấu trúc file này giống như file cũ nhưng thực tế nó không giống. Code trước nhận biết các trang dựa vào ký tự xuống trang, trong file này không dùng ký tự đó nên nó không chia theo mong muốn là đúng.
Thông thường thuật toán phụ thuộc rất nhiều vào cấu trúc dữ liệu. Nếu cấu trúc thay đổi thì thuật toán cũng phải thay đổi theo cho phù hợp.
Bạn thử code này xem sao.

cái này chạy rất tốt cảm ơn bạn, nhưng 2 cái mềnh add vô hết cho word để nếu cái này chạy không ok thì chuyển sang chạy cái khác....

hai cái code riêng biệt này chạy tốt cho mấy mớ văn bản mềnh có... file nào chạy code 1 bị lỗi thì chuyển sang chạy file 2 ok hết...




hình như lúc trước mềnh được biết có cuốn sách hướng dẫn khá kỹ thủ thuật trong excell không biết có phần VBA này không??

code của bạn SoiBien chạy cũng ok cho các file nhưng mềnh nhấn phím / bên phần chữ không chạy nhưng chuyển sang phần số chạy được...

mấy cái code này phải hiểu về nó chứ mò như mềnh đọc hết chả hiểu j :((
 


cái này chạy rất tốt cảm ơn bạn, nhưng 2 cái mềnh add vô hết cho word để nếu cái này chạy không ok thì chuyển sang chạy cái khác....

hai cái code riêng biệt này chạy tốt cho mấy mớ văn bản mềnh có... file nào chạy code 1 bị lỗi thì chuyển sang chạy file 2 ok hết...




hình như lúc trước mềnh được biết có cuốn sách hướng dẫn khá kỹ thủ thuật trong excell không biết có phần VBA này không??

code của bạn SoiBien chạy cũng ok cho các file nhưng mềnh nhấn phím / bên phần chữ không chạy nhưng chuyển sang phần số chạy được...

mấy cái code này phải hiểu về nó chứ mò như mềnh đọc hết chả hiểu j :((

Muốn hiểu và làm được thì bạn phải có đam mê + thời gian. Bạn phải tập làm và xem từ những bài đơn giản nhất. Nếu bạn chưa biết gì hết mà cứ cố lao vào đọc để hiểu một đoạn code phức tạp thì chỉ càng làm cho bạn nhanh nản chí mà thôi.
 
Bạn nên nhận thấy đặc điểm của file của bạn, đó là dòng
ỦY BAN NHÂN DÂN ... CỘNG HÒA...
Đó là dấu hiệu điểm bắt đầu của file. Nếu gặp lại nó thì là dấu hiệu điểm bắt đầu của file tiếp (quyết định có thể có nhiều trang).

Hoặc là mỗi dấu Section Break là 1 dấu hiệu điểm phân cách giữa file trước và sau.

Từ đó, bạn có thể tìm ra cách tạo file mới từ file đã có.

(Xin lỗi, hơi bận, nên ai thấy viết mã cho bạn thì tốt quá) Nếu tốt thì tên của người ở điều 1 sẽ là tên file.

Tuy nhiên tôi thấy cần gì phải tách thành nhiều file. Hãy cân nhắc. Nếu bạn tạo ra 1000 file thì lục tìm 1 file sẽ vất vả thế nào
 
mềnh cũng muốn như vậy nhưng quy định là phải tách ra như vậy... cãi cọ mãi không không nên phải làm theo thôi chứ sao bi h... nhiều lúc cả mấy chục văn bản.. lúc trước làm thủ công thì cả buổi tốn time lắm.. mà bắt làm thì phải làm...mấy bác đi làm cũng hiểu rồi đó :((
 
Mình còn có cách này mình đang thực hiện cũng thấy hay hay.
Bạn chỉ cần nhập những dữ liệu chính vào "Ho So" Sheet "Ho So" sẽ lưu trữ toàn bộ giúp bạn.
Bạn thử xem nếu thấy hay thì xin cái bắt tay nhé
 

File đính kèm

Lần chỉnh sửa cuối:
Có cách nào biến cái code này thành một Macro và chạy trong Word không nhỉ? Khi đó mình chỉ cần đặt một button trên thanh công cụ rồi có thể tách cho bất cứ tập tin word nào.
 
Có cách nào biến cái code này thành một Macro và chạy trong Word không nhỉ? Khi đó mình chỉ cần đặt một button trên thanh công cụ rồi có thể tách cho bất cứ tập tin word nào.

nếu có như thế là còn bằng nhưng bạn j nói tách này dựa nhiều vào phần nội dung nên mỗi loại văn bản khác nhau code khác nhau.
 
Vậy có anh chị em nào rành về VBA và macro trong Word 2007 thì giúp mình tạo một cái macro và button trên thanh công cụ để có thể tách cho tất cả các file word căn cứ vào trang văn bản do Word tự động phân trang không?

Mình xin cảm ơn.
 
Cách sử dụng cái code này như thế nào anh e?
 
Vậy có anh chị em nào rành về VBA và macro trong Word 2007 thì giúp mình tạo một cái macro và button trên thanh công cụ để có thể tách cho tất cả các file word căn cứ vào trang văn bản do Word tự động phân trang không?

Mình xin cảm ơn.
Code là của anh Thắng, mình chỉ bỏ vào, thêm phần định dạng trang cho gọn lại trong 1 trang, + thêm phím tắt, sử dụng như bài trên.
thì bạn cứ dùng cái của mình tổng hợp lại từ file của anh Thắng tại bài 25
 
Em đã download file test và làm như hướng dẫn để chia mỗi trang trong file word thành 1 file, nhưng khi thực hiện (Alt+F8) thì nó cứ báo lỗi : Fname = "File_" & VBA.Format(i, "000") & "_" & Mid(Selection.Text, 10, Len(Selection.Text) - 11) & ".doc"

Các bác giúp em làm sao để chia mỗi trang thành 1 file, mà tên mỗi file có tên nhân viên trong mỗi trang.

Thanks các bác nhiều !
 

File đính kèm

Em đã download file test và làm như hướng dẫn để chia mỗi trang trong file word thành 1 file, nhưng khi thực hiện (Alt+F8) thì nó cứ báo lỗi : Fname = "File_" & VBA.Format(i, "000") & "_" & Mid(Selection.Text, 10, Len(Selection.Text) - 11) & ".doc"

Các bác giúp em làm sao để chia mỗi trang thành 1 file, mà tên mỗi file có tên nhân viên trong mỗi trang.

Thanks các bác nhiều !

Bạn xem file này nhé
 

File đính kèm

Thanks bạn nhiều.
Mình đã load file về thực hiện nhưng sao vẫn ko đc nhỉ? Mình mở file ra ấn Alt+F8, rồi chọn splitfile->run sau đó báo là : Done! There's 1 page(s) were saved!

Mở ra thì chỉ có 1 file đc tạo ra nhưng trong file này có rất nhiều trang.
Bạn có thể hướng dẫn mình chi tiết hơn được ko? mình làm đi làm lại mà ko biết sao mà ko đc.

Thanks bạn rất nhiều!
 
mình tạo file của bạn trên MS Office 2010, bạn đang dùng Office mấy ?
 
mình cũng dùng MS office 2010 bạn ah, chạy win 7 pro.
Bạn xem giúp mình nhé,

Thanks bạn.
 
Em đã download file test và làm như hướng dẫn để chia mỗi trang trong file word thành 1 file, nhưng khi thực hiện (Alt+F8) thì nó cứ báo lỗi : Fname = "File_" & VBA.Format(i, "000") & "_" & Mid(Selection.Text, 10, Len(Selection.Text) - 11) & ".doc"

Các bác giúp em làm sao để chia mỗi trang thành 1 file, mà tên mỗi file có tên nhân viên trong mỗi trang.

Thanks các bác nhiều !
Bạn thử Macro này thử xem. Sử dụng cho file nào cũng được, 1 trang được tách ra làm 1 file.
Mã:
Sub TachFile()
Application.ScreenUpdating = False
Dim Doc As Document, Pages As Long
Set Doc = ActiveDocument
Selection.EndKey Unit:=wdStory
Selection.InsertBreak Type:=wdPageBreak
Selection.HomeKey Unit:=wdStory
Pages = Doc.BuiltInDocumentProperties(wdPropertyPages)
ChangeFileOpenDirectory ActiveDocument.Path
For i = 1 To Pages - 1
    Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Count:=1
    Selection.HomeKey Unit:=wdStory, Extend:=wdExtend
    Selection.Cut
    With Documents.Add
        Selection.Paste
        Selection.EndKey Unit:=wdStory
        Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
        If AscW(Selection.Text) = 12 Or AscW(Selection.Text) = 13 Or AscW(Selection.Text) = 22 Then Selection.TypeBackspace
        .SaveAs Left(Doc.Name, InStrRev(Doc.Name, ".") - 1) & "_" & VBA.Format(i, "000") & ".doc", 0
        .Close
    End With
Next
Application.ScreenUpdating = True
End Sub
 
Tên của file duy nhất được saved là gì vậy bạn ?
 
Tên file duy nhất được tạo ra là : File_8_Nguyễn Văn Tưởng
Mình đã copy đoạn code trên của bạn và thực hiện thì ok rồi bạn ah, tuy nhiên bạn có cách nào tạo ra tên file chứa tên các nhân viên và file tạo ra giữ nguyên form đc ko?

Thanks bạn nhiều!
 
Tên file duy nhất được tạo ra là : File_8_Nguyễn Văn Tưởng
@soibien
Mình đã copy đoạn code trên của bạn và thực hiện thì ok rồi bạn ah, tuy nhiên bạn có cách nào tạo ra tên file chứa tên các nhân viên và file tạo ra giữ nguyên form đc ko?

@HuuThang_bd ???

Mình làm thấy bình thường mà !

đây là kết quả sau khi run macro SplitFile
ket qua.jpg

Bạn down thử file này lại.

Các bác khác có ai chạy ra kết quả khác không? cho mình biết với !
 

File đính kèm

Mình load file của bạn về rồi, run macro splitFile thì vẫn báo có 1 file tạo ra bạn ah. Mình gửi file đính kèm bạn xem giúp mình nhé.

Thanks ban!
 

File đính kèm

hix, phức tạp nhỉ, debug mà hỏi qua hỏi lại trên forum thế này thì chịu.
 
Lần chỉnh sửa cuối:
chắc method Find có vấn đề, mình làm lại code này cho bạn toàn dùng Goto. Format file của bạn phải đúng như ví dụ nhé ( dòng STT ở dòng thử 2, dòng tên là thứ 3)
 

File đính kèm

Được rồi anh ah, anh hướng dẫn giúp em em cách sửa code làm sao để khi mình muốn lấy tên file theo 1 dòng nào hoặc 1 nội dung nào trong văn bản để khi mình có văn khác thì có thể lấy tên file khác.

Cảm ơn anh nhiều nhé.
 
Mình thử cách này của bạn trên Word 2010 với file .docx thì bị cách dòng, mỗi trang tách ra thành một file nhưng lại là 2 trang vì bị thêm dòng trắng giữa các xuống dòng.
 
-Cách trả lời này dễ khiến cho người giúp bạn phiền lòng.
-Theo mình, không có cách nào đơn giản hợn là phải dùng code.
-Mình đã lấy code của bác huuthang_bd làm giúp bạn, bạn mở file bấm vào nút chia file.
-Nếu chưa thấy hiệu quả thì vào Tools/Macro/Security/Security level - Chọn mức low/OK -Đóng file và mở lại- Bấm vào nút Chia file.
-Chạy ngon rồi nhớ cám ơn bác huuthang_bd.


File này mình mún sửa code thành tách 2 hoặc 3 trang thành 1 file thì sửa như thế nào vậy bạn?
Thú thật là đọc code ko hiểu cho lắm. :)
 
File này mình mún sửa code thành tách 2 hoặc 3 trang thành 1 file thì sửa như thế nào vậy bạn?
Thú thật là đọc code ko hiểu cho lắm. :)
Mã:
Sub newSplitFile()
On Error Resume Next
Application.ScreenUpdating = False
Selection.EndKey Unit:=wdStory
Selection.InsertBreak Type:=wdPageBreak
Pages = ActiveDocument.BuiltInDocumentProperties(wdPropertyPages)
ChangeFileOpenDirectory ActiveDocument.Path
j = 0
For i = 0 To Pages – 1
[COLOR=#ff0000]‘ Pages là tổng số trang, vậy bạn đổi (pages -1) cho phù hợp[/COLOR]
    Selection.HomeKey Unit:=wdStory
    Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Count:=1
[COLOR=#ff0000]'câu này chọn đến trang bạn muốn ngắt, => đổi Count cho phù hợp[/COLOR]
    Selection.EndKey Unit:=wdStory, Extend:=wdExtend
    Selection.Cut
    Selection.TypeBackspace
    Selection.HomeKey Unit:=wdStory
    Selection.GoTo What:=wdGoToLine, Which:=wdGoToNext, Count:=1, Name:=""
    Selection.EndKey Unit:=wdLine, Extend:=wdExtend
    Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Stt = Mid(Selection.Text, InStr(1, Selection.Text, ": ") + 1, Len(Selection.Text))
   
    Selection.GoTo What:=wdGoToLine, Which:=wdGoToNext, Count:=1, Name:=""
    Selection.EndKey Unit:=wdLine, Extend:=wdExtend
    Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    tennv = Mid(Selection.Text, InStr(1, Selection.Text, ": ") + 1, Len(Selection.Text))
    Fname = "File_" & Stt & "_" & tennv & ".docx"
    If Fname <> "File__.docx" Then j = j + 1
    ActiveDocument.SaveAs2 FileName:=Fname, FileFormat:=wdFormatXMLDocument, LockComments:=False, _
         Password:="", AddToRecentFiles:=True, WritePassword:="", _
        ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
        SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
        False, CompatibilityMode:=14
   
    Selection.WholeStory
    Selection.Paste
Next i
Application.ScreenUpdating = True
 
MsgBox "Done!" & Chr(13) & "There's " & j & " page(s) were saved !"
 
End Sub
bạn làm thử nhé,
for .. next ... khó hiểu thì dùng
Do While (ActiveDocument.BuiltInDocumentProperties(wdPropertyPages) lớn hơn số pages muốn ngắt trang, nhớ kiểm tra số lẻ còn lại để bẫy lỗi không đú số trang để goto)
...
Loop

Thường mình tìm hiểu code bằng cách run từng dòng lệnh (nhấn F8) xem code nó làm gì, hiểu tổng quan của code rồi tìm đúng chỗ mình cần sửa, sửa lại, hì hì.
 
sao mềnh dùng không đc nhỉ.có phải cài thêm phần mềm hỗ trợ không đó
 
ACE có mã code tách 1 file thành các file nhỏ hơn, mỗi file từ 2 hoặc 3 trang (mình đang cần mỗi file 2 trang)
cho mình xin code hoàn chỉnh nhé, vì bị mù tịt về lập trình ! !$@!!
 
loay hoay hoài mà ko dc, +-+-+-++-+-+-+!$@!!!$@!! . dán code vào rùi làm thế nào nữa ah chỉ e với ah.
 
Chào ACE! Làm sao để tách một File Word thành nhiều Flie nhỉ? tìm hiểu code hoài mà không hiểu gì hết luôn, có anh chị nào biết tách giùm em file này với! em cảm ơn nhiều ạ!!!!!!!!
 

File đính kèm

Hi các bác;
Mình muốn tách file word dựa vào đặc điểm là có ngắt trang ; và có filename là mid của dòng thứ n ( tức là gộp giữa 2 đoạn code của bác @soisbien + bác huuthang_db ạ. Mình chỉnh mãi k được :( gà code quá :(. Kính nhờ các bác giúp đỡ ạ
Thanks :)
 
Lần chỉnh sửa cuối:
Sau khi mày mò mình đã test thử có vẻ ổn; nhưng cảm giác hơi nặng và chưa được tối ưu... các bác tham khảo và chỉ dẫn thêm ạ

Option Explicit
Sub SlpipFile3()
Dim i As Long
Dim tennv
Dim Fname
Application.ScreenUpdating = False
ChangeFileOpenDirectory ActiveDocument.Path
'Selection.Find.ClearFormatting
With Selection.Find
.Text = "^k"
.Forward = True
.Wrap = wdFindContinue
End With


ActiveDocument.Range(0, 0).Select


Do Until Selection.Find.Execute = False
i = i + 1
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.MoveDown Unit:=wdParagraph, Count:=999999999, Extend:=wdExtend
Selection.Cut
Selection.TypeBackspace




Selection.HomeKey Unit:=wdStory
Selection.GoTo What:=wdGoToLine, Which:=wdGoToNext, Count:=1, Name:=""
Selection.GoTo What:=wdGoToLine, Which:=wdGoToNext, Count:=1, Name:=""
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
tennv = Mid(Selection.Text, InStr(1, Selection.Text, ": ") + 1, Len(Selection.Text))





Fname = "File_" & tennv & ".docx"
ActiveDocument.SaveAs2 FileName:=Fname, FileFormat:=wdFormatXMLDocument, LockComments:=False, _
Password:="", AddToRecentFiles:=True, WritePassword:="", _
ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
False, CompatibilityMode:=14

Documents.Add DocumentType:=wdNewBlankDocument
Selection.PasteAndFormat (wdUseDestinationStylesRecovery)
ActiveDocument.Range(0, 0).Select
Loop


Application.Quit
Application.ScreenUpdating = True
End Sub
 
Bạn thử dùng Macro này xem.
PHP:
Sub SlpipFile()
Dim i As Long
Application.ScreenUpdating = False
ChangeFileOpenDirectory ActiveDocument.Path
Selection.Find.ClearFormatting
With Selection.Find
    .Text = "^k"
    .Forward = True
    .Wrap = wdFindContinue
End With
ActiveDocument.Range(0, 0).Select
Do Until Selection.Find.Execute = False
    i = i + 1
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveDown Unit:=wdParagraph, Count:=999999999, Extend:=wdExtend
    Selection.Cut
    Selection.TypeBackspace
    ActiveDocument.SaveAs "File_" & VBA.Format(i, "000") & ".doc", 0
    ActiveDocument.Close
    Documents.Add DocumentType:=wdNewBlankDocument
    Selection.Paste
    ActiveDocument.Range(0, 0).Select
Loop
    ActiveDocument.SaveAs "File_" & VBA.Format(i + 1, "000") & ".doc", 0
Application.ScreenUpdating = True
End Sub
chào bạn code này tách được rồi, nhưng nó thêm 1 trang trắng sau tức 2 trang; muốn thay tên file bằng tên trong sách trộn có được không ạ? trộn thư với file danh sách excel có tên.
xin cảm ơn.
 

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

Back
Top Bottom