• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Giúp đỡ về vấn đề in ấn trong VB6

Nơi trao đổi về VBA (Visual Basic for Application), lập trình cho ứng dụng Microsoft Office, AutoCAD...

Moderator: tungblt

User avatar
tanta
Thành viên tâm huyết
Thành viên tâm huyết
Posts: 302
Joined: Wed 12/11/2008 10:08 pm
Has thanked: 25 times
Been thanked: 19 times

Giúp đỡ về vấn đề in ấn trong VB6

Postby tanta » Thu 24/03/2011 10:44 am

Các pác cho em hỏi, có cách nào in sheet1 trong file book1.xls từ chương trình vb6 được ko.
Em mới chỉ làm được theo cách là open file book1.xls từ chương trình của mình, rồi chọn sheet1 để in từ Excel, hơi thủ công quá !



vananhpnvt
Posts: 1
Joined: Tue 15/03/2011 4:44 pm

Re: Giúp đỡ về vấn đề in ấn trong VB6

Postby vananhpnvt » Thu 24/03/2011 12:38 pm

Tôi có cái này có thể in được file .doc chắc cũng tương tự với cái bạn hỏi thôi:

Code: Select all

Dim MyDoc As Word.Application  'create a word variable
Set MyDoc = New Word.Application   'create new instance of words
With MyDoc
For Each CurrentPrinter In Printers
If CurrentPrinter.DeviceName = "apple" Then
MyDoc.ActivePrinter = CurrentPrinter
Exit For
End If
Next
.Documents.Open "C:\test.doc", , True
.Visible = True
.Activate
.ActiveDocument.PrintOut Copies:= 1  'Copies is optional
.ActiveDocument.Close   'Close The Document
.Quit
End With
Set MyDoc= Nothing     'free resource

User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

Re: Giúp đỡ về vấn đề in ấn trong VB6

Postby truongphu » Thu 24/03/2011 1:47 pm

vananhpnvt wrote:Tôi có cái này có thể in được file .doc chắc cũng tương tự với cái bạn hỏi thôi:

Đúng vậy, VBA muốn in đều gọi hàm PrintOut
Bạn đã dùng được Excel, hãy tạo biến đối tượng là WorkSheet
  1. Private Sub Command2_Click()
  2. Set wSht = aa.Worksheets(1)
  3. With wSht.PageSetup
  4. .PrintArea = "$Avb:$D"
  5. .PaperSize = xlPaperB4 ' = 12
  6. .PrintGridlines = True
  7. .CenterHeader = "In trong Excel"
  8. End With
  9. wSht.PrintOut
  10. End Sub
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

tuhuong
Thành viên chính thức
Thành viên chính thức
Posts: 49
Joined: Sat 12/04/2008 9:27 pm
Been thanked: 1 time

Re: Giúp đỡ về vấn đề in ấn trong VB6

Postby tuhuong » Thu 24/03/2011 2:20 pm

tanta wrote:Các pác cho em hỏi, có cách nào in sheet1 trong file book1.xls từ chương trình vb6 được ko.
Em mới chỉ làm được theo cách là open file book1.xls từ chương trình của mình, rồi chọn sheet1 để in từ Excel, hơi thủ công quá !


Bạn đã tạo được liên kết giữa VB6 và Excel thì công việc này sẽ rất đơn giản. Trước hết là tiến hành Record macro lệnh in trong Excel, sau đó biến đổi 1 chút và chuyển sang VB6 là OK!

User avatar
tanta
Thành viên tâm huyết
Thành viên tâm huyết
Posts: 302
Joined: Wed 12/11/2008 10:08 pm
Has thanked: 25 times
Been thanked: 19 times

Re: Giúp đỡ về vấn đề in ấn trong VB6

Postby tanta » Thu 24/03/2011 11:11 pm

truongphu wrote:
vananhpnvt wrote:Tôi có cái này có thể in được file .doc chắc cũng tương tự với cái bạn hỏi thôi:

Đúng vậy, VBA muốn in đều gọi hàm PrintOut
Bạn đã dùng được Excel, hãy tạo biến đối tượng là WorkSheet
  1. Private Sub Command2_Click()
  2. Set wSht = aa.Worksheets(1)
  3. With wSht.PageSetup
  4. .PrintArea = "$Avb:$D"
  5. .PaperSize = xlPaperB4 ' = 12
  6. .PrintGridlines = True
  7. .CenterHeader = "In trong Excel"
  8. End With
  9. wSht.PrintOut
  10. End Sub


