: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

มีปัญหาดึงภาพ jpg ให้จับแค่ชื่อ 8 ตัวอักษรครับไม่ได้ครับ

ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน Excel
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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
essung
Member
Member
Posts: 2
Joined: Fri Jul 06, 2012 10:52 pm

มีปัญหาดึงภาพ jpg ให้จับแค่ชื่อ 8 ตัวอักษรครับไม่ได้ครับ

#1

Post by essung »

รบกวนชี้แนะครับ
ปัญหา Excel VBA code ดึงภาพจากเครื่องครับ ถ้าตรวจจับ code 8 หลัก

เนื่องจาก Code รูปบางครั้งมีเกิน 8 หลัก เช่น 214E5963-001 มีรูปกับข้อมูลอยู่แล้ว
บาง Code สินค้า ใน Excel ก็มี 8 - 11 หลักเช่นกัน

**แต่ถ้าชื่อตรงก็จะขึ้นภาพครับ :D

จุดประสงค์คือ ต้องการให้ โปรแกรม ตัดตัวอักษร(.jpg) แค่ 8 หลัก เพื่อให้รูปทำงานครับ ทั้ง Excel และ JPG มีรหัสต่างจำนวนแต่สามารถดึงรูปได้ เช่น
Code 214E5963-001 ดึง 214E5963.jpg ได้ครับ หรือ 214E5963 0001 ดึง 214E5963-002

ขอบพระคุณอย่างสูงครับ
ทดสอบ code.XLS
You do not have the required permissions to view the files attached to this post.
essung
Member
Member
Posts: 2
Joined: Fri Jul 06, 2012 10:52 pm

Re: มีปัญหาดึงภาพ jpg ให้จับแค่ชื่อ 8 ตัวอักษรครับไม่ได้ครับ

#2

Post by essung »

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

Re: มีปัญหาดึงภาพ jpg ให้จับแค่ชื่อ 8 ตัวอักษรครับไม่ได้ครับ

#3

Post by snasui »

:D ลองดูตัวอย่าง Code ตามด้านล่างครับ ซึ่งจะต้อง Add Reference ที่ชื่อว่า Microsoft Scripting Runtine โดยเข้าเมนู Tools > References

Code ที่ชีท Xinzhou Suibao

Code: Select all

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Call Test
End Sub
Code ที่ Module1

Code: Select all

Sub Test()
    Dim SourceFolder As Scripting.Folder
    Dim fso As New Scripting.FileSystemObject
    Dim fName As String, picName As String
    Dim Found As Boolean
    DoEvents
    fName = "C:\"
    Set SourceFolder = fso.GetFolder(fName)
    fName = Dir(SourceFolder.Path & "\*.*")
    Do While fName <> ""
        If Selection.Value = Left(fName, 8) Then
            picName = "C:\" & fName
            Range("A1")(1).Comment.Shape.Fill.UserPicture picName
            Found = True
            Exit Do
        End If
        fName = Dir
    Loop
    If Found = False Then
        MsgBox "Not found"
    End If
End Sub
wwattana
Member
Member
Posts: 8
Joined: Mon Jul 09, 2012 8:36 pm

Re: มีปัญหาดึงภาพ jpg ให้จับแค่ชื่อ 8 ตัวอักษรครับไม่ได้ครับ

#4

Post by wwattana »

อาจารย์ครับ
ผมลองปรังปรุงตามที่อาจารย์แก้ไขมาเพื่อปรับใช้ที่บริษัทแต่ยังไม่สามารถดึงรูปขึ้นมาจาก c:\Promaterial ได้เลยครับ
รบกวนชี้แนะด้วยครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: มีปัญหาดึงภาพ jpg ให้จับแค่ชื่อ 8 ตัวอักษรครับไม่ได้ครับ

#5

Post by snasui »

:D ไฟล์ที่จะแนบ Code ได้ต้องเป็นนามสกุล .xlsm ครับ แนบไฟล์พร้อม Code ที่ลองเขียนเองมาใหม่ ระบุด้วยว่ามีปัญหาที่ Module ใด Procedure ใดครับ
wwattana
Member
Member
Posts: 8
Joined: Mon Jul 09, 2012 8:36 pm

Re: มีปัญหาดึงภาพ jpg ให้จับแค่ชื่อ 8 ตัวอักษรครับไม่ได้ครับ

#6

Post by wwattana »

