Page 1 of 1

อยากเขียนปุ่มที่กดแล้วไปดึงภาพมาโชว์ใน excelค่ะ ที่เขียน VBA

Posted: Tue Jan 18, 2011 2:56 pm
by widtara
สวัสดดีค่ะอ้อยมีปัญหามาถามต่อค่ะ เป็นภาคต่อจากคำถามเรื่องการแยก sheet โดยเขียน VBA ค่ะ ซึ่งเป็นงานที่ต่อเนื่องกันค่ะ
ตอนนี้อ้อยยังศึกษาพื้นฐาน VBA อยู่ยังไม่เก่งและยังไม่ค่อยเข้าใจการทำงานมากนัก คือว่า มี excel อยู่หน้าหนึ่ง
เช่นสมุมติว่า ที่ A1 มีรหัส 92217 ซึ่งจะมี Folders ชื่อ 92217 อยู่และมีไฟล์ภาพอยู่ 3 ไฟล์ ซึ่งชื่อจะมาจากกล้องที่ถ่าย ส่วนใหญ่ภาพที่ต้องการจะเป็นภาพที่ 2 กับ ภาพที่ 3 คราวนี้อ้อย กำหนดให้ อาจเป็น B1 โชว์ภาพที่ 2 ใน Folders 92217

และ อาจให้ B2 โชว์ภาพที่ 3 ใน Folder 92217 โดยระบุขนาดภาพที่แน่นอนเพื่อลดขนาดไฟล์ ลักษณะแบบนี้ค่ะ อาจจะต้องใช้ VBA แต่ไม่รู้จะเริ่มยังงัยค่ะ อ้อยแนบตัวอย่างมาให้ดูค่ะ และแนบ ไฟล์ โครงการที่คิดจะทำมาให้ดูค่ะ ช่วยแนะนำหน่อยนะค่ะ หรือหากไม่ใช้ VBA จะต้องมีวิธีทำอย่างอื่นไหมค่ะ 2 ไฟล์ที่แนบมา เป็นงานเดียวกัน ค่ะ ไฟล์แรกเป็นวิธีการทำให้ได้ภาพมาจริง ส่วนไฟล์ที่ 2 เป็นแนวคิดปรับงานโดยใช้วิธีดึงภาพมานะค่ะ เป็นงานที่ทำอยู่เลยค่ะ

Re: อยากเขียนปุ่มที่กดแล้วไปดึงภาพมาโชว์ใน excelค่ะ ที่เขียน

Posted: Tue Jan 18, 2011 3:16 pm
by widtara
ไฟล์ที่ 2 แต่ว่ามันใหญ่เลยสับออกเป็น 6 ไฟล์ค่ะ
Update Sub NCR1.1.xls
Update Sub NCR1.2.xls
Update Sub NCR1.3.xls
Update Sub NCR1.4.xls
Update Sub NCR1.5.xls
Main.Sub Form.xls

Re: อยากเขียนปุ่มที่กดแล้วไปดึงภาพมาโชว์ใน excelค่ะ ที่เขียน

Posted: Tue Jan 18, 2011 3:19 pm
by widtara
ไฟล์ที่เหลือ รวมแล้ว เป็นโครงการที่คิดไว้นะค่ะ มันค่อนข้างเยอะและยาว อาจเป็นเพราะยังหาวิธีการจัดเรียงที่ดีกว่านี้ยังไม่ได้ ตอนนี้จะค่อยดูและค้นหาวิธีที่ดีที่สุดไปเรื่อยค่ะ ตอนนี้อยากรู้คำสั่งที่ทำให้ภาพโชว์ได้ก่อน แล้วค่อยไปทีละขั้นนะค่ะ

Re: อยากเขียนปุ่มที่กดแล้วไปดึงภาพมาโชว์ใน excelค่ะ ที่เขียน

Posted: Tue Jan 18, 2011 3:53 pm
by sdmania
:mrgreen: ผมมาเสนอว่าให้ไปรวมกระทู้เกี่ยวกับการเขียนโปรแกรมเพื่อให้ได้งานประมาณนี้ที่กระทู้นี้ครับ
http://www.snasui.com/viewtopic.php?f=3&t=632