Cảm ơn các pác đã giúp đỡ. Em áp dụng theo cách bác Phú nhưng kô được, báo lỗi Object Required mặc dù em đã Refender đầy đủ thư viện

User avatar
tanta
Thành viên tâm huyết
Thành viên tâm huyết
Posts: 302
Joined: Wed 12/11/2008 10:08 pm
Has thanked: 25 times
Been thanked: 19 times

Re: Giúp đỡ về vấn đề in ấn trong VB6

Postby tanta » Thu 24/03/2011 11:43 pm

Ah, em biết rồi, lỗi do chưa khai báo biến đầy đủ. Thanhkiu các pác em đã làm được.
Code hoàn chỉnh cho ai cần.

Code: Select all

Dim MyBook As Workbook
Dim Mysheet As Worksheet
Dim MyObj As New Excel.Application

Private Sub Command2_Click()
Set MyBook = MyObj.Workbooks.Open(App.Path & "\aa.xls")
Set Mysheet = MyBook.Worksheets("Sheet1")
With Mysheet.PageSetup
.PrintArea = "$A$1:$D$17"
.PaperSize = xlPaperA4 ' = 12
.PrintGridlines = True
.CenterHeader = "In trong Excel"
End With
Mysheet.PrintOut
End Sub

User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

Re: Giúp đỡ về vấn đề in ấn trong VB6

Postby truongphu » Fri 25/03/2011 8:46 am

truongphu wrote:hãy tạo biến đối tượng là WorkSheet

tanta wrote:Ah, em biết rồi, lỗi do chưa khai báo biến đầy đủ.

Tốt, bạn đã xử lý lỗi nhanh. Chủ yếu là do khai báo biến chứ không phải là Add References
Code sau không Add nhưng bảo đảm chạy trên máy bất kỳ (có cài office bất kể phiên bản)
  1. Private Sub Command1_Click()
  2.     Set Ex = CreateObject("Excel.Application")
  3.     Set aa = Ex.Workbooks.Open(App.Path & "\Book1.xls")
  4.     Set wSht = aa.Worksheets(1)
  5.     Const xlPaperA4 = 9
  6. With wSht.PageSetup
  7. .PrintArea = "$Avb:$D"
  8. .PaperSize = xlPaperA4
  9. .PrintGridlines = True
  10. .CenterHeader = "In trong Excel"
  11. End With
  12. wSht.PrintOut
  13. MsgBox "Ðã xong"
  14. aa.save: aa.Close: Set aa = Nothing
  15. Ex.quit: Set Ex = Nothing
  16. End Sub
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

User avatar
tanta
Thành viên tâm huyết
Thành viên tâm huyết
Posts: 302
Joined: Wed 12/11/2008 10:08 pm
Has thanked: 25 times
Been thanked: 19 times

Re: Giúp đỡ về vấn đề in ấn trong VB6

Postby tanta » Fri 25/03/2011 4:23 pm

Phải nói rằng code của pác Phú đúng là Supper mỏng và siêu ngắn. Các pác cho em hỏi thêm tý, nếu mình muốn in từ trang x đến trang y, và in kiểu một mặt hoặc hai mặt thì phải bắt thuộc tính nào.

User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

Re: Giúp đỡ về vấn đề in ấn trong VB6

Postby truongphu » Fri 25/03/2011 5:50 pm

tanta wrote:muốn in từ trang x đến trang y, và in kiểu một mặt hoặc hai mặt thì phải bắt thuộc tính nào.

không phải thuộc tính mà là đối số của hàm
Add References để IDE VB6 hổ trợ nhắc bài
có Sheet, gõ PrintOut vd: Mysheet.PrintOut rồi nhấn space một cái sẽ hiện ra các đối số hàm PrintOut.
Tùy phiên bản Office mà đối số nầy có thể khác hay thứ tự thay đổi

From: từ trang
To: đến trang

Riêng in 2 mặt, ManualDuplexPrint = true nhưng 2003 không hổ trợ
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

User avatar
tanta
Thành viên tâm huyết
Thành viên tâm huyết
Posts: 302
Joined: Wed 12/11/2008 10:08 pm
Has thanked: 25 times
Been thanked: 19 times

Re: Giúp đỡ về vấn đề in ấn trong VB6

Postby tanta » Sat 26/03/2011 9:15 pm

Em làm được rồi, cảm ơn pác Phú. Đúng là office 2003 kô hỗ trợ ManualDuplexPrint, chỉ có bản 2007, 2010 mới hỗ trợ.


Return to “Visual Basic for Application (VBA)”

Who is online

Users browsing this forum: No registered users and 5 guests