Tách file word ra từng trang mỗi trang là 1 file

Liên hệ QC
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

  • khi tach chi ra 001.doc
    62 KB · Đọc: 75
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

  • phan trang bang goto.rar
    12.8 KB · Đọc: 411
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

  • PhantrangGPE.rar
    32.8 KB · Đọc: 282
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

  • Chia file.docx
    46.7 KB · Đọc: 63
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

  • Chia file.rar
    56.1 KB · Đọc: 293
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.
 
Web KT
Back
Top Bottom