หากคุณอ้อยรีบ ผมก็ขอเสนอให้อาจารย์ช่วยแก้ หรือยกตัวอย่างปัญหาคุณอ้อยก่อนครับ เดี๋ยวผมกับคุณ sup จะได้เรียนรู้ตามกันทีหลังจากตัวอย่างคุณอ้อย :mrgreen:


ผมว่าค่อยๆอ่านพื้นฐาน VBE ให้เข้าใจนะครับ แล้วจะได้แกะตัวอย่างมาปรับใช้ได้(อันนี้วิธีผมครับ มือใหม่เหมือนกัน) :mrgreen:

Re: อยากเขียนปุ่มที่กดแล้วไปดึงภาพมาโชว์ใน excelค่ะ ที่เขียน

Posted: Tue Jan 18, 2011 5:01 pm
by sup
แสดงว่ามีผู้ที่มีปัยหากับงานที่อยากนำเสนอแบบเดียวกับผมอยู่ทั้งที่ ออกตัวมาแล้วและที่ยังไม่ออกตัวมาก็คงมากนะครับ
มือใหม่ๆทั้งนั้น ก็มาช่วยกันครับ

Re: อยากเขียนปุ่มที่กดแล้วไปดึงภาพมาโชว์ใน excelค่ะ ที่เขียน

Posted: Tue Jan 18, 2011 7:47 pm
by widtara
ขอบคุณค่ะที่เข้ามาเป็นกำลังใจ หนุนกันไป หุหุ คือช่วงนี้ทำโอทุกวันมาศึกษาเรื่องนี้ละค่ะ ไม่คิดอะไรแบบเป็นระบบมากๆ กลัวสมอง มันจะฟองเสียก่อน เลยหาเรื่องมาใส่หัวสมองซะหน่อย แต่ก็ดีนะค่ะ รู้สึกว่า ไม่ค่อยได้ทำคนเดียวเท่าไร ยังมีเพื่อนๆค่อยเป็นกำลังใจอยู่ ที่จริงก็ควรคิดได้นานแล้วละค่ะ น่าเสียดาย ปล่อยเวลามาตั้งนาน ทั้งนี้เป็นงานรูทีน ประจำวันเลย ถ้าสามารถทำ หัวข้อนี้สำเสร็จ คงได้เป็นอาจารย์กะเขาบ้าง อิอิ จารย์สอนแถวนี้นะค่ะ ไม่ใช่ในบอร์ดนี้ ในบอร์ดนี้ขอเป็นลูกศิษย์พอ :rz:

Re: อยากเขียนปุ่มที่กดแล้วไปดึงภาพมาโชว์ใน excelค่ะ ที่เขียน

Posted: Tue Jan 18, 2011 7:57 pm
by widtara
ขอบคุณ คุณ sdmania อ่านมาแล้วค่ะ ลิงค์ค่ะ แต่ยังมึน เหมือนโดน ไม้หน้าสามทุบหัวเลยค้าๆๆๆๆๆ มึนอย่างแรง ขอออกตัวเลยนะค่ะ ที่อยู่พึ่งมาใช้ 2007 ได้ 1 อาทิตย์ เป็นการเปลี่ยนแปลงของบริษัทนะค่ะ แต่จุน สมอง จาก 2003 มา 2007 ยังมึนไม่หาย

เลยค๊าๆๆๆๆๆ ขอบอก มาเจอ 2007 ไอ้ที่คิดว่าตัวเองเก่งกว่าแถวนี้แล้วนะ ยังหาอะไร ใช้ไม่ได้ดังใจเลย มันไม่เคยๆ หันหน้าหันหลัง เจอบ้างไม่เจอ เหมือนนับ1 ใหม่ๆ ตลอดๆ เลยค๊า :lol:

Re: อยากเขียนปุ่มที่กดแล้วไปดึงภาพมาโชว์ใน excelค่ะ ที่เขียน

