วันอังคารที่ 16 กรกฎาคม พ.ศ. 2556

การใช้ File Dialog ค้นหาภาพ และเปิดด้วย Paint ด้วย Access VBA

ในตัวอย่างนี้ จะเป็นการสร้างปุ่มเพื่อเปิดหน้าจอค้นหาไฟล์ (Browse Dialogue) เพื่อค้นหาไฟล์ภาพ แล้วมีปุ่มเพื่อให้เปิดดูด้วย โปรแกรม Paint เพื่อให้ผู้ใช้สามารถจัดการกับภาพ และสั่งพิมพ์นอกโปรแกรม Access ได้


จุดประสงค์สุดท้ายคือการเรียกไฟล์ Paint มาเปิดภาพ ดังนั้น เราต้องมีการกรอง หรือตรวจเชคว่า ไฟล์ที่เลือกนั้นเป็นไฟล์ภาพหรือไม่ ในตัวอย่างนี้ กำหนดให้เป็นไฟล์ ประเภท jpg หรือ gif เท่านั้น

วิธีการ
  1. สร้างปุ่ม ชื่อ Command0 เขียนข้อความที่ปุ่มเป็น ค้นหาไฟล์
  2. สร้าง กล่องข้อความ (Textbox) ชื่อ Text3
  3. สร้างปุ่ม ชื่อ cmdViewFile กำหนดค่าเริ่มต้นให้มองไม่เห็น (ที่แถบ Format ตั้งค่า Visible เป็น No)  เขียนข้อความที่ปุ่มเป็น เปิดดูภาพ
  4. ที่ปุ่ม ค้นหาไฟล์ (Command0) ให้เขียนโค้ดข้างล่างนี้

    Private Sub Command0_Click()
        Dim f As Object
        Dim fileAddress As String
        Dim fileExt As String
        Dim strFile As String
        Dim strFolder As String
        Dim varItem As Variant
       
        Me.Text3.Value = ""
        Me.cmdViewFile.Visible = False
       
        Set f = Application.FileDialog(3)
        f.AllowMultiSelect = False
        If f.Show Then
            fileAddress = f.SelectedItems(1)
        End If
        Set f = Nothing
        fileExt = Right(fileAddress, Len(fileAddress) - InStrRev(fileAddress, "."))
        If ((fileExt <> "gif") And (fileExt <> "jpg")) Then
                MsgBox "ไม่ใช่ไฟล์ภาพ"
        Else
                Me.Text3.Value = fileAddress
                Me.cmdViewFile.Visible = True
        End If
          
    End Sub
  5. ที่ปุ่ม cmdViewFile ให้เขียนโค้ดข้างล่างนี้

    Private Sub cmdViewFile_Click()

    Dim thisFile As String

        thisFile = Me.Text3.Value
       
        Shell Chr(34) & "C:\Windows\System32\mspaint.exe" & Chr(34) & " " & _
        Chr(34) & thisFile & Chr(34), 1

    End Sub
เมื่อเปิดครั้งแรกจะไม่เห็นปุ่ม เปิดดูภาพ เมื่อคลิกปุ่มค้นหาไฟล์ จะเปิดหน้าจอให้ค้นหาไฟล์

 เมื่อเลือกไฟล์ และกดปุ่ม OK จะแสดง Path และชื่อไฟล์ในกล่องข้อความ และมีปุ่มกดดูภาพปรากฎขึ้น


 เมื่อคลิกปุ่ม เปิดดูภาพ จะเปิดโปรแกรม Paint และแสดงภาพที่เลือก

ดาวน์โหลดไฟล์ คลิกที่นี่

ปรับปรุงใหม่

โค้ดข้างต้นมีการตรวจเชคไฟล์ที่เลือก แต่คิดว่าน่าจะดีกว่า ถ้ากำหนดตัวกรอง Filters ให้กับหน้าจอค้นหาไฟล์ คือให้แสดงเฉพาะไฟล์ภาพชนิดที่ต้องการเท่านั้น โค้ด ปรับใหม่ ได้ดังนี้

Private Sub Command0_Click()
    Dim f As Object
    Dim fileAddress As String
    Dim fileExt As String
    Dim strFile As String
    Dim strFolder As String
    Dim varItem As Variant
   
    Me.Text3.Value = ""
    Me.cmdViewFile.Visible = False
   
    Set f = Application.FileDialog(3)
        f.AllowMultiSelect = False
        f.Title = "โปรดเลือกไฟล์ภาพที่ต้องการ"
        f.Filters.Clear
        f.Filters.Add "JPG Files", "*.jpg"
        f.Filters.Add "GIF Files", "*.gif"
        f.Filters.Add "Bitmap Files", "*.bmp"
        f.Filters.Add "All Files", "*.*"

    If f.Show Then
        fileAddress = f.SelectedItems(1)
        Me.Text3 = fileAddress
        Me.cmdViewFile.Visible = True
    End If
    Set f = Nothing
   
End Sub


ที่มา

http://www.pcreview.co.uk/forums/re-vba-using-shell-open-jpg-file-ms-paint-t3837282.html
http://www.devhut.net/2013/02/26/ms-access-vba-determine-a-files-extension/
http://social.msdn.microsoft.com/Forums/office/en-US/2e053d45-5ad1-4340-a678-3a2d83625965/access-2010-applicationfiledialog-filtersadd-fails


ไม่มีความคิดเห็น:

แสดงความคิดเห็น