Show ảnh lên Form. Nhờ bác ndu96081631

Liên hệ QC
Status
Không mở trả lời sau này.

chipiu3001

Thành viên hoạt động
Tham gia
22/8/15
Bài viết
105
Được thích
15
Gửi bác ndu96081631
Em đã đoc bài của bác " Show ảnh lên Form" link bên dưới và đã làm OK

http://www.giaiphapexcel.com/forum/showthread.php?88083-Load-hình-ảnh-từ-excel-lên-form-trong-VBA

Nhưng em có nhiều ảnh thì không thể copy vao file gốc ddEm muốn lưu ảnh trên file excel khác hoặc folder chứ ảnh. Bác hướng dẫn giúp em viết đường dẫn cho code với
code:
Set pic = Sheet5.Pictures(PicName)
thay bằng đường dẫn file khác chứ ảnh( hoăc folder chứ ảnh).
Bác xem file đính kèm giúp em nhé
Em mới cho 1 anh tên: 15C-HCP
Em cảm ơn
 

File đính kèm

  • Quản lý nguyên vật liệu 1.xlsm
    139.4 KB · Đọc: 22
Chỉ cần câu lệnh này thôi bạn:

Image1.Picture = LoadPicture(ThisWorkbook.Path & "\Picture\Logo.jpg")

Muốn cái gì có hình thì thay chữ Image1, màu đỏ là đường dẫn, còn màu xanh là tên đầy đủ của hình.

Chú ý: Show hình lên Form không bao giờ được dùng định dạng .PNG
 