Posted: Wed Jan 19, 2011 9:50 am
by sdmania
ผมเองก็ไม่ได้เก่งอะไรเลยครับ เพียงแต่มาเข้าบอร์ดนี้บ่อย แถมอาจารย์คนควนใจดี สอนในแบบที่มือใหม่เข้าใจได้เลยครับ
ขอขอบคุณอาจารย์ไว้ ณ ที่นี้อีกครั้งครับ อาจารย์มีความเป็นครูเต็มเปี่ยมครับ

เอาละ เข้าเรื่องๆ คุณอ้อย กับคุณ sup ลองเขียนแผนผังการทำงาน ว่ากันตั้งแต่เปิดโปรแกรมเข้ามาน่ะ(อ่านว่า หนะ)ครับ
จะได้ลองดูงานเราสามคนว่าใกล้เคียงกันแค่ไหน

มาว่ากันด้วยเรื่อง เปิดโปรแกรมแล้วจะดึงภาพมาดูกันได้ยังไงดีกว่า คือจะลำดับดูว่ามีขั้นตอนอะไรกันบ้าง เรียกข้อมูลยังไง เก็บภาพยังไงน่ะครับ มันอาจจะคาบเกี่ยวไปเรื่องอื่นน่ะครับ ผมยังมึนยังลำดับไม่ถูกช่วงนี้ออกไปทำงานข้างนอกบ่อย ไม่ค่อยได้นั่งหน้าจอต่องานexcel เลย ก็เลยมาหาเพื่อนช่วยๆกันทำงานขึ้นมาจะได้ดึงcodeมาใช้ หลายๆคนช่วยพัฒนาโปรแกรมมันจะได้ไปได้ค่อนข้างเร็วครับ :mrgreen:

Re: อยากเขียนปุ่มที่กดแล้วไปดึงภาพมาโชว์ใน excelค่ะ ที่เขียน

Posted: Wed Jan 19, 2011 11:44 am
by sup
ของผมเป็นการดึงภาพโฟลเดอร์ที่ใช้เป็นคลังเก็บ ซึ่งคิดว่าเก็บได้เยอะดี ในโฟลเดอร์ก็แยกโฟลเดอร์ย่อยๆมีชื่อตามรหัสสินค้าซึ่งเก็บภาพที่มีชื่อเดียวกับโฟลเดอร์นั้นๆ แต่มี -1, -2 ฯลฯ ต่อไปได้เรื่อยๆ เพื่ออาจจะมีเติมในอนาคต แล้วผมทำ User Form มีช่องรับข้อมูลโดยกรอกรหัสเข้าไป แล้วคลิกปุ่มให้ค้นหา เข้าไป แล้วสามารถไล่หาไปได้เรื่อยทุกภาพที่มีอยู่ในโฟลเดอร์นั้นๆ เดินหน้าถอยหลังได้ และมีช่องแสดงผลลัพธ์ คือจำนวนภาพที่มีทั้งหมด และลำดับของภาพที่กำลังดู
ตามไฟล์แบบที่เคยแนบมาก่อนหน้าครับ

อาจารญืบอกว่ายากต้องใช้เวลานาน

Re: อยากเขียนปุ่มที่กดแล้วไปดึงภาพมาโชว์ใน excelค่ะ ที่เขียน

Posted: Wed Jan 19, 2011 5:42 pm
by widtara
ของผมเป็นการดึงภาพโฟลเดอร์ที่ใช้เป็นคลังเก็บ ซึ่งคิดว่าเก็บได้เยอะดี ในโฟลเดอร์ก็แยกโฟลเดอร์ย่อยๆมีชื่อตามรหัสสินค้าซึ่งเก็บภาพที่มีชื่อเดียวกับโฟลเดอร์นั้นๆ แต่มี -1, -2 ฯลฯ ต่อไปได้เรื่อยๆ เพื่ออาจจะมีเติมในอนาคต แล้วผมทำ User Form มีช่องรับข้อมูลโดยกรอกรหัสเข้าไป แล้วคลิกปุ่มให้ค้นหา เข้าไป แล้วสามารถไล่หาไปได้เรื่อยทุกภาพที่มีอยู่ในโฟลเดอร์นั้นๆ เดินหน้าถอยหลังได้ และมีช่องแสดงผลลัพธ์ คือจำนวนภาพที่มีทั้งหมด และลำดับของภาพที่กำลังดู
ตามไฟล์แบบที่เคยแนบมาก่อนหน้าครับ

