Tôi muốn hỏi về câu 21 chương 9: khi ấn nút in phiếu lương, vba báo lỗi debug và hiện bôi vàng câu lệnh:
xSht.ExportAsFixedFormat Type:=xlTypePDF, Filename:=xFile, Quality:=xlQualityStandard
Làm thế nào để sửa lỗi này? Cám ơn
ExportAsFixedFormat Type:=xlTypePDF, fileName:= xFile&".Pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
Chào bạn bạn thử với cú pháp sau nhé.
Vẫn không chạy được. Máy báo lỗi: Compile error: Syntax error
Chào bạn bạn gửi file của bạn lên giúp gitiho được không?
Chào bạn bạn đẩy lên google drive rồi cho gitiho xin link nhé.
https://drive.google.com/file/d/1Qsv7...
Làm ơn kiểm tra giúp link trên. Cám ơn
Chào bạn file bạn gửi đâu có code đâu
Xin lỗi, bạn kiểm tra lại cái sau có được không https://drive.google.com/file/d/1ZEZn...
Chào bạn file có code là file chứa định dạng là *.xlsm, *.xlsb hoặc *.xls
File của tôi là .xlsx. Tôi dùng Office 365
Chào bạn xlsx không lưu được code bạn nhé.
Tôi đã lưu file lại .xls https://drive.google.com/file/d/16VFr...
Chào bạn bạn dán vào sub in nhé
Sub In_PhieuLuong()
Dim DongBD As Long, DongCuoi As Long, i As Long
DongBD = 10
DongCuoi = Sheets("BangLuong").Range("B" & Rows.Count).End(xlUp).Row
Dim xSht As Worksheet
Dim xFileDlg As Variant, xFolder As Variant
Dim xFile As String
Set xSht = ActiveSheet
Set xFileDlg = Application.FileDialog(msoFileDialogFolderPicker)
If xFileDlg.Show = True Then
xFolder = xFileDlg.SelectedItems(1)
Else
MsgBox "You must specify a folder to save the PDF into." & vbCrLf & vbCrLf & "Press OK to exit this macro.", vbCritical, "Must Specify Destination Folder"
Exit Sub
End If
Application.ScreenUpdating = False
For i = DongBD To DongCuoi
If Sheets("BangLuong").Range("B" & i) <> "" Then
xSht.Range("E7").Value = Sheets("BangLuong").Range("B" & i).Value
End If
xFile = xFolder + "\" + xSht.Range("E7").Value + ".pdf"
'Check if file already exist
If Len(Dir(xFile)) > 0 Then
xYesorNo = MsgBox(xFile & " already exists." & vbCrLf & vbCrLf & "Do you want to overwrite it?", _
vbYesNo + vbQuestion, "File Exists")
On Error Resume Next
If xYesorNo = vbYes Then
Kill xFile
Else
MsgBox "if you don't overwrite the existing PDF, I can't continue." _
& vbCrLf & vbCrLf & "Press OK to exit this macro.", vbCritical, "Exiting Macro"
Exit Sub
End If
If Err.Number <> 0 Then
MsgBox "Unable to delete existing file. Please make sure the file is not open or write protected." _
& vbCrLf & vbCrLf & "Press OK to exit this macro.", vbCritical, "Unable to Delete File"
Exit Sub
End If
End If
Set xUsedRng = xSht.Range("B2:H42")
If Application.WorksheetFunction.CountA(xUsedRng.Cells) <> 0 Then
'Save as PDF file
xSht.ExportAsFixedFormat Type:=xlTypePDF, Filename:=xFile, Quality:=xlQualityStandard
Else
MsgBox "The active worksheet cannot be blank"
Exit Sub
End If
Next i
Application.ScreenUpdating = True
MsgBox "Well Done!"
End Sub
Tôi xuất được phiếu lương 1 loạt ra pdf, nhưng mỗi phiếu đều in ra 7 trang, có cả nội dung viết code VBA và 1 phần sheet bảng lương và trang trắng đan xen.
Chào bạn bạn đặt lại vùng in và thử lại nhé.
thầy cho em hỏi nếu Phiếu lương mỗi công ty lập ra mõi khác.
Ví dụ: phiếu lập theo chiều ngang và không có nội dung về thử việc thì liệu Macro này có áp dụng được không ạ ?
Chào bạn bạn chỉ cần thay đổi vùng in là xong nhé.