:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

จะทำการ copy sheet เปลี่ยนชื่อตามข้อมูลครับ แต่แสดงไม่ตรงครับรบกวนด้วยครับ

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
preseed
Member
Member
Posts: 10
Joined: Thu Dec 08, 2016 7:52 am

จะทำการ copy sheet เปลี่ยนชื่อตามข้อมูลครับ แต่แสดงไม่ตรงครับรบกวนด้วยครับ

#1

Post by preseed »

สวัสดีครับ ผมอยากจะรบกวนช่วยดู code ที่ผมต้องการคือ

ในไฟล์งาน คอลัมน์ E จะเป็นตัวรหัสโดยที่ พอรันmacro แล้วจะให้นำรหัสไปใส่ในช่อง B4 ของ Sheet Temp
แล้วทำการcopy Sheet Temp ไปต่อท้าย แล้วเปลี่ยนชื่อไปตามรหัส ของช่องB4ในSheetTemp
แล้วทำวนไปจนสุดข้อมูลใน คอลัมน์ E ครับ

แต่ติดปัญหาว่า มีการแสดงผลไม่ตรงมีการกระโดดข้ามของข้อมูล รบกวนช่วยดูและแนะนำทีครับ


ขอบคุณครับ

Code ครับ

Code: Select all

Sub test()
    Dim i As Long
    Dim r As Range
       On Error Resume Next
    With Worksheets("Data")
        Set r = .Range("E2", .Range("E65536").End(xlUp))
    End With
    For i = 1 To r.Count
        
        If i > 1 Then
        Sheets("Data").Select
        Cells((2 + i), 5).Select
        Selection.Copy
        Sheets("Temp").Select
        Range("B4").Select
        ActiveSheet.Paste
        Sheets("Temp").Select
        Sheets("Temp").Copy After:=Sheets(2)
        ActiveSheet.Name = Range("B4")
        Sheets("Data").Select
        
        End If
        
        Sheets("Data").Select
        Range("E2").Select
        Selection.Copy
        Sheets("Temp").Select
        Range("B4").Select
        ActiveSheet.Paste
        Sheets("Temp").Select
        Sheets("Temp").Copy After:=Sheets(2)
        ActiveSheet.Name = Range("B4")
        Sheets("Data").Select
        

    Next i
End Sub
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: จะทำการ copy sheet เปลี่ยนชื่อตามข้อมูลครับ แต่แสดงไม่ตรงครับรบกวนด้วยครับ

#2

Post by snasui »

:D ตัวอย่าง Code ครับ

Code: Select all

Dim rall As Range
Dim r As Range
With Sheets("Data")
    Set rall = .Range("e2", .Range("e" & .Rows.Count).End(xlUp))
    For Each r In rall
        Sheets("Temp").Range("b4").Value = r.Value
        Sheets("Temp").Copy after:=Sheets("Temp")
    Next r
End With
preseed
Member
Member
Posts: 10
Joined: Thu Dec 08, 2016 7:52 am

Re: จะทำการ copy sheet เปลี่ยนชื่อตามข้อมูลครับ แต่แสดงไม่ตรงครับรบกวนด้วยครับ

#4

Post by preseed »

ขอรบกวนสอบถามต่อจากด้านบนครับ

คือตอนนี้ผมต้องการจะแยกsheet ที่ได้รันมา แยกเป็นไฟล์ PDF แต่ละไฟล์ โดยชื่อเป็นไปตามชื่อsheet
และทำการsave ไปในfolder โดยให้สร้าง folder ตามชื่อ sheet ด้วยครับ

เช่น ชื่อsheet ในไฟล์เป็น 1 ให้สร้าง folder ชื่อ 1 และsaveไฟล์ เป็น 1.pdf แล้วไปใส่ใน folder 1ครับ ประมาณ D:\1\1.pdf แบบนี้ครับ

ผมลองเขียนแล้วตันเลยมาขอความช่วยเหลือครับ

Code: Select all

Sub á¡data()
Dim rall As Range
Dim r As Range
With Sheets("Data")
    Set rall = .Range("o2", .Range("o" & .Rows.Count).End(xlUp))
    For Each r In rall
        Sheets("Temp").Range("b4").Value = r.Value
        Sheets("Temp").Copy after:=Sheets("Temp")
        ActiveSheet.Name = Range("B4")
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "D:\ตามค่า B4\ตามค่า B4.pdf", Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
    Next r
End With
End Sub

ขอบคุณครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: จะทำการ copy sheet เปลี่ยนชื่อตามข้อมูลครับ แต่แสดงไม่ตรงครับรบกวนด้วยครับ

#5

Post by snasui »

:D แนบไฟล์ที่ได้เขียน Code ล่าสุดแล้วมาด้วยจะได้ช่วยดูต่อไปจากนั้นครับ
preseed
Member
Member
Posts: 10
Joined: Thu Dec 08, 2016 7:52 am

Re: จะทำการ copy sheet เปลี่ยนชื่อตามข้อมูลครับ แต่แสดงไม่ตรงครับรบกวนด้วยครับ

#6

Post by preseed »

snasui wrote::D แนบไฟล์ที่ได้เขียน Code ล่าสุดแล้วมาด้วยจะได้ช่วยดูต่อไปจากนั้นครับ
รบกวนด้วยครับ

ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: จะทำการ copy sheet เปลี่ยนชื่อตามข้อมูลครับ แต่แสดงไม่ตรงครับรบกวนด้วยครับ

