Anh nào giúp em với được không ạ! trả là em đã xuất tự động lưu được PDF nhưng có lúc em in 1 phiếu 2 lần cùng tên thì toàn phiếu sau đè mất phiếu trước ! vậy có cách nào để phiếu sau có (1) hoặc (2) được không ạ. hay 1,2,3,4,5,6... cũng đc chỉ cần giữ được tên là đc ạ! Dưới là code của em để xuất File PDF ! mong anh chị giúp đỡ
filepdf = ThisWorkbook.Path & "\" & Range("G10") & ".pdf"
ActiveSheet.ExportAsFixedFormat xlTypePDF, filepdf
Anh nào giúp em với được không ạ! trả là em đã xuất tự động lưu được PDF nhưng có lúc em in 1 phiếu 2 lần cùng tên thì toàn phiếu sau đè mất phiếu trước ! vậy có cách nào để phiếu sau có (1) hoặc (2) được không ạ. hay 1,2,3,4,5,6... cũng đc chỉ cần giữ được tên là đc ạ! Dưới là code của em để xuất File PDF ! mong anh chị giúp đỡ
filepdf = ThisWorkbook.Path & "\" & Range("G10") & ".pdf"
ActiveSheet.ExportAsFixedFormat xlTypePDF, filepdf
Anh nào giúp em với được không ạ! trả là em đã xuất tự động lưu được PDF nhưng có lúc em in 1 phiếu 2 lần cùng tên thì toàn phiếu sau đè mất phiếu trước ! vậy có cách nào để phiếu sau có (1) hoặc (2) được không ạ. hay 1,2,3,4,5,6... cũng đc chỉ cần giữ được tên là đc ạ! Dưới là code của em để xuất File PDF ! mong anh chị giúp đỡ
filepdf = ThisWorkbook.Path & "\" & Range("G10") & ".pdf"
ActiveSheet.ExportAsFixedFormat xlTypePDF, filepdf
Bạn viết 1 hàm tự tạo để làm việc này là được rồi. Ví dụ:
- Bạn có đường dẫn file ThisWorkbook.Path & "\" & Range("G10") & ".pdf"
- Bạn không biết đường dẫn này có tồn tại hay không
- Vậy bạn viết 1 hàm tự tạo, chẳng hạn tên là CreateSaveFileName có tác dụng kiểm tra đường dẫn trên, nếu chưa tồn tại thì để nguyên, tồn tại rồi thì bằng cách gì đó thêm các hậu tố (1)... (2)... (3) vào đến khi nào tạo ra được đường dẫn khả dụng thì thôi
Mã:
Private Function CreateSaveFileName(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
CreateSaveFileName = sTmpFile
End With
End Function
Giờ áp dụng bạn chỉ cần thế này:
Mã:
Dim filepdf as string
filepdf = CreateSaveFileName(ThisWorkbook.Path & "\" & Range("G10") & ".pdf")
ActiveSheet.ExportAsFixedFormat xlTypePDF, filepdf
Vậy là xong thôi!
---------------------- (code viết sơ qua, không biết có xuất hiện lỗi tào lao nào không? Mời kiểm tra thử nhé)
Bạn viết 1 hàm tự tạo để làm việc này là được rồi. Ví dụ:
- Bạn có đường dẫn file ThisWorkbook.Path & "\" & Range("G10") & ".pdf"
- Bạn không biết đường dẫn này có tồn tại hay không
- Vậy bạn viết 1 hàm tự tạo, chẳng hạn tên là CreateSaveFileName có tác dụng kiểm tra đường dẫn trên, nếu chưa tồn tại thì để nguyên, tồn tại rồi thì bằng cách gì đó thêm các hậu tố (1)... (2)... (3) vào đến khi nào tạo ra được đường dẫn khả dụng thì thôi
Mã:
Private Function CreateSaveFileName(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
CreateSaveFileName = sTmpFile
End With
End Function
Giờ áp dụng bạn chỉ cần thế này:
Mã:
Dim filepdf as string
filepdf = CreateSaveFileName(ThisWorkbook.Path & "\" & Range("G10") & ".pdf")
ActiveSheet.ExportAsFixedFormat xlTypePDF, filepdf
Vậy là xong thôi!
---------------------- (code viết sơ qua, không biết có xuất hiện lỗi tào lao nào không? Mời kiểm tra thử nhé)
Giờ còn đúng 1 việc cần nhờ ! là thêm giờ và phút thực tế vào tên file để không bị trùng nhau!
filepdf = ThisWorkbook.Path & "\" & Range("G10") & ".pdf"
ActiveSheet.ExportAsFixedFormat xlTypePDF, filepdf
Giờ còn đúng 1 việc cần nhờ ! là thêm giờ và phút thực tế vào tên file để không bị trùng nhau!
filepdf = ThisWorkbook.Path & "\" & Range("G10") & ".pdf"
ActiveSheet.ExportAsFixedFormat xlTypePDF, filepdf
- Tôi không quan trọng bạn trả lời nhanh chậm
- Tôi không quan trọng việc xưng hô hay văn chương cầu kỳ
...... vân.. vân...
Tôi chỉ quan tâm đến kỹ thuật nên cái tôi cần là mọi thứ phải RÕ RÀNG. Một câu "không ổn" thì giúp gì được cho bạn? Nếu code bị lỗi hoặc ra kết quả sai thì bạn phải cho tôi biết nó lỗi chỗ nào? Sai chỗ nào? Kết quả nếu đúng thì phải ra làm sao?...
Phản hồi ý kiến rất quan trọng! Bạn cần chú ý điểm này.
Em xin phép nhờ thêm 1 ý ngoài lề. Xin nhờ các anh chị trong diễn dàn chỉ dùm!
Em muốn khóa toàn bộ các kiểu in của excel sẵn có như (ctrl+p) bấm trên bouuton....
mà chỉ sử dụng nút lệnh VBA mới in được thì phải làm cách nào.
Mong các anh giúp đỡ.
- Tôi không quan trọng bạn trả lời nhanh chậm
- Tôi không quan trọng việc xưng hô hay văn chương cầu kỳ
...... vân.. vân...
Tôi chỉ quan tâm đến kỹ thuật nên cái tôi cần là mọi thứ phải RÕ RÀNG. Một câu "không ổn" thì giúp gì được cho bạn? Nếu code bị lỗi hoặc ra kết quả sai thì bạn phải cho tôi biết nó lỗi chỗ nào? Sai chỗ nào? Kết quả nếu đúng thì phải ra làm sao?...
Phản hồi ý kiến rất quan trọng! Bạn cần chú ý điểm này.
em đã tìm hiểu điều chỉnh cóp nhặt từ nhiều anh chị trong diễn dàn
filepdf = "C:\Users" & "\" & Range("i4") & "-" & Minute(Now()) & Second(Now())
ActiveSheet.ExportAsFixedFormat xlTypePDF, filepdf
Đây là đoạn mã em sử dụng và thấy chạy ổn định! Chỉ có điều việc copy file pdf đó sang chỗ chỗ khác là không làm đc! (Vì e chưa cần phải di chuyển file nên cũng ko gây khó khăn cho em)
hi cảm ơn anh đã nhiệt tình giúp đỡ. và em còn muốn khóa các kiểu in mặc định của excel để chỉ cho phép in bằng nút lệnh VBA !
Anh có cách gì không mách nước hộ e với ạ!
em đã tìm hiểu điều chỉnh cóp nhặt từ nhiều anh chị trong diễn dàn
filepdf = "C:\Users" & "\" & Range("i4") & "-" & Minute(Now()) & Second(Now())
ActiveSheet.ExportAsFixedFormat xlTypePDF, filepdf
Đây là đoạn mã em sử dụng và thấy chạy ổn định!
Bạn dùng số giây gán vào tên file để tạo sự phân biệt, vậy trong trường hợp bạn bấm lưu 2 phát liên tiếp trong cùng 1 thời điểm (tức bấm khi số giây chưa kịp nhảy sang số mới) thì tên file vẫn... trùng. Đương nhiên xác xuất xảy ra tình huống này rất thấp nhưng không phải là không thể
Bạn dùng số giây gán vào tên file để tạo sự phân biệt, vậy trong trường hợp bạn bấm lưu 2 phát liên tiếp trong cùng 1 thời điểm (tức bấm khi số giây chưa kịp nhảy sang số mới) thì tên file vẫn... trùng. Đương nhiên xác xuất xảy ra tình huống này rất thấp nhưng không phải là không thể
Tôi chỉ có cách như ở bài 3 và tôi cho là ổn nhất. Tuy nhiên nếu bạn thấy cách của bạn ổn hơn thì cứ dùng, không có vấn đề gì cả
Vì do mục đích sử dụng của em chỉ cần xem được in lần 2 và lần 1 nội dung có khác nhau không nên đành dùng thời gian để đánh dấu! hi không bị chèn mất file cũ là ok rùi
Mà đoạn code của 1 nút của em quá dài rùi
A có cách nòa chỉ cho phép file excel đó được in bằng nút Pint tự tạo không? Đại ý là chỉ ấn nút đó mới in được! do e còn đặt 1 số code nhập liệu nên muốn khóa in của excel. tránh trường hợp tự do in phiếu mà không có dữ liệu nhập
dùng sự kiện Before Print sợ không đc vì em vẫn cần in! code:
Private Sub workbook_BeforePrint(Cancel As Boolean)
Cancel = True
MsgBox "Sorry, you cannot Print from this workbook", vbInformation
End Sub
Bạn dùng số giây gán vào tên file để tạo sự phân biệt, vậy trong trường hợp bạn bấm lưu 2 phát liên tiếp trong cùng 1 thời điểm (tức bấm khi số giây chưa kịp nhảy sang số mới) thì tên file vẫn... trùng. Đương nhiên xác xuất xảy ra tình huống này rất thấp nhưng không phải là không thể
Tôi chỉ có cách như ở bài 3 và tôi cho là ổn nhất. Tuy nhiên nếu bạn thấy cách của bạn ổn hơn thì cứ dùng, không có vấn đề gì cả
Anh ndu, Em đã thử tạo 1 vòng lặp với 10 lần lặp, nhưng nó vẫn không trùng tên File. 10 lần lặp, nhưng File nó tạo được có 3,4 File à.Vẫn đúng số giây, nó mới tạo File.
Anh ndu, Em đã thử tạo 1 vòng lặp với 10 lần lặp, nhưng nó vẫn không trùng tên File. 10 lần lặp, nhưng File nó tạo được có 3,4 File à.Vẫn đúng số giây, nó mới tạo File.
Vậy trong trường hợp máy bạn cực mạnh, save file trong nháy mắt thì xác xuất này sẽ cao ngay!
Lập trình phải nói đến tính chính xác, không thể trong chờ chuyện hên xui!
Mọi người ơi giúp em với sao em làm theo câu lệnh này không ra vậy. nó chạy không được không à
Em muốn thêm ngày tháng vào câu lệnh này nè:
filepdf = ThisWorkbook.Path & "\" & Range("G10") & ".pdf"
ActiveSheet.ExportAsFixedFormat xlTypePDF, filepdf
Mọi người ơi giúp em với sao em làm theo câu lệnh này không ra vậy. nó chạy không được không à
Em muốn thêm ngày tháng vào câu lệnh này nè:
filepdf = ThisWorkbook.Path & "\" & Range("G10") & ".pdf"
ActiveSheet.ExportAsFixedFormat xlTypePDF, filepdf