xin cho hỏi có cách nào viết VBA để in trang hiện hành

Liên hệ QC

ongtrungducmx25

Thành viên gạo cội
Tham gia
5/2/07
Bài viết
2,077
Được thích
1,987
Nghề nghiệp
GV
xin cho hỏi có cách nào viết VBA để in trang hiện hành, em chỉ có code in trang 1-1 thôi, có cách nào khi mình dời con trỏ của chuột vào trang nào thì lúc đó xuất hiện UF1 để in ngay trang đó , vd: trang bảng tính của em có 3 trang em dời con trỏ vào trang 3 thì in trang đó ?
PHP:
Sub intranghienhanh()
    ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
        :=True
End Sub
 
Bạn thử nghiên cứu hàm của macro 4: GET.DOCUMENT(tham số)
Với tham số từ 49 đến 65
Tôi chưa thử (vì ko có máy in) nhưng tôi nghĩ là dc đấy!

... Bạn tham khảo bài này xem có giúp ích gì ko:
http://www.giaiphapexcel.com/forum/showthread.php?t=7843
ANH TUẤN
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
PHP:
Sub intranghienhanh()
    ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
        :=True
End Sub
code VBA này chỉ in được 1 trang số 1 , còn các trang khác in không được , các bạn có thể cho em code VBA để in tất cả các trang , cám ơn
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
lamho27 đã viết:
PHP:
Sub intranghienhanh()
    ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
        :=True
End Sub
code VBA này chỉ in được 1 trang số 1 , còn các trang khác in không được , các bạn có thể cho em code VBA để in tất cả các trang , cám ơn
Bỏ đoạn ...From:=1, To:=1... đi là dc mà...
ta còn lại
Mã:
[/COLOR][/COLOR][/COLOR][COLOR=#000000][COLOR=#0000bb]     ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate _
        :=True
ANH TUẤN
 
Upvote 0
lamho27 đã viết:
code VBA này chỉ in được 1 trang số 1 , còn các trang khác in không được , các bạn có thể cho em code VBA để in tất cả các trang , cám ơn
Code này hiện InputBox cho phép chọn số trang cần in:
ALL : in tất cả các trang
2 : in trang 2 (trang đầu)
2-8 : in trang 2 (trang đầu) đến trang 8 (trang cuối)
nếu nhập trang đầu, trang cuối lớn hơn tổng số trang sẽ chỉnh lại bằng tổng số trang.

Mã:
Sub PrintFormTo()
Dim n As Integer
n = ExecuteExcel4Macro("Get.Document(50)")
tb = "Sheet [" & ActiveSheet.Name & "] co tat ca " & n & " trang" & _
Chr(13) & Chr(13) & "Chon trang in:" & Chr(13) & _
" ALL : in tat ca" & Chr(13) & _
" 1-" & n & " : in tu trang 1 den trang " & n
sotrang = Trim(UCase(Application.InputBox(tb, "In trang", , , , , , 2)))
Select Case sotrang
Case "FALSE", ""
  Exit Sub
Case "ALL"
  ActiveWindow.SelectedSheets.PrintOut
Case Else
  dau = Val(sotrang)
  cuoi = Val(Mid(sotrang, InStr(sotrang, "-") + 1))
  If cuoi = 0 Then cuoi = dau
  If dau * cuoi = 0 Or cuoi < dau Then
    MsgBox "Nhap so trang " & sotrang & " sai !"
  Else
    If dau > n Then dau = n
    If cuoi > n Then cuoi = n
    ActiveWindow.SelectedSheets.PrintOut From:=dau, To:=cuoi
  End If
End Select
End Sub
 

File đính kèm

Upvote 0
vừa search, đã test rất ổn.
Mã:
Public Sub Print_Page_of_ActiveCell()
    Dim ActiveRow As Long, ActiveCol As Integer
    Dim iHPBs As Integer, iVPBs As Integer
    Dim iRow As Integer, iCol As Integer, iPage As Integer
     
    ActiveRow = ActiveCell.Row
    ActiveCol = ActiveCell.Column
    ActiveSheet.UsedRange
    If IsEmpty(ActiveCell.SpecialCells(xlCellTypeLastCell)) Then _
    ActiveCell.SpecialCells(xlCellTypeLastCell).FormulaR1C1 = " "
    If ActiveRow > ActiveCell.SpecialCells(xlCellTypeLastCell).Row Or _
    ActiveCol > ActiveCell.SpecialCells(xlCellTypeLastCell).Column Then _
    Exit Sub
     
    With ActiveSheet
        .PageSetup.Order = xlDownThenOver
        iHPBs = .HPageBreaks.Count
        iVPBs = .VPageBreaks.Count
        If iHPBs = 0 And iVPBs = 0 Then GoTo PrintSheet
Horizontal:
        For iRow = iHPBs To 1 Step -1
            If .HPageBreaks(iRow).Location.Row <= ActiveRow Then GoTo Vertical
        Next iRow
Vertical:
        For iCol = iVPBs To 1 Step -1
            If .VPageBreaks(iCol).Location.Column <= ActiveCol Then GoTo PrintSheet
        Next iCol
PrintSheet:
        iPage = (iRow + 1) + (iCol * (iHPBs + 1))
        .PrintOut From:=iPage, To:=iPage
         'MsgBox "Printing page " & iPage
    End With
    If ActiveCell.SpecialCells(xlCellTypeLastCell).FormulaR1C1 = " " Then _
    Selection.SpecialCells(xlCellTypeLastCell).ClearContents
End Sub
View attachment Print_Page_of_ActiveCell.xls
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom