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
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.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.
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
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.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.
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ó 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.
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.
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 25Code 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.
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 !