อาจารญืบอกว่ายากต้องใช้เวลานาน

คล้ายๆข้างบนนี้ค่ะ โครงที่จะทำจนสมบูรณ์มีตามไฟล์แนบมา เอามาต่อกันค่ะ คือมันใหญ่ เลยสับหลายไฟล์
Update Sub NCR1.1.xls
Update Sub NCR1.2.xls
Update Sub NCR1.3.xls
Update Sub NCR1.4.xls
Update Sub NCR1.5.xls
Main.Sub Form.xls

แต่ไฟล์ที่จะทำให้ได้ก่อนคือ ไฟล์นี้ค่ะ RJL-F1101-01-01.xls
ขอการดึงข้อมูลใน Folders ที่เก็บไว้เช่น
EVENT PICTURES DRYER
-wk01
-RJI
80364 ซึ่งเป็นรหัสใบ ma ข้างในจะมีภาพประมาณ 3 ภาพ ตั้งชื่อตามค่ากล้องที่ถ่ายมา ภาพที่ใช้จะอยู่อันดับ 2 และ 3
-RJL มีข้อมูลลักษณะเดียวกันกับ RJI

ไฟล์ RJL-F1101-01-01.xls
จะมีข้อมูลเลข ma อยู่ จะกำหนดให้มันเจอเลข ma และไปค้นหา ใน folders ถ้ามีเลข ma เหมือนกัน ให้ดึงภาพที่ 2 และ 3 มาโชว์ใน ส่วนที่ เรากำหนด ค่ะ

Re: อยากเขียนปุ่มที่กดแล้วไปดึงภาพมาโชว์ใน excelค่ะ ที่เขียน

Posted: Wed Jan 19, 2011 9:51 pm
by snasui
:D ผมลองเขียน Code สำหรับ Add รูปให้ตามตำแหน่งเซลล์ โดยกำหนดขนาดให้พอดีกับพื้นที่ที่กำหนดไว้ โดยใช้ Code ตามด้านล่างครับ

สังเกตที่ .LookIn = "C:\Picture\" ตรงนี้ต้องใส่ Path ที่เก็บภาพก่อนที่จะถึง Folder ใน J29

Code: Select all

Option Explicit

Sub FindPicture()
Dim r As Range, obj As Object
Dim fs As Object, i As Integer
Dim Img1 As Variant, Img2 As Variant

Set r = Worksheets("22").Range("J29")
Set fs = Application.FileSearch

On Error Resume Next

For Each obj In ActiveSheet.Shapes
    If Left(obj.Name, 3) = "Pic" Then
            obj.Delete
    End If
Next

    With fs
        .LookIn = "C:\Picture\" & r '<== Chage to your real path
        .SearchSubFolders = True
        .Filename = "*"
        If .Execute() > 0 Then
            With Range("F47")
                Set Img1 = ActiveSheet.Shapes.AddPicture( _
                Filename:=fs.FoundFiles(2), LinkToFile:=False, _
                SaveWithDocument:=True, Left:=.Left, Top:=.Top, _
                Width:=590, Height:=420)
            End With
            With Range("M47")
                Set Img2 = ActiveSheet.Shapes.AddPicture( _
                Filename:=fs.FoundFiles(3), LinkToFile:=False, _
                SaveWithDocument:=True, Left:=.Left, Top:=.Top, _
                Width:=590, Height:=420)
            End With
        Else
            MsgBox "There were no files found."
            Exit Sub
        End If
    End With
    
End Sub