Em có hình ở ổ D\Picture\BeTu, thì sửa :
Image1.Picture = LoadPicture(ThisWorkbook.Path & "D\Picture\BeTu.jpg") hả Anh Nghĩa?????
Có cần chỉnh lại chổ code này không:
Mã:
[COLOR=#000000][I]Set pic = Sheet1.Pictures(PicName)
[/I][/COLOR][COLOR=#000000][I]Set IPic = PictureFromObject(pic, False)[/I][/COLOR]
Mong Anh chỉ giáo.
 
Em có hình ở ổ D\Picture\BeTu, thì sửa :
Image1.Picture = LoadPicture(ThisWorkbook.Path & "D\Picture\BeTu.jpg") hả Anh Nghĩa?????
Có cần chỉnh lại chổ code này không:
Mã:
[COLOR=#000000][I]Set pic = Sheet1.Pictures(PicName)
[/I][/COLOR][COLOR=#000000][I]Set IPic = PictureFromObject(pic, False)[/I][/COLOR]
Mong Anh chỉ giáo.
Trùi ui! Tôi nói rất rõ là màu đỏ là đường dẫn, vậy nếu có đường dẫn sẳn thì quất vô luôn chứ thêm cái ThisWorkbook.Path vô làm cái chi!

Chỉ cần thế này là đủ:

Image1.Picture = LoadPicture("D\Picture\BeTu.jpg")
 
Chắc như vầy mới chạy được: LoadPicture("D:\Picture\BeTu.jpg")
 
Anh Nghĩa cho em hỏi:
em đã chỉnh ("D:\Picture\BeTu\A00001.jpg") nhưng chỉ có load ảnh A00001 thôi còn mấy ảnh khác thì không(Trong BeTu có khoảng 50 ảnh)
Em muốn giống như File của Thầy Ndu là load tên ảnh vào trong ListBox1(Chỉ em cách nạp tên ảnh vào ListBox1 với). Ví dụ "BeTu" có 50 ảnh thì nạp vào ListBox1 50 ảnh từ A00001 -> A00050. và rối chọn tên ảnh thi Show ảnh vào Image1.
 
Chỉ cần câu lệnh này thôi bạn:

Image1.Picture = LoadPicture(ThisWorkbook.Path & "\Picture\Logo.jpg")

Muốn cái gì có hình thì thay chữ Image1, màu đỏ là đường dẫn, còn màu xanh là tên đầy đủ của hình.

Chú ý: Show hình lên Form không bao giờ được dùng định dạng .PNG

Cảm ơn bạn nhé
Mình đã làm được theo gợi ý của bạn rồi.
Học cái này cũng 1 phần là tự mày mò. nếu không có người chỉ cho thì khó thật. Có hướng dẫn cái là ngon ngay.Hi
 
Em có hình ở ổ D\Picture\BeTu, thì sửa :
Image1.Picture = LoadPicture(ThisWorkbook.Path & "D\Picture\BeTu.jpg") hả Anh Nghĩa?????
Có cần chỉnh lại chổ code này không:
Mã:
[COLOR=#000000][I]Set pic = Sheet1.Pictures(PicName)
[/I][/COLOR][COLOR=#000000][I]Set IPic = PictureFromObject(pic, False)[/I][/COLOR]
Mong Anh chỉ giáo.

Còn nếu Folder anh không cố định. (Bạn để folder anh và file Excel nguồn trong cùng 1 folder). có thể tiện lợi copy nhiều nơi. thì có thể làm như tôi bên dưới. Bạn đọc code của tôi chắc là hiểu và vận dụng

Dim DuongDan As String
DuongDan = ThisWorkbook.Path
If Right(DuongDan, 1) <> "" Then DuongDan = DuongDan & ""
DuongDan = DuongDan & "Anh NVL"
Application.Calculation = xlCalculationManual
On Error Resume Next
Me.Image1.Picture = LoadPicture(DuongDan & Me.TenNVL.Value & ".jpg")
 
Cám ơn bạn. Mình tham gia GPE đã lâu mà "Dốt" quá. Mình chả hiểu gì về code cả, hay bạn và các AC viết luôn code cho mình , mình "bê" vào luôn(Đường dẫn: D:\Picture\BeTu\A00001.jpg)
Cám Ơn nhiều.
 
Mong Mọi người giúp em với.
 
Thầy Ndu chỉ em cách đưa ảnh vào cột G của sheet1 với. (Vì không biết làm, nên đành hỏi Thầy Ndu cách chèn ảnh vào cột G, rồi lấy code của Thây mà làm thôi. chứ tính làm Folder như ANh Nghĩa chỉ mà không biết làm)
 
Thầy Ndu chỉ em cách đưa ảnh vào cột G của sheet1 với. (Vì không biết làm, nên đành hỏi Thầy Ndu cách chèn ảnh vào cột G, rồi lấy code của Thây mà làm thôi. chứ tính làm Folder như ANh Nghĩa chỉ mà không biết làm)

Giả sử ta có 1 file trong đó có 1 sheet tên là "Sheet1".

Ta cũng có 1 thư mục chứa hình với đường dẫn: "D:\Picture\BeTu"

Trong thư mục BeTu có 50 hình ảnh, với tên hình từ "
A00001.jpg" đến "A00050.jpg", như thế, điểm chung là màu đỏ và điểm riêng là màu xanh, vì thế đường dẫn ta có những điểm chung như sau:

PicPath = "D:\Picture\BeTu\A000"

và điểm riêng sẽ thêm vào đó là: Format(c, "00"""".jpg""")

Ta lại thêm hình vào các ô từ G1 đến G50, vì thế ta phải căn độ rộng và độ cao của mỗi ô sao cho hợp lý để hình được chèn vào mỗi ô cho vừa khít ô đó.

Căn cứ vào các logic đó, tôi tưởng tượng ra một thủ tục để viết cho bạn như sau, bạn chép vào file và test nhé:

Mã:
Mã:
Sub InsertPicture()
    Dim c As Long
    Dim WS As Worksheet
    Dim Target As Range
    Dim PicPath As String
[COLOR=#ff0000]    Set WS = Sheets("Sheet1")[/COLOR]
    PicPath = "D:\Picture\BeTu\A000"
    On Error Resume Next
    For c = 1 To 50
        Set Target = WS.Range("G1")(c)
[COLOR=#00ff00]        'Xoa hinh cu neu ton tai:[/COLOR]
        WS.Shapes("$G$" & c).Delete
[COLOR=#00ff00]        'Nhap hinh moi vao cell:[/COLOR]
        With [B]WS.Pictures.Insert[/B]([COLOR=#ff0000]PicPath [/COLOR][COLOR=#0000ff]& Format(c, "00"""".jpg""")[/COLOR])
            .Name = Target.Address
            .Left = Target.Left
            .Top = Target.Top
            .Width = Target.Width
            .Height = Target.Height
        End With
    Next
End Sub
 
Cám ơn Anh. Em đã Test, đã nạp hình, nhưng chọn ở listBox thì không hiện hình. Mong Anh xem giúp.
 
Cám ơn Anh. Em đã Test, đã nạp hình, nhưng chọn ở listBox thì không hiện hình. Mong Anh xem giúp.
Bạn nghĩ rằng tôi có thể tưởng tượng tiếp nếu tôi chả biết con mịa gì ở cái file của bạn và cách thức nạp hình như thế nào sao?
 
Thì em lấy i xì file của Thầy Ndu và code InsertPicture của Anh vào và chạy thôi.
File đây ah!!!
 

File đính kèm

  • LoadPic2Form.xls
    181.5 KB · Đọc: 14
Em dốt quá, mong ANh thông cảm, nhưng em thấy kỳ là nó đã nạp hình vào sheet1, thế mà chọn tên tring ListBox vẫn hiện ra hình của Thầy Ndu. Mong Anh giúp em.
 
Mong mọi người giúp em với!!!!!
 
Em dốt quá, mong ANh thông cảm, nhưng em thấy kỳ là nó đã nạp hình vào sheet1, thế mà chọn tên tring ListBox vẫn hiện ra hình của Thầy Ndu. Mong Anh giúp em.
File của bạn tự xóa thủ công hình hết đi, rồi nhập lại hình mới bằng code này:

Mã:
Sub InsertPicture()
    Dim c As Long
    Dim WS As Worksheet
    Dim Target As Range
    Dim PicPath As String, PicName As String
    Set WS = Sheets("Sheet1")
    PicPath = "D:\Nhan More\"
    On Error Resume Next
    For c = 1 To 5
        Set Target = WS.Range("G2")(c)
        PicName = "A000" & Format(c, "00"""".jpg""")
        'Xoa hinh cu neu ton tai:
        WS.Shapes(PicName).Delete
        'Nhap hinh moi vao cell:
        With WS.Pictures.Insert(PicPath & PicName)
            .Name = PicName
            .Left = Target.Left
            .Top = Target.Top
            .Width = Target.Width
            .Height = Target.Height
        End With
    Next
End Sub

Tội nghiệp quá, khóc quài!
 
Cám ơn Anh Nghĩa đã thương giúp em, nhưng sao không nạp tên ảnh vào ListBox để chọn hả Anh Nghĩa, mà em chọn ID A00001 thì không hiện ảnh vào Image1. Mong Anh giúp em với!!!!
 
Status
Không mở trả lời sau này.
Web KT
Back
Top Bottom