Cách xuất trang trong sheet thàng pdf

  • #21

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.

Gì vậy?
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:
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]

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

  • #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:
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]

Các bạn cho mình hỏi với!.
- 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!.
- 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!.

Ý 1: có thể Viết kiểu này

Filename = Thisworkbook.path & "" & Thisworkbook.name
xin lỗi toi ko có máy tính để thử, bạn test xem nhé

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] ???

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
xin lỗi toi ko có máy tính để thử, bạn test xem nhé

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.

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!.
- Mình chạy code không hiểu sao bị lỗi dòng này:

PHP:

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.
- 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?

- Mình làm đúng như bạn hướng dẫn
- 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.
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ình không phải làm hàng ngày nhưng việc này là khá thường xuyên.
- 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!.

Chủ Đề