#7

Post by snasui »

:D ไม่พบ Code ด้านบนในไฟล์ที่แนบมา สำหรับการสร้าง Folder ศึกษาจาก Link นี้ viewtopic.php?t=132 ลองเขียนมาเองดูก่อนติดตรงไหนค่อยถามกันต่อครับ
preseed
Member
Member
Posts: 10
Joined: Thu Dec 08, 2016 7:52 am

Re: จะทำการ copy sheet เปลี่ยนชื่อตามข้อมูลครับ แต่แสดงไม่ตรงครับรบกวนด้วยครับ

#8

Post by preseed »

ได้แล้วครับบบบ ขอบคุณครับ น้ำตาไหลเลย พอดีเป็นมือใหม่หัดเริ่ม :roll:
ผมแก้ได้เป็นตามนี้ครับ

Code: Select all

Option Explicit
Function FolderExist(Path As String) As Boolean
    On Error Resume Next
    If Not Dir(Path, vbDirectory) = vbNullString Then
        FolderExist = True
    End If
    On Error GoTo 0
End Function
Sub á¡pdf()
Dim i As Integer
For i = 3 To ThisWorkbook.Worksheets.Count
    If FolderExist("D:\Test\" & ThisWorkbook.Worksheets(i).Range("B4").Value & "") Then
        ChDir "D:\Test\" & Range("B4").Value & ""
ThisWorkbook.Worksheets(i).Copy
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"D:\Test\" & ThisWorkbook.Worksheets(i).Range("B4").Value & "\" & Range("B4").Value & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
ActiveWorkbook.Close False
   Else
    On Error Resume Next
        MkDir "D:\Test\"
        MkDir "D:\Test\" & ThisWorkbook.Worksheets(i).Range("B4").Value & ""
        ChDir "D:\Test\" & ThisWorkbook.Worksheets(i).Range("B4").Value & ""
        ThisWorkbook.Worksheets(i).Copy
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    "D:\Test\" & ThisWorkbook.Worksheets(i).Range("B4").Value & "\" & Range("B4").Value & ".pdf", Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
ActiveWorkbook.Close False
    End If
Next i
End Sub
ผมรบกวนถามเพิ่มครับ คือตอนนี้ถ้าผมรัน code

Code: Select all

Sub á¡data()
Dim rall As Range
Dim r As Range
With Sheets("Data")
    Set rall = .Range("o2", .Range("o" & .Rows.Count).End(xlUp))
    For Each r In rall
        Sheets("Temp").Range("b4").Value = r.Value
        Sheets("Temp").Copy after:=Sheets("Temp")
        ActiveSheet.Name = Range("B4")
    Next r
End With
End Sub
เวลาทำงานจะแยกรหัสออกมาจาก form temp worksheet จะเยอะมากๆ แล้ว ผมจึ่งรัน code PDFต่อ คือปลายทางผมอยากได้ แค่ไฟล์ PDF ผมสามารถรวม code ได้เลยไหมครับ

ปล.แก้ไข แนบไฟล์เพิ่มครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: จะทำการ copy sheet เปลี่ยนชื่อตามข้อมูลครับ แต่แสดงไม่ตรงครับรบกวนด้วยครับ

#9

Post by snasui »

:D ตัวอย่างการเรียกใช้ Code อืนภายใน Code ใด Code หนึ่งครับ

Code: Select all

Sub แยกdata()
Dim rall As Range
Dim r As Range
With Sheets("Data")
    Set rall = .Range("o2", .Range("o" & .Rows.Count).End(xlUp))
    For Each r In rall
        Sheets("Temp").Range("b4").Value = r.Value
        Sheets("Temp").Copy after:=Sheets("Temp")
        ActiveSheet.Name = Range("B4")
    Next r
End With
Call Module3.แยกpdf
End Sub
preseed
Member
Member
Posts: 10
Joined: Thu Dec 08, 2016 7:52 am

Re: จะทำการ copy sheet เปลี่ยนชื่อตามข้อมูลครับ แต่แสดงไม่ตรงครับรบกวนด้วยครับ

#10

Post by preseed »

snasui wrote::D ตัวอย่างการเรียกใช้ Code อืนภายใน Code ใด Code หนึ่งครับ

Code: Select all

Sub แยกdata()
Dim rall As Range
Dim r As Range
With Sheets("Data")
    Set rall = .Range("o2", .Range("o" & .Rows.Count).End(xlUp))
    For Each r In rall
        Sheets("Temp").Range("b4").Value = r.Value
        Sheets("Temp").Copy after:=Sheets("Temp")
        ActiveSheet.Name = Range("B4")
    Next r
End With
Call Module3.แยกpdf
End Sub


ขอบคุณครับ อยากจะรบกวนถามอีก 1 อย่างครับ

ตอนนี้ผมแยกไฟล์ ออกมาเป็น pdf แล้วถ้า ผมอยากเปลี่ยนมาsave เป็น .jpg ได้ไหมครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30736
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: จะทำการ copy sheet เปลี่ยนชื่อตามข้อมูลครับ แต่แสดงไม่ตรงครับรบกวนด้วยครับ

#11

Post by snasui »

:D การใช้ VBA จำเป็นต้องเขียนมาเองก่อนเสมอ ติดแล้วค่อยถามกันต่อ ลองศึกษาจาก Link นี้เป็นแนวทางครับ :arrow: Save As JPG
Post Reply