เพื่อมุ่งให้เกิดคุณภาพจากการอบรมสูงสุด Excel Expert Training ให้การอบรม Excel กลุ่มเล็กๆ ไม่เกิน 6 คนทุกคนสามารถเรียนรู้ Excel อย่างใกล้ชิด จะมาคนเดียวหรือมาเป็นกลุ่มแล้วนัดวันอบรมแบบส่วนตัวก็ได้ ผู้เข้าอบรมทุกคนสามารถติดตามเนื้อหาที่อบรมได้อย่างชัดเจนจากจอภาพด้านหน้าของตัวเอง
Page 1 of 2 12 LastLast
Results 1 to 10 of 11

Thread: การ print หลาย label ใน 1 หน้า

  1. #1
    htawatchai
    Guest

    การ print หลาย label ใน 1 หน้า

    การ print หลาย label ใน 1 หน้า สามารถใช้ VBA ได้อย่างไรครับ
    โดยต้องการพิมพ์ Label 8 ใบต่อ 1 หน้า
    ซึ่งผมลองใช้ macro บันทึกดังนี้ครับ

    Range("A1:E7").Select
    Selection.Copy
    Range("G1").Select
    ActiveSheet.Paste

    แต่ถ้าต้องการเลือกจำนวน Label ที่จะพิมพ์เป็น 3 , 4 , 5 ใบ
    ให้พิมพ์เรียงต่อเนื่องกันจะต้องแก้ไข code อย่างไรครับ

  2. #2
    vajra
    Guest
    ลองใช้วิธีนี้ สร้าง Label แล้วค่อยเขียน Code ควบคุมการพิมพ์
    Paste Picture Link

  3. #3
    htawatchai
    Guest
    Quote Originally Posted by vajra View Post
    ลองใช้วิธีนี้ สร้าง Label แล้วค่อยเขียน Code ควบคุมการพิมพ์
    Paste Picture Link
    ผมได้ลองทำตามคำแนะนำแล้วครับ โดยสร้างปุ่ม command 1
    ลอก Code จากการบันทึก macro ได้ code ดังนี้ครับ

    Private Sub CommandButton1_Click()
    Sheets("Sheet1").Select
    Range("A1:E7").Select
    Selection.Copy
    Sheets("Sheet2").Pictures.Paste(Link:=True).Select
    End Sub

    เมื่อกดปุ่มก็จะได้ label ที่ sheet 2 ครับ
    แต่ถ้ากดปุ่ม 2 หรือ 3 ครั้ง ก็จะมี label ตามจำนวนที่กดปุ่มแต่จะอยู่ซ้อนกันที่ตำแหน่งเดิมครับ
    และสังเกตุว่าจะขึ้นกับตำแหน่ง cursor ใน sheet 2 ด้วยครับ
    ถ้าจะให้ label พิมพ์ แถวละ 2 ชิ้น ต่อเนื่องกันจะต้องแก้ไขอย่างไรตรับ
    ขอบคุณล่วงหน้าครับ
    ธวัชชัย

  4. #4
    vajra
    Guest
    Attachment 7384
    สร้าง Link Picture ทั้งหมดใว้ก่อน (8 รูป)
    แล้วเขียน Code ควบคุมการแสดง Label
    Code:
    Private Sub CommandButton1_Click()
    For Each i In ActiveSheet.DrawingObjects
       If TypeName(i) = "Picture" Then n = n + 1
               If n > [q3].Value Then
               i.Visible = False
               Else
                i.Visible = True
       End If
    Next i
    ActiveSheet.PrintPreview
    End Sub

  5. #5
    htawatchai
    Guest
    ขอบคุณมากครับที่แนะนำ แต่ติดที่จะต้องพิมพ์มากกว่า 10 ใบ
    ผมลองค้นใน forum และปรับปรุง code ใหม่เป็น
    Dim col, ro As Integer
    col = Int([PrintNum] / 2) - 1
    ro = Int(([PrintNum] - 1) / 2)
    '
    Sheets("Sheet1").Select
    Range("A1:E6").Select
    Selection.Copy
    Sheets("Sheet2").Select
    'next row no.label>2
    For i = 0 To [ro] Step 1
    Range("a1").Offset(i, 0).Select
    ActiveSheet.Pictures.Paste(Link:=True).Select
    Next i
    'Next column
    For j = 0 To [col] Step 1
    If [col] < 0 Then k = o Else k = 1
    Range("a1").Offset(j, k).Select
    ActiveSheet.Pictures.Paste(Link:=True).Select
    Next j
    End Sub

    ก็สามารถพิมพ์ได้ครับ แต่ยังติดปัญหาที่เวลา preview แล้วจะช้า
    และอีกประการหนึ่ง ถ้ามีข้อมูลที่จะพิมพ์อีกรายการหนึ่งต่อกันไปจะปรับปรุงอย่างไรครับ
    ขอบคุณครับ

  6. #6
    สมเกียรติ
    Guest
    Application.ScreenUpdating = False
    รหัสที่ต้องการปิดไม่ให้เห็นการทำงาน
    รหัสที่ต้องการปิดไม่ให้เห็นการทำงาน
    รหัสที่ต้องการปิดไม่ให้เห็นการทำงาน
    Application.ScreenUpdating = True

    รหัสนี้จะช่วยทำให้ทำงานเร็วขึ้นครับ เพราะจอจะไม่เห็นการเปลี่ยนแปลงใดๆโดยเฉพาะการไปที่ชีทแล้ว copy > paste

  7. #7
    rotcsaa
    Guest
    ให้แก้โค้ดจาก
    Sheets("Sheet1").Select
    Range("A1:E6").Select
    Selection.Copy

    ไปเป็น
    Code:
    Sheets("Sheet1").Range("A1:E6").Copy
    จะช่วยให้แมโครทำงานเร็วขึ้น เนื่องจากเรากำลังคัดลอกเซลล์ A1:E6 ที่อยู่ในเวิร์กชีต Sheet1 และ Copy เป็น Method ที่สามารถทำงานได้ทั้ง Range และ Worksheet

  8. #8
    htawatchai
    Guest
    ขอบคุณครับ ทำงานเร็วขึ้นครับ
    เมื่อแก้ไข Code เป็น Sheets("Sheet1").Range("A1:E6").Copy
    แต่การ print preview ยังช้ามากอยู่ครับ (ขึ้น Not responding ชั่วขณะหนึ่งครับ)

    อาจารย์กรุณาอธิบายวิธีการใช้ code ที่แนะนำ (ถ้ามีตัวอย่างประกอบก็ดีครับ)
    เพื่อจะได้ไปประยุกต์ใช้ เนื่องจากยังไม่เข้าใจจริงๆครับ

    Application.ScreenUpdating = False
    รหัสที่ต้องการปิดไม่ให้เห็นการทำงาน
    รหัสที่ต้องการปิดไม่ให้เห็นการทำงาน
    รหัสที่ต้องการปิดไม่ให้เห็นการทำงาน
    Application.ScreenUpdating = True

    หลายโครงงาน ผมได้นำตัวอย่างไปประยุกต์ใช้ได้ผลดีครับ
    ขอบพระคุณครับ
    ธวัชชัย

  9. #9
    rotcsaa
    Guest
    ถ้าเป็นอ้อม อ้อมจะใช้ Mail Merge พิมพ์ป้ายผนึก โดยใช้ MS Excel เก็บข้อมูลในรูปฐานข้อมูลแล้วใช้ MS Word เชื่อมต่อเข้ามาดึงข้อมูลไปพิมพ์ป้ายผนึก

    บังเอิญไม่เห็นตารางเก็บข้อมูลจึงบอกไม่ได้ว่าจะทำอย่างไร

  10. #10
    สมเกียรติ
    Guest
    Quote Originally Posted by htawatchai View Post
    Application.ScreenUpdating = False
    รหัสที่ต้องการปิดไม่ให้เห็นการทำงาน
    รหัสที่ต้องการปิดไม่ให้เห็นการทำงาน
    รหัสที่ต้องการปิดไม่ให้เห็นการทำงาน
    Application.ScreenUpdating = True
    ไม่ทราบจะอธิบายมากขึ้นกว่าเดิมได้อย่างไรครับ น่าจะลองแล้วก็จะรู้เอง

Similar Threads

  1. Replies: 3
    Last Post: 11 Aug 2010, 10:39
  2. Replies: 13
    Last Post: 16 Jun 2010, 13:55
  3. Print & Print Preview ออกค่าเดิมค่ะ
    By sirikulc in forum Excel Expert Forum Library 2012 - 2007
    Replies: 1
    Last Post: 5 May 2010, 10:34
  4. pivot table หลาย Col หลาย Row
    By jantana in forum Excel Expert Forum Library 2012 - 2007
    Replies: 0
    Last Post: 21 Mar 2008, 11:56
  5. กำหนด Label ให้กับ Chart ด้วย VBA
    By singster in forum Excel Expert Forum Library 2012 - 2007
    Replies: 6
    Last Post: 2 Nov 2007, 13:40

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •