Mã: Mình đã sử dụng đoạn code này cho EX 2010 chạy rất tốt. Nhưng đưa code này vào EX 2003 thì bị lỗi. Vậy kính nhờ các bạn có thể sửa giúp code như thế nào chạy được EX 2003, 2007, 2010? Cảm ơn các bạn. Gì vậy?Sub XuatPDF[]Dim FileName As String
FileName = "D:\" & Format[Now, "dd-mm-yy hhmmss"]
Sheet1.ExportAsFixedFormat xlTypePDF, FileName, , , , , , 1
End Sub
Excel 2003
hoặc 2007 thì đương nhiên không thể chạy rồi. Nó làm gì có chức năng Export file PDF
Cũng giống như Remove Duplicates thì làm gì có trên phiên bản Excel 2003
- #22
Mã: Sub XuatPDF[]Dim FileName As String
FileName = "D:\" & Format[Now, "dd-mm-yy hhmmss"]
Sheet1.ExportAsFixedFormat xlTypePDF, FileName, , , , , , 1
End Sub
Mình đã sử dụng đoạn code này cho EX 2010 chạy rất tốt. Nhưng đưa code này vào EX 2003 thì bị lỗi. Vậy kính nhờ các bạn có thể sửa giúp code như thế nào chạy được EX 2003, 2007, 2010? Cảm ơn các bạn.
Tốt nhất up lên cel 2007 hoặc là 2010.. dùng phiên bản mới nhiều cải tiến hay hơn..
- #23
Mã: Sub XuatPDF[]
Dim FileName As String
FileName = "F:\" & Format[Now, "dd-mm-yy hhmmss"]
Sheet13.ExportAsFixedFormat xlTypePDF, FileName, , , , , , 1
End Sub
Thầy ơi nếu muốn chuyển sang PDF từ số trang theo quy định của mình [ví dụ từ trang 6 đến trang 10 chẳng hạn] thì làm thế nào vậy Thầy??
- #24
Thầy ơi nếu muốn chuyển sang PDF từ số trang theo quy định của mình [ví dụ từ trang 6 đến trang 10 chẳng hạn] thì làm thế nào vậy Thầy?? Cấu trúc:
expression
.ExportAsFixedFormat[Type, Filename, Quality, IncludeDocProperties, IgnorePrintAreas, From, To, OpenAfterPublish]
Vậy bạn
sửa thế này
[GPECODE=vb]Sub XuatPDF[]
Dim FileName As String
FileName = "E:\" & Format[Now, "dd-mm-yy hhmmss"]
Sheet1.ExportAsFixedFormat xlTypePDF, FileName, , , , 6,10, 1
End Sub[/GPECODE]
Lần chỉnh sửa cuối: 26/9/14
- #25
Cấu trúc: Vậy em cần chèn thêm Header vào file PDF khi in thì có cách nào không anh ơi [Header đó em tạo sẵng trên sheet luôn rồi]. chỉ giúp em với
expression .ExportAsFixedFormat[Type, Filename, Quality,
IncludeDocProperties, IgnorePrintAreas, From, To, OpenAfterPublish]
Vậy bạn sửa thế này
[GPECODE=vb]Sub XuatPDF[]
Dim FileName As String
FileName = "E:" & Format[Now, "dd-mm-yy hhmmss"]
Sheet1.ExportAsFixedFormat xlTypePDF, FileName, , , , 6,10, 1
End
Sub[/GPECODE]
- #26
Vậy em cần chèn thêm Header vào file PDF khi in thì có cách nào không anh ơi [Header đó em tạo sẵng trên sheet luôn rồi]. chỉ giúp em với Bạn đã test thử chưa?
cái j có trên sheet thì nó sang pdf chứ [về mặt logic]. Còn có thể do định dạng sheet mà khi xuẩt sang pdf bị
mất.
- #27
Vậy em cần chèn thêm Header vào file PDF khi in thì có cách nào không anh ơi [Header đó em tạo sẵng trên sheet luôn rồi]. chỉ giúp em với Nếu Header + Footer có sẵn trong Excel rồi, sao bạn không thử dùng code xuất ra file pdf rồi kiểm tra xem trong pdf có Header + Footer
không?
Nói chung: Kiểm tra trước khi hỏi
- #28
Cấu trúc: Các bạn cho mình hỏi với!.
expression .ExportAsFixedFormat[Type, Filename, Quality,
IncludeDocProperties, IgnorePrintAreas, From, To, OpenAfterPublish]
Vậy bạn sửa thế này
[GPECODE=vb]Sub XuatPDF[]
Dim FileName As String
FileName = "E:" & Format[Now, "dd-mm-yy hhmmss"]
Sheet1.ExportAsFixedFormat xlTypePDF, FileName, , , , 6,10, 1
End
Sub[/GPECODE]
- Thứ nhất: Khi mình lưu một sheet trong file excel thành file pdf nhưng tên file pdf mình muốn lấy cũng là tên của file Excel thì phải sửa code thế nào?.
- Thứ hai: Mình có nhiều file excel có tên file khác nhau, trong các file excel này đều có sheet["Quy_che"], mình muốn đồng loạt lưu các sheet này thành file pdf thì code viết thế nào? mong được các bạn giúp!.
Lần chỉnh sửa cuối: 17/8/16
- #29
Các bạn cho mình hỏi với!. Ý 1: có thể Viết kiểu này Filename = Thisworkbook.path & "" & Thisworkbook.name Thisworkbook.name sẽ ra cả phần mở rộng [tên đuôi] File. Do đó bạn có thể thay bằng thế này: FileName = ThisWorkbook.Path & "" & Left[ThisWorkbook.Name, InStr[ThisWorkbook.Name,
"."] - 1] Ý 2: chỉ có kịch bản thế này: mở file -> xuất PDF -> đóng lại -> mở file khác -> xuất PDF ...... P/S: không hiểu sao toàn mất dấu \ trong ngoặc kép [Admin xem xét vấn đề này] ???
- Thứ nhất: Khi mình lưu một sheet trong file excel thành file pdf nhưng tên file pdf mình muốn lấy cũng là tên của file Excel thì phải sửa code thế nào?.
- Thứ hai: Mình có nhiều file excel có tên file khác nhau, trong các file excel này đều có
sheet["Quy_che"], mình muốn đồng loạt lưu các sheet này thành file pdf thì code viết thế nào? mong được các bạn giúp!.
xin lỗi toi ko có máy tính để thử, bạn test xem nhé
Lần chỉnh sửa cuối: 18/8/16
- #30
Ý 1: có thể Viết kiểu này Filename = Thisworkbook.path & "" & Thisworkbook.name Thisworkbook.name sẽ ra cả phần mở rộng [tên đuôi] File. Do đó bạn có thể thay bằng thế này: FileName = ThisWorkbook.Path & ""
& Left[ThisWorkbook.Name, InStr[ThisWorkbook.Name, "."] - 1] Ý 2: chỉ có kịch bản thế này: mở file -> xuất PDF -> đóng lại -> mở file khác -> xuất PDF ...... P/S: không hiểu sao toàn mất dấu \ trong ngoặc kép [Admin xem xét vấn đề này] ??? - Cảm ơn bạn nha. Mình sửa và chạy được code [Thứ nhất rồi.
xin lỗi toi ko có máy tính để thử, bạn test xem nhé
Sub XuatPDF[]Dim FileName As String
FileName = "D:\XUAT-PDF" & Format[Left[ThisWorkbook.Name, InStrRev[ThisWorkbook.Name, "."] - 1], "dd-mm-yy hhmmss"]
ActiveSheet.ExportAsFixedFormat xlTypePDF, FileName, , , , 1, 2, 1 'so 1,2, la trang 1 va 2 can chuyen thanh pdf
End Sub
- Còn [Thứ hai] cũng đành mở từng file chay code ý [Thứ nhất
- #31
- Cảm ơn bạn nha. Mình sửa và chạy được code [Thứ nhất rồi. - Còn [Thứ hai] cũng đành mở từng file chay code ý [Thứ nhất Ý 2: sao phải cũng đành. Nghĩ cách tự động hoá như tôi gợi ý xem sao.
- #32
Ý 2: sao phải cũng đành. Nghĩ cách tự động hoá như tôi gợi ý xem sao. Loay hoay với gợi ý của bạn nhưng code của mình vẫn không chạy; Các bạn coi giúp mình nhé!. Mã: Public Sub Xuat_pdf[] Application.ScreenUpdating = False
Dim fso As Object, ObjFile As Object, strPath As String, path As String, FileName As String
Set fso = CreateObject["Scripting.FileSystemObject"]
path = Application.FileDialog[msoFileDialogFolderPicker].SelectedItems[1]
For Each ObjFile In fso.GetFolder[strPath].Files
If fso.GetExtensionName[ObjFile] Like "xls*" Then
If Left[ObjFile.Name, 2] "~$" Then
If ObjFile.Name ThisWorkbook.Name Then
fso.ThisWorkbook.Open [ObjFile]
FileName = "D:\Gui-GV" & Format[Left[ThisWorkbook.Name, InStrRev[ThisWorkbook.Name, "."] - 1], "dd-mm-yy hhmmss"]
Sheets["Hoc_Ky"].ExportAsFixedFormat xlTypePDF, FileName, , , , 1, 1, 1 'so 1,2, la so trang can chuyen thanh pdf
'.Close
End If
End If
End If
Next
Set fso = Nothing
Application.AskToUpdateLinks = False
Application.ScreenUpdating = True
End Sub
Lần chỉnh sửa cuối: 19/8/16
- #33
- Cảm ơn bạn nha. Mình sửa và chạy được code [Thứ nhất rồi. - Còn [Thứ hai] cũng đành mở từng file chay code ý [Thứ nhất Bạn xem file đính kèm nhé..
-
Excel2pdf.xls
49.5 KB · Đọc: 14
Lần chỉnh sửa cuối: 20/8/16
- #34
Bạn xem file đính kèm nhé.. - Cảm ơn bạn nhiều nha!. PHP:
- Mình chạy code không hiểu sao bị lỗi dòng này:Workbooks.Open Filename:=Ipath & Filename, ReadOnly:=True
Bạn xem lại giúp mình với nhé!. Cảm ơn bạn!.
- #35
- Chọn input và output folder xong bạn click Export.
- File này không để vào InputFolder.
- Bạn chụp màn hình thông báo lỗi như nào?
- #36
- Chọn input và output folder xong bạn click Export. - Mình làm đúng như bạn hướng dẫn
- File này không để vào InputFolder.
- Bạn chụp màn hình thông báo lỗi như nào?
- Lỗi nó thế này
Phải chăng là do các file exel mình cần xuất sang pdf có đuôi là slxm nên nó lỗi?
- #37
Dòng này
Filename = Dir[Ipath & "*.xls*"] thì có mở file *.xlsm
Bạn chụp ảnh lúc vba bug lỗi chứ.
Có thể file đó bạn đang mở rồi [bạn tắt hết các file chỉ để file Excel2pdf.xls thôi].
- #38
Loay hoay với gợi ý của bạn nhưng code của mình vẫn không chạy; Các bạn coi giúp mình nhé!. Mã: Public Sub Xuat_pdf[] Application.ScreenUpdating = False
Dim fso As Object, ObjFile As Object, strPath As String, path As String, FileName As String
Set fso = CreateObject["Scripting.FileSystemObject"]
path = Application.FileDialog[msoFileDialogFolderPicker].SelectedItems[1]
For Each ObjFile In fso.GetFolder[strPath].Files
If fso.GetExtensionName[ObjFile] Like "xls*" Then
If Left[ObjFile.Name, 2] "~$" Then
If ObjFile.Name ThisWorkbook.Name Then
fso.ThisWorkbook.Open [ObjFile]
FileName = "D:\Gui-GV" & Format[Left[ThisWorkbook.Name, InStrRev[ThisWorkbook.Name, "."] - 1], "dd-mm-yy hhmmss"]
Sheets["Hoc_Ky"].ExportAsFixedFormat xlTypePDF, FileName, , , , 1, 1, 1 'so 1,2, la so trang can chuyen thanh pdf
'.Close
End If
End If
End If
Next
Set fso = Nothing
Application.AskToUpdateLinks = False
Application.ScreenUpdating = True
End Sub
Nếu công việc này phải làm hằng ngày, theo tôi bạn có thể tự làm cho mình một cái tool. 1 file excel gồm các trường: Đường dẫn file
nguồn, Tên sheet cần xuất pdf, đường dẫn file đích.
Làm cái thủ tục, dùng vòng lặp duyệt qua từng file, xuất, đóng...
về sau nếu thay đổi đường dẫn hoặc tên sheet cần xuất thì cũng dễ dàng hơn.
Nếu bạn muốn theo hướng này thì chúng ta cùng làm.
- #39
Bạn xem file đính kèm nhé.. View attachment 164153 - Làm đúng như hướng dẫn của bạn luôn nhưng vẫn lỗi đó bạn à!.
- Mình phát hiện thêm là nếu tên file excel cần chuyển có dấu tiếng việt thì bị lỗi; và chỉ chuyển 1 file trong thư mục chọn
Lần chỉnh sửa cuối: 19/8/16
- #40
Nếu công việc này phải làm hằng ngày, theo tôi bạn có thể tự làm cho mình một cái tool. 1 file excel gồm các trường: Đường dẫn file nguồn, Tên sheet cần xuất pdf, đường dẫn file đích. - Mình không phải làm hàng ngày nhưng việc này là khá thường xuyên.
Làm cái thủ tục, dùng vòng lặp duyệt qua từng file, xuất, đóng...
về sau nếu thay đổi đường dẫn hoặc tên sheet
cần xuất thì cũng dễ dàng hơn.
Nếu bạn muốn theo hướng này thì chúng ta cùng làm.
- Mỗi thư mục của mình có khoảng gần 20 file mình cần xuất sheet["name"] ra pdf để gửi đi
- Nếu chạy code ở Ý thứ nhất bài trên của mình thì mình phải mở bấy nhiêu file mình thấy cũng phiền.
- Các bạn có giải pháp xin cứ giúp dù sao cũng thêm một cách để giải quyết vấn đề. Xin cảm ơn các bạn!.