Hỏi về code VBA chuyển file excel sang pdf

Liên hệ QC

sonick1988

Thành viên mới
Tham gia
27/12/11
Bài viết
3
Được thích
5
Chào các anh chị, do công việc yêu cầu nên em thường xuyên phải xuất file từ *.xls hoặc *.xlsx sang *.PDF
Ví dụ: Em đang làm việc với file ABC.xlsx (sử dụng Office 2010) trong thư mục D:\File (do yêu cầu công việc nên em thường xuyên phải copy folder này ra và đổi tên để theo dõi). Khi em viết code để chuyển 1 số sheet trong file ABC.xlsx này sang file ABC.pdf như sau:

Sub chuyenfile()
'
' chuyenfile Macro
'
'
Sheets(Array("A", "B", "C")).Select

Sheets("A").active

activesheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="D:\File\ABC.pdf", Quality:= xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True

End Sub

Tuy nhiên, với đoạn code trên thì khi em copy folder này và đổi tên folder (ví dụ là folder XYZ) thì file ABC.xlsx trong folder XYZ khi chuyển thành file ABC.pdf trong folder D:\File (hoặc báo lỗi nếu tên folder File đã ko còn trong D:\),
Em nhờ các anh chị giúp em đoàn code thế nào cho khi xuất thành file .pdf thì file đó sẽ được lưu trong folder hiện hành đang làm việc. (trong ví dụ trên khi em copy và đổi tên folder File thành folder XYZ thì khi em thao tác trên file ABC.xlsx trong folder sẽ tự động xuất và lưu file ABC.pdf trong folder XYZ mà không cần phải vào chỉnh sửa trong code trong VBA).
Hoặc em nhờ các anh chị có thể giúp em đoạn code sau khi đã chọn các sheet trong file ABC.xlsx thì sẽ tự động hiện cửa sổ Save As không? (vì em sử dụng Office 2010, khi hiện cửa sổ Save As thì có hỗ trợ chuyển sang file PDF mà không cần phần mềm khác hỗ trợ như các phiên bản Office trước đây).
Chân thành cám ơn các anh chị.
 
Lần chỉnh sửa cuối:
Em nhờ các anh/chị giúp em về việc tạo VBA in liên tục sang Pdf với tên lưu mặc định trong ô có sẵn, cụ thể như sau:
1. File em đính kèm, Sheet cần in là "Receipt"
2. Em muốn xuất file (in) sang Pdf và tự lưu tên theo ô R1 trong sheet Receipt (sheet hiện hành). Mỗi lần in mình có thể điều chỉnh theo ý muốn "từ số" ô O1, "đến số" ô P6.
3. Thư mục lưu các file Pdf trùng với thư mục chứa file excel đang mở, (hoặc điều chỉnh được đường dẫn càng tốt).
4. Trong quá trình xuất file Pdf thì nó không hiển thị những thứ như save file name,.... Và khi kết thúc quá trình sẽ hiện bảng, đã hoàn thành việc xuất pdf.
5. Sheet Receipt có chạy kèm VBA của diễn đàn GPE https://www.giaiphapexcel.com/diendan/threads/vba-in-hàng-loạt.140406/

Đây là lần đầu em post lên diễn đàn, nếu em viết không rõ ràng vấn đề lắm thì các anh/chị nói giúp em!
Em cảm ơn!!
 

File đính kèm

  • 2020 Thu tiền nhà - T.04 - Copy (2).xlsm
    293.6 KB · Đọc: 21
Upvote 0
Em nhờ các anh/chị giúp em về việc tạo VBA in liên tục sang Pdf với tên lưu mặc định trong ô có sẵn, cụ thể như sau:
1. File em đính kèm, Sheet cần in là "Receipt"
2. Em muốn xuất file (in) sang Pdf và tự lưu tên theo ô R1 trong sheet Receipt (sheet hiện hành). Mỗi lần in mình có thể điều chỉnh theo ý muốn "từ số" ô O1, "đến số" ô P6.
3. Thư mục lưu các file Pdf trùng với thư mục chứa file excel đang mở, (hoặc điều chỉnh được đường dẫn càng tốt).
4. Trong quá trình xuất file Pdf thì nó không hiển thị những thứ như save file name,.... Và khi kết thúc quá trình sẽ hiện bảng, đã hoàn thành việc xuất pdf.
5. Sheet Receipt có chạy kèm VBA của diễn đàn GPE https://www.giaiphapexcel.com/diendan/threads/vba-in-hàng-loạt.140406/

Đây là lần đầu em post lên diễn đàn, nếu em viết không rõ ràng vấn đề lắm thì các anh/chị nói giúp em!
Em cảm ơn!!
Bác @quick87, @phuyen89 có thể giúp mình phần ở trên được không :)!
Em cảm ơn nhiều!!
 
Upvote 0
Sau một thời gian mò mẫm thì mình đã làm xong phần trên :)
Mình nghĩ các anh chị rành về VBA thì viết rất nhanh, nhưng với gà mờ mới học như mình thì lâu hơn nhiều!!
Code của em đây ạ :)

Mã:
Sub InKetQua()
  Dim TuSo, DenSo, BatDau, KetThuc As Long
 
Application.ScreenUpdating = False
 
  TuSo = [O5]
  DenSo = [p6]
  KetThuc = 2

    ActiveSheet.PageSetup.PrintArea = "$A$1:$L$24"
  For BatDau = TuSo To DenSo Step KetThuc
    [O5] = BatDau
    ActiveSheet.PrintOut PrToFilename:=ThisWorkbook.Path & Application.PathSeparator & ThisWorkbook.ActiveSheet.[R1] & ".pdf"
  Next BatDau
 
Application.ScreenUpdating = True
MsgBox "Chuyen sang Pdf xong"
End Sub
P/S: cả 3 comment liên tiếp đều là của mình hết *_*
 
Upvote 0
Chào AC tiền bối,

Em xin hỏi xíu: Mình có thể chuyển từ file Word sang file .dpf bằng code không ạ?
Word không có quy định ô, làm sao mình đặt tên file_name_dpf theo ô mình chọn.
Em có đính kèm ví dụ, mong các AC giúp đỡ.

Cảm ơn AC nhiều.
 

File đính kèm

  • Convert_Word_into_PDF.docx
    18.2 KB · Đọc: 10
Upvote 0
Em chào các anh chị.
Các anh chị cho em hỏi ké. Em có một đoạn code nhỏ nhỏ như file đính kèm. Anh chị cho em hỏi vì sao khi e để mảng arr kiểu byte thì đoạn code không thể chạy đến hoàn thiện được, còn để kiểu khác như integer thì lại chạy được.
Em xin cảm ơn.
Đoạn code thế này ạ:
Sub v()
Dim arr(1 To 1, 1 To 5) As Byte
Dim i As Byte
For i = 1 To 5
arr(1, i) = i
MsgBox "dkf: " & arr(1, i)
Next i
Range("A1").Resize(1, 5) = arr
End Sub
 

File đính kèm

  • Vi du.xls
    31 KB · Đọc: 9
Upvote 0
Web KT
Back
Top Bottom