Em sưu tầm được trên mạng File xuất excel sang PDF. Sau khi xuất xong có thể dùng Web hoặc Phần mềm trung gian để gộp tất cả File PDF đó thành 1 File PDF duy nhất. Mong muốn của em là không dùng phần mềm trung gian mà xử lý bằng VBA để xuất ra 1 File duy nhất luôn ạ. Em xin cảm ơn
Nếu VBA không xử lý được xuất 1 FIle duy nhất mong các bác giúp em: Tự động tạo 1 sheet 1, coppy đúng định dạng các trang sang sheet vừa tạo, xuất PDF và xóa Sheet vừa tạo được không ạ
Nếu VBA không xử lý được xuất 1 FIle duy nhất mong các bác giúp em: Tự động thêm mới 1 sheet, coppy đúng định dạng các trang sang sheet vừa tạo, xuất PDF và xóa Sheet vừa tạo được không ạ
Sub PrintAllSheetsToPDF()
'SUBROUTINE: PrintAllSheetsToPDF
'DEVELOPER: Ryan Wells
'DESCRIPTION: Combine all your worksheets into one PDF
Dim strSheets() As String
Dim strfile As String
Dim sh As Worksheet
Dim icount As Integer
Dim myfile As Variant
'Save Chart Sheet names to an Array
For Each sh In ActiveWorkbook.Worksheets
If sh.Visible = xlSheetVisible Then
ReDim Preserve strSheets(icount)
strSheets(icount) = sh.Name
icount = icount + 1
End If
Next sh
If icount = 0 Then 'No charts found. Punch error
MsgBox "A PDF cannot be created because no sheets were found.", , "No Sheets Found"
Exit Sub
End If
'Prompt for save location
strfile = "Sheets" & "_" _
& Format(Now(), "yyyymmdd_hhmmss") _
& ".pdf"
strfile = ThisWorkbook.Path & "\" & strfile
myfile = Application.GetSaveAsFilename _
(InitialFileName:=strfile, _
FileFilter:="PDF Files (*.pdf), *.pdf", _
Title:="Select Folder and File Name to Save as PDF")
If myfile <> "False" Then 'save as PDF
ThisWorkbook.Sheets(strSheets).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
myfile, Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=True
Else
MsgBox "No File Selected. PDF will not be saved", vbOKOnly, "No File Selected"
End If
End Sub
Nhưng không vận dụng được vào file đính kèm, bác giúp em được không, cảm ơn bác
Có anh chị nào giúp được em không ạ. Hay là dùng phương án tạo file mới với nhiều sheets, sau khi xuất sang PDF thì xóa file hoặc coppy vào 1 sheet sau đó xuất dữ liệu từ sheet đó sang PDF. Mong các anh chị hướng dẫn, em xin cảm ơn
Có anh chị nào giúp được em không ạ. Hay là dùng phương án tạo file mới với nhiều sheets, sau khi xuất sang PDF thì xóa file hoặc coppy vào 1 sheet sau đó xuất dữ liệu từ sheet đó sang PDF. Mong các anh chị hướng dẫn, em xin cảm ơn
Bạn dùng code đơn giản này chỉnh sửa lại theo yêu cầu
Mã:
Sub Macro1()
Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select
'Sheet1, sheet2, sheet3 la ten cac sheet muon in hang loat
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ThisWorkbook.FullName, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
End Sub
Bạn dùng code đơn giản này chỉnh sửa lại theo yêu cầu
Mã:
Sub Macro1()
Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select
'Sheet1, sheet2, sheet3 la ten cac sheet muon in hang loat
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ThisWorkbook.FullName, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
End Sub
Em đang muốn cách xuất từ excel sang PDF chi trong 1 file PDF. Còn File đính kèm bài #1 đang xuất thành nhiều file PDF . Code của bác là sau khi đã đưa được ra các sheet thì Select All Sheet
cảm ơn anh rất rất nhiều ạ. Tuyệt vời luôn anh ạ
TIện thể cho em phiền xíu nữa, nếu lưu file mà trung tên, nếu không muốn xóa file cũ (không lưu đè) mà tạo thêm file mới thì có cách nào lưu giống mặc định excel là Name (1). pdf không anh
cảm ơn anh rất rất nhiều ạ. Tuyệt vời luôn anh ạ
TIện thể cho em phiền xíu nữa, nếu lưu file mà trung tên, nếu không muốn xóa file cũ (không lưu đè) mà tạo thêm file mới thì có cách nào lưu giống mặc định excel là Name (1). pdf không anh
Em đã test rất nhiều file của anh nhưng còn vướng 2 vấn đề để hoàn thiện. Đành phiền anh thêm vậy:
1. File excel đã Set Print_Area trong khổ giấy A4 nhưng xuất sang pdf lại là chế độ Letter nên bị tràn trang in. Em đã thử thêm
Mã:
TmpSh.PageSetup.PaperSize = xlPaperA4
nhưng không được.
2. Các hàng ở File excel đang ẩn thì sang Pdf bị lộ hết và chiều rộng của hàng bị thay đổi
Mong anh giúp đỡ, em xin cảm ơn!
Em đã test rất nhiều file của anh nhưng còn vướng 2 vấn đề để hoàn thiện. Đành phiền anh thêm vậy:
1. File excel đã Set Print_Area trong khổ giấy A4 nhưng xuất sang pdf lại là chế độ Letter nên bị tràn trang in. Em đã thử thêm
Mã:
TmpSh.PageSetup.PaperSize = xlPaperA4
nhưng không được.
2. Các hàng ở File excel đang ẩn thì sang Pdf bị lộ hết và chiều rộng của hàng bị thay đổi
Mong anh giúp đỡ, em xin cảm ơn!
Nếu là vấn đề trên file ở bài #1 tôi sẽ hỗ trợ tiếp. Còn là file khác là do bạn đặt câu hỏi không sát với yêu cầu, đưa file giả lập không đúng với thực tế.
Có khi chỉ thay đổi yêu cầu một chút thôi phải viết lại toàn bộ code . Đây là bài học đã được nói đi nói lại nhiều lần trên GPE.
Tạm biệt.
Nếu là vấn đề trên file ở bài #1 tôi sẽ hỗ trợ tiếp. Còn là file khác là do bạn đặt câu hỏi không sát với yêu cầu, đưa file giả lập không đúng với thực tế.
Có khi chỉ thay đổi yêu cầu một chút thôi phải viết lại toàn bộ code . Đây là bài học đã được nói đi nói lại nhiều lần trên GPE.
Tạm biệt.
Vâng, do em không lường hết khi trường hợp khi hỏi, thành thật xin lỗi. Em hiểu "Có khi chỉ thay đổi yêu cầu một chút thôi phải viết lại toàn bộ code" vì trong trường hợp trên rõ ràng phải thay đổi code (excel sẽ tự động Auot Fit Row Height khi paste). Em đã thử tạo file mới rồi move or copy sang (cái này giữ nguyên định dạng) nhưng không được do trong sheet chứa code VBA nên bị báo lỗi. Cảm ơn anh rất nhiều
Sao xuất bị lỗi dòng này Anh
Sub XuatPDF()
Dim maxR As Integer
Dim sFilename As String, Rs As Long, TmpSh As Worksheet
sFilename = Application.GetSaveAsFilename(Replace(ThisWorkbook.FullName, ".xlsm", ".pdf"), "PDF, *.pdf")
If sFilename = "False" Then Exit Sub
Application.ScreenUpdating = False
Set TmpSh = Sheets.Add
maxR = Sheet1.Range("F" & Rows.Count).End(xlUp).Value
Sheet1.[Print_Area].Copy
TmpSh.[A1].PasteSpecial xlPasteColumnWidths
For x = 1 To maxR
With Sheet1.Range("M2")
.Value = x
Call Spinner_getData
With Sheet1.[Print_Area]
.Copy TmpSh.Cells(Rs + 1, 1)
TmpSh.Cells(Rs + 1, 1).Resize(4, .Columns.Count).Value = .Resize(4).Value
Rs = Rs + .Rows.Count
TmpSh.HPageBreaks.Add TmpSh.Cells(Rs + 1, 1)
End With
End With
Next
TmpSh.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sFilename, Quality:=xlQualityStandard
Application.DisplayAlerts = False
TmpSh.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "Well Done!"
End Sub
bác giúp e sửa code này với, hiện nó chạy ra nhiều file pdf e cũng muốn nó chỉ xuất ra 1 file pdf thôi
Private Function xuatpdf(ByVal FileName As String) As String
Dim n As Long
Dim sFolder As String, sFile As String, sExt As String, sTmpFile As String
sTmpFile = FileName
With CreateObject("Scripting.FileSystemObject")
sExt = .GetExtensionName(FileName)
sFolder = .GetParentFolderName(FileName)
sFile = .GetBaseName(FileName)
Do While .FileExists(sTmpFile) = True
n = n + 1
sTmpFile = .BuildPath(sFolder, sFile & "(" & n & ")." & sExt)
Loop
xuatpdf = sTmpFile
End With
End Function
Sub pdf()
Dim filepdf As String
Dim a1, a2, i, j&
a1 = Sheet2.Range("M19").Value
a2 = Sheet2.Range("M20").Value
B = Sheet2.Range("N16").Value
m = 1
Do
m = m + 1
If a1 <= a2 Then
For i = a1 To a2
Sheet2.Range("L16").Value = (i - 1) * 10 + 1
filepdf = xuatpdf(ThisWorkbook.Path & "\" & i & ".pdf")
Sheet2.ExportAsFixedFormat xlTypePDF, filepdf
filepdf = xuatpdf(ThisWorkbook.Path & "\" & i + 2 & ".pdf")
Sheet3.ExportAsFixedFormat xlTypePDF, filepdf
Next
End If
If m > B Then Exit Do
Loop
Em sưu tầm được trên mạng File xuất excel sang PDF. Sau khi xuất xong có thể dùng Web hoặc Phần mềm trung gian để gộp tất cả File PDF đó thành 1 File PDF duy nhất. Mong muốn của em là không dùng phần mềm trung gian mà xử lý bằng VBA để xuất ra 1 File duy nhất luôn ạ. Em xin cảm ơn
Minh đã in tự động với code đó được rồi.nhưng hiện tại nó xuất 1 trang in ra 1 file pdf. nếu nối thì bất tiện nên mục đích của mình muốn xuất tất cả ra 1 file pdf thôi nên nhờ các bạn chỉnh hộ code. Cảm ơn các bạn rất nhiều!
Private Function xuatpdf(ByVal FileName As String) As String
Dim n As Long
Dim sFolder As String, sFile As String, sExt As String, sTmpFile As String
sTmpFile = FileName
With CreateObject("Scripting.FileSystemObject")
sExt = .GetExtensionName(FileName)
sFolder = .GetParentFolderName(FileName)
sFile = .GetBaseName(FileName)
Do While .FileExists(sTmpFile) = True
n = n + 1
sTmpFile = .BuildPath(sFolder, sFile & "(" & n & ")." & sExt)
Loop
xuatpdf = sTmpFile
End With
End Function
Sub pdf()
Dim filepdf As String
Dim a1, a2, i, j&
a1 = Sheet2.Range("M19").Value
a2 = Sheet2.Range("M20").Value
If a1 < a2 Then
For i = a1 To a2
Sheet2.Range("L16").Value = (i - 1) * 10 + 1
filepdf = xuatpdf(ThisWorkbook.Path & "\" & i & ".pdf")
Sheet2.ExportAsFixedFormat xlTypePDF, filepdf
Minh đã in tự động với code đó được rồi.nhưng hiện tại nó xuất 1 trang in ra 1 file pdf. nếu nối thì bất tiện nên mục đích của mình muốn xuất tất cả ra 1 file pdf thôi nên nhờ các bạn chỉnh hộ code. Cảm ơn các bạn rất nhiều!
Private Function xuatpdf(ByVal FileName As String) As String
Dim n As Long
Dim sFolder As String, sFile As String, sExt As String, sTmpFile As String
sTmpFile = FileName
With CreateObject("Scripting.FileSystemObject")
sExt = .GetExtensionName(FileName)
sFolder = .GetParentFolderName(FileName)
sFile = .GetBaseName(FileName)
Do While .FileExists(sTmpFile) = True
n = n + 1
sTmpFile = .BuildPath(sFolder, sFile & "(" & n & ")." & sExt)
Loop
xuatpdf = sTmpFile
End With
End Function
Sub pdf()
Dim filepdf As String
Dim a1, a2, i, j&
a1 = Sheet2.Range("M19").Value
a2 = Sheet2.Range("M20").Value
If a1 < a2 Then
For i = a1 To a2
Sheet2.Range("L16").Value = (i - 1) * 10 + 1
filepdf = xuatpdf(ThisWorkbook.Path & "\" & i & ".pdf")
Sheet2.ExportAsFixedFormat xlTypePDF, filepdf
Bạn dùng code đơn giản này chỉnh sửa lại theo yêu cầu
Mã:
Sub Macro1()
Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select
'Sheet1, sheet2, sheet3 la ten cac sheet muon in hang loat
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ThisWorkbook.FullName, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
End Sub
Bạn kiểm tra tên sheet trong file của bạn có tên Sheet1, Sheet2, Sheet3 không hay là tên khác, nếu là tên khác thì thay tên tương ứng vào code này. View attachment 247507
anh ơi cho e nhớ vs ạ. e, đang bị vướng là e đang làm lại file HSCLCTHANOI để xuất sheet 3 vs sheet 4 với chỉ số chạy ra pdf thành 1 file mà e chưa làm được ạ, e có xem mấy file vs mấy code của các anh chị mà e chưa làm được anh, hướng dẫn thêm cho e vs ạ, kiểu xuất pdf như file lylichcoc ạ
e cảm ơn anh ạ
anh ơi cho e nhớ vs ạ. e, đang bị vướng là e đang làm lại file HSCLCTHANOI để xuất sheet 3 vs sheet 4 với chỉ số chạy ra pdf thành 1 file mà e chưa làm được ạ, e có xem mấy file vs mấy code của các anh chị mà e chưa làm được anh, hướng dẫn thêm cho e vs ạ, kiểu xuất pdf như file lylichcoc ạ
e cảm ơn anh ạ
Sub InHangLoat()
Dim I As Integer, m As Integer
Dim TenCoc As String, lylichcoc As String
m = Range("DT.NK!B" & Cells.Rows.Count).End(xlUp).Row
For I = 13 To m
TenCoc = Range("DT.NK!B" & I).FormulaR1C1
With Sheets("2. NK")
.Range("R2").FormulaR1C1 = TenCoc
End With
lylichcoc = "lylichcoc" & I & ".pdf"
ThisWorkbook.Sheets(Array("2. NK", "3. Dia Chat", "4. PTDBT")).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"D:\" & lylichcoc, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
Next I
End Sub
code chạy file lylichcoc
Chào các bác, các bác giúp em vấn đề này với ạ.
Em muốn xuất hàng loạt file excel ở sheet "PYCK95" ra file pdf rời rạc, dữ liệu ở sheet "PYCK95" được lấy từ sheet "ML" sang. File pdf sẽ lưu dưới định dạng "Cell C7".pdf
Bác nào biết chỉ giáo em với ạ. Em xin cảm ơn.