กราบขออภัยอย่างสูงครับอาจารย์ ที่ผมไม่อ่าน กฏ-กติกา ที่ภูกต้องก่อนทำการโพสข้อความครับ
สืบเนื่องจากที่บริษัทมีอุปกรณ์ส่งเริมการขายค่อนข้างมาก และเวลาสั่งของก็สั่งกันผิดอยู่บ่อยๆ
เลยมีแนวความคิดว่านำรูปมาโชว์ในเอกสารสั่งของด้วยน่าจะแก้ปัญหาได้ครับ
ผมลองทำตามโค๊ดที่อยู่ในกระทู้นี้ แต่ติดปัญหานิดหนึ่งครับ

พอรันแล้ว ขึ้นว่า
Run-time errer '91':
Object varible or With block varible not set ครับ

ปัญหาคงอยู่ที่ Module1 จุดโชว์รูป ที่ K4 ครับ
รบกวนสอบถามวิธีเซ็ท ให้โชว์ภาพ เมื่อคลิ๊กที่ Colum D ที่เป็นโค๊ดของภาพที่จะดึงจากโฟล์เดอร์ C:\Promaterial\ ครับ
ต้องรบกวนอาจารย์ชีแนะด้วยครับเพราะยังไม่มีความรู้เกี่ยวกับ VB เลยครับ
พอทำได้แค่คำสั่งทั่วๆไปเองครับ
PromattOrder.xlsm
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: มีปัญหาดึงภาพ jpg ให้จับแค่ชื่อ 8 ตัวอักษรครับไม่ได้ครับ

#7

Post by snasui »

:D จากตัวอย่างไฟล์ที่แนบมา ลองปรับ Code เป็นตามด้านล่างครับ

Code: Select all

Sub Test()
    Dim SourceFolder As Scripting.Folder
    Dim fso As New Scripting.FileSystemObject
    Dim fName As String, picName As String
    Dim Found As Boolean
    DoEvents
    fName = "C:\Promaterial\"
    Set SourceFolder = fso.GetFolder(fName)
    fName = Dir(SourceFolder.Path & "\*.*")
    Do While fName <> ""
        If Selection.Value = Left(fName, 12) Then
            picName = "C:\Promaterial\" & fName
            Range("L4")(1).Comment.Shape.Fill.UserPicture picName
            Found = True
            Exit Do
        End If
        fName = Dir
    Loop
    If Found = False Then
        
    End If
End Sub
wwattana
Member
Member
Posts: 8
Joined: Mon Jul 09, 2012 8:36 pm

Re: มีปัญหาดึงภาพ jpg ให้จับแค่ชื่อ 8 ตัวอักษรครับไม่ได้ครับ

#8

Post by wwattana »

ทำได้แล้วครับ ผมดูไม่ดีเอง แค่เลื่อนเซลล์ไปเซลล์เดียวเอง รู้สึกละอายใจจริงๆเลยครับ
แต่แก้ปัญหาจุดนี้ได้แล้วก็เจออีกปัญหาหนึ่งครับ
ใน Module 1 เนื่องจากเราสั่งให้ If Selection.Value = Left(fName, 12)
พอเราคลิ๊กที่เซลล์อื่นจะขึ้น error 13 Type Mismach. ครับตรงจุดนี้เราจะแก้ไขอย่างไรดีครับ
ถึงจะไม่ขึ้น error อีกครับเวลาเราคลิ๊กจุดอื่นที่ไม่มี Left(fName, 12)

ขอบพระคุณอย่างสูงครับอาจารย์
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: มีปัญหาดึงภาพ jpg ให้จับแค่ชื่อ 8 ตัวอักษรครับไม่ได้ครับ

#9

Post by snasui »

:D ปรับ Code ตามด้านล่างให้ตรวจสอบว่าเซลล์ที่ถูกเลือกคือเซลล์เป้าหมายที่ต้องการหรือไม่ หากใช่ให้ทำงานต่อ หากไม่ใช่ให้หยุดทำงาน

จาก
wwattana wrote:

Code: Select all

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Call Test
End Sub
ปรับเป็น

Code: Select all

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = $M$4 Then 'ปรับให้เป็นเซลล์ที่ต้องการตรวจสอบ
   Call Test
End If
End Sub
wwattana
Member
Member
Posts: 8
Joined: Mon Jul 09, 2012 8:36 pm

Re: มีปัญหาดึงภาพ jpg ให้จับแค่ชื่อ 8 ตัวอักษรครับไม่ได้ครับ

#10

Post by wwattana »

โปรเกรมขึ้น Syntax Error ครับ

