Cám ơn bác đã gợi ý, để em thử đưa vô code xem saoỞ thư mục chứa file(s) đó, click phải chuột vào file(s), chọn Print. Kết quả: Mở, in, tắt.
Để in 1 file bất kỳ, bạn có thể dùng hàm API ShellExecute để thực hiệnCám ơn bác đã gợi ý, để em thử đưa vô code xem sao
Cám ơn anh, Liên quan đến API chắc em chịu thua thôi,Để in 1 file bất kỳ, bạn có thể dùng hàm API ShellExecute để thực hiện
Thật ra bạn có thể tìm trên google với từ khóa Excel VBA code to print any file ---> có cả đống
Lưu ý rằng nếu dùng API thì phải để ý xem phiên bản office trên máy là 32 hay 64 rồi tùy biến cho phù hợp. Ngoài ra, theo mặc định thì hàm API trên chỉ làm việc với tên file không dấu, trong trường hợp file là tiếng Việt có dấu, lại phải tùy biến tiếp
Bạn chưa làm mà đã thua sao?Cám ơn anh, Liên quan đến API chắc em chịu thua thôi,
Nếu có thể anh cho em xin 1 Ví dụ nhé.
Em thử hàm sau thấy chạy Ok ... Nhưng VD: ta muốn In 1 Sheet hay 1 vùng nào đó trong Sheet thì code viết sao được AnhBạn chưa làm mà đã thua sao?
Thật ra thì bạn đâu cần biết API nó khó dễ thế nào đâu. Đường link tôi cho ở trên, bạn cứ mở xem thử, người ta viết sẵn cả rồi, bạn chỉ việc áp dụng bằng cách copy code cho vào file của bạn rồi sửa đường dẫn file cho phù hợp là xong mà
#If VBA7 Then
Private Declare PtrSafe Function ShellExecute _
Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As LongPtr, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) _
As LongPtr
#Else
Private Declare Function ShellExecute _
Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) _
As Long
#End If
Private Const SW_HIDE = 0
Sub FilePrint(ByVal strFilePath As String)
Dim retVal As Long
retVal = ShellExecute(0, "Print", strFilePath, 0, 0, SW_HIDE)
If retVal < 32 Then
'// there are Error codes for this..left out
MsgBox "An Error occured...could not print"
End If
End Sub
Sub Main()
Dim FilePath As String
FilePath = ThisWorkbook.Path & "\Print.txt"
Call FilePrint(FilePath)
End Sub
Thế thì tôi không biết!Em thử hàm sau thấy chạy Ok ... Nhưng VD: ta muốn In 1 Sheet hay 1 vùng nào đó trong Sheet thì code viết sao được Anh
Em mới thử file Excel rồi nó đơ cứng luôn không chạy nổi ... hồi nảy thử File *.txt nó nhẹ in cái ok ngay .... vậy cách tốt nhất là dòng màu đỏThế thì tôi không biết!
Tôi nghĩ đây là code tổng quát để in file bất kỳ, giống như động tác click phải vào file (trong cửa sổ Explore) rồi chọn Print. Vậy nên để in cụ thể file Excel, cụ thể tại sheet nào đó chắc không gì tốt hơn là mở file, chọn sheet rồi in thôi
Cũng với file excel đó, bạn làm bằng tay thử xem. Tức là click phải vào tên file rồi chọn Print. Nếu nó cũng "đơ" có nghĩa là không phải lỗi do code (và ngược lại)Em mới thử file Excel rồi nó đơ cứng luôn không chạy nổi
thấy chạy tốt đó anh vậy là code đó có vấn đề gì chăng ... chiều rảnh em coi lại xem saoCũng với file excel đó, bạn làm bằng tay thử xem. Tức là click phải vào tên file rồi chọn Print. Nếu nó cũng "đơ" có nghĩa là không phải lỗi do code (và ngược lại)