โค๊ด
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = (E12:E42) Then
Call Test
End If
End Sub

ลองใส่ให้ Excel ตรวจสอบ คอลัม E12-E42
แต่โปรเกรมขึ้น Syntax Error ครับ
ลองทั้งแบบ $E$ หรือ E$ , $E ก็ยังใช้ไม่ได้ครับ
คงต้องรบกวนอาจารย์ชี้แนะอีกครั้งครับว่าต้องใส่แบบใหนดีครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: มีปัญหาดึงภาพ jpg ให้จับแค่ชื่อ 8 ตัวอักษรครับไม่ได้ครับ

#11

Post by snasui »

:D ผมลืมใส่ฟันหนูครอบครับ

ปรับใหม่เป็น :ard:

Code: Select all

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$M$4" Then 'ปรับให้เป็นเซลล์ที่ต้องการตรวจสอบ
   Call Test
End If
End Sub
wwattana
Member
Member
Posts: 8
Joined: Mon Jul 09, 2012 8:36 pm

Re: มีปัญหาดึงภาพ jpg ให้จับแค่ชื่อ 8 ตัวอักษรครับไม่ได้ครับ

#12

Post by wwattana »

ยังไม่สำเร็จครับอาจารย์
ผม ใส่ให้ Excel ทำการตรวจสอบ คอลัม E พร้อมใส่ฟันหนูแบบที่อาจารย์ใส่มาแล้วครับ
ไม่มี error ขึ้นมา แต่ คลิ๊กที่ คอลัม E ทั้งคอลัม ไม่มีรูปขึ้นมาเลยครับ
เลยไม่ทราบว่าผมทำตรงไหนผิดอยู่อีก
ผมแนบโค๊ดที่แก้พร้อมไฟล์มาให้อาจารย์ตรวจอีกครั้งครับ
wwattana
Member
Member
Posts: 8
Joined: Mon Jul 09, 2012 8:36 pm

Re: มีปัญหาดึงภาพ jpg ให้จับแค่ชื่อ 8 ตัวอักษรครับไม่ได้ครับ

#13

Post by wwattana »

Sheet01--------------------------------------------------------------------

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$E" Then
Call Test
End If
End Sub

Module1--------------------------------------------------------------------

Sub Test()
Dim SourceFolder As Scripting.Folder
Dim fso As New Scripting.FileSystemObject
Dim fName As String, picName As String
Dim Found As Boolean
DoEvents
fName = "C:\Promaterial\"
Set SourceFolder = fso.GetFolder(fName)
fName = Dir(SourceFolder.Path & "\*.*")
Do While fName <> ""
If Selection.Value = Left(fName, 12) Then
picName = "C:\Promaterial\" & fName
Range("L4")(1).Comment.Shape.Fill.UserPicture picName
Found = True
Exit Do
End If
fName = Dir
Loop
If Found = False Then

End If
End Sub
wwattana
Member
Member
Posts: 8
Joined: Mon Jul 09, 2012 8:36 pm

Re: มีปัญหาดึงภาพ jpg ให้จับแค่ชื่อ 8 ตัวอักษรครับไม่ได้ครับ

#14

Post by wwattana »

Excel+ไฟล์รูปครับ
C:\Promaterial\
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31253
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: มีปัญหาดึงภาพ jpg ให้จับแค่ชื่อ 8 ตัวอักษรครับไม่ได้ครับ

#15

Post by snasui »

:lol: การใช้ .Address จะต้องบอกว่าเป็นคอลัมน์ใดและบรรทัดใด จะระบุเป็น "$E" เช่นนี้เพื่อบอกว่าเป็นคอลัมน์ E ไม่ได้ครับ

ถ้าต้องการให้โปรแกรมตรวจสอบว่าต้องเป็นคอลัมน์ E เท่านั้นสามารถใช้การตรวจสอบตามด้านล่างครับ

Code: Select all

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   If Target.Column = 5 Then
      Call Test
   End If
End Sub
การวาง Code VBA ในกล่องความเห็นให้ดูตามกระทู้นี้ จะได้สะดวกในการอ่านครับ :arrow: viewtopic.php?f=3&t=1187
wwattana
Member
Member
Posts: 8
Joined: Mon Jul 09, 2012 8:36 pm

Re: มีปัญหาดึงภาพ jpg ให้จับแค่ชื่อ 8 ตัวอักษรครับไม่ได้ครับ

#16

Post by wwattana »

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

ขอบคุณมากๆเลยครับอาจารย์ :D
Post Reply