Chào các anh/chị!
Có quá nhiều thứ để học mà thời gian, thêm nữa là đầu óc có hạn. Em đang tìm hiểu tạo Ribbon cho excel bằng Custom UI. Tuy nhiên, việc tìm tên của các imageMso thì không biết tìm ở đâu (hoặc có thể từ khóa tìm kiếm em gõ không chính xác).
Em muốn xin các danh sách các imageMso trong Custom UI (có hình đính kèm càng tốt ạ)
Em cảm ơn
Chào các anh/chị!
Có quá nhiều thứ để học mà thời gian, thêm nữa là đầu óc có hạn. Em đang tìm hiểu tạo Ribbon cho excel bằng Custom UI. Tuy nhiên, việc tìm tên của các imageMso thì không biết tìm ở đâu (hoặc có thể từ khóa tìm kiếm em gõ không chính xác).
Em muốn xin các danh sách các imageMso trong Custom UI (có hình đính kèm càng tốt ạ)
Em cảm ơn
Em tìm trên mạng theo từ khóa Imagemso list ra cái addin này hiển thị các ImageMSO và hình ảnh của chúng ở thẻ Developer
Em đăng lên để những người cùng có nhu cầu tìm hiểu!
Bác tham khảo ở đây nhé: https://www.ka-net.org/blog/?p=11361#idO
Nếu bác làm các chức năng tương tự của excel thì dùng imagemso được, nhưng nếu bác làm mấy cái chức năng chuyên ngành thì dùng mấy ảnh ở ngoài nó hợp hơn
Bác tham khảo ở đây nhé: https://www.ka-net.org/blog/?p=11361#idO
Nếu bác làm các chức năng tương tự của excel thì dùng imagemso được, nhưng nếu bác làm mấy cái chức năng chuyên ngành thì dùng mấy ảnh ở ngoài nó hợp hơn
Tức mỗi khi ribbon cần ảnh để hiển thị thì nó sẽ gọi sub GetButtonImage để lấy ảnh. Khi nào cần? Khi lần đầu tiên hiển thị thẻ tự tạo, và mỗi khi code gọi phương thức Invalidate*** của ribbon nếu có.
Trong code phải có
Sub GetButtonImage(control As IRibbonControl, ByRef returnedVal)
End Sub
Do GetButtonImage được gán cho getImage của 2 button nên nó sẽ được gọi 2 lần. 1 lần với control là button với id = "GCDM", lần 2 với control là button có id = "GCNA". Tức control.ID = "GCDM" và control.ID = "GCNA"
---------------
Ví dụ về một code hoàn chỉnh:
Mã:
Private rb As IRibbonUI
Sub RibbonLoad(ribbon As IRibbonUI)
Set rb = ribbon
End Sub
Sub GetButtonImage(control As IRibbonControl, ByRef returnedVal)
Dim filename
filename = Application.GetOpenFilename("Tap tin anh (*.bmp; *.gif; *.jpg; *.ico), *.bmp; *.gif; *.jpg; *.ico", Title:="Hay chon anh cho " & control.ID)
If filename <> False Then Set returnedVal = LoadPicture(filename)
End Sub
Sub Goi_cho_DM(control As IRibbonControl)
MsgBox "Goi cho em " & control.ID
End Sub
Sub Goi_choNA(control As IRibbonControl)
MsgBox "Goi cho em " & control.ID
End Sub
Khi mở tập tin và chọn thẻ "Du Lieu" thì sẽ có cửa sổ với tiêu đề = "Hay chon anh cho GCDM" để chọn ảnh cho button "GCDM". Tiếp theo là cửa sổ với tiêu đề = "Hay chon anh cho GCNA" để chọn ảnh cho button "GCNA".
Dòng quan trong nhất là returnedVal = LoadPicture(filename). Tức phải trả về trong biến returnedVal ảnh cần cung cấp (IPictureDisp). Nói cho cùng thì chỉ cần trả về trong returnedVal một IPictureDisp. LoadPicture(filename) trả về IPictureDisp. Nhưng nếu có ảnh trên sheet thì có thể viết code để nó trả về một IPictureDisp.
Trong code ở trên filename là do chọn trong cửa sổ hộp thoại. Nhưng tất nhiên có thể nhập cứng, vd.
Mã:
Sub GetButtonImage(control As IRibbonControl, ByRef returnedVal)
Dim filename
If control.ID = "GCDM" Then
filename = "D:\mang.jpg"
ElseIf control.ID = "GCNA" Then
filename = "D:\gau.jpg"
End If
If filename <> False Then Set returnedVal = LoadPicture(filename)
End Sub
Cũng có thể không nhập 1 ảnh cố định mà nhập các ảnh khác nhau tùy theo điều kiện. Dưới đây ảnh cho "GCDM" được tùy chọn:
Mã:
Sub GetButtonImage(control As IRibbonControl, ByRef returnedVal)
Dim filename
If control.ID = "GCDM" Then
Select Case Day(Date)
Case Is < 10: filename = "D:\bikini.jpg"
Case Is < 20: filename = "D:\topless.jpg"
Case Else: filename = "D:\as god created.jpg"
End Select
ElseIf control.ID = "GCNA" Then
filename = "D:\gau.jpg"
End If
If filename <> False Then Set returnedVal = LoadPicture(filename)
End Sub
Em làm theo hướng dẫn rất chi tiết của anh @batman1 tuy nhiên lại bị lỗi ở một ảnh "Facebook.jpg" này không rõ nguyên nhân là gì em gửi file lên, chụp hình lỗi không biết anh có thể chỉ giúp em nguyên nhân lỗi để lần khác em thao tác có thể tránh được không
Lọ mọ mãi không ra lỗi gì
Em lan man 1 chút Cách học của em cũng hơi củ chuối của em. Ví dụ em tìm được file hay trên GPE em cũng hay tự tìm hiểu, mày mò tạo lại file giống vậy có lúc hiểu được làm được y hệt, có lúc đi vướng quá không thể làm theo như mấy cái API, Classmodule thì làm theo cách khác mô tả giống theo ý của file đó. Cho nên dụng ý của anh em hiểu điều đó. Đầu óc có hạn nên em cũng phải vận động thao tác lại để hiểu hơn hoặc chí ít thuộc lòng cách làm hoặc là gặp các lỗi khác nhau trong quá trình làm để tìm hiểu thêm.
Cảm ơn anh @giaiphap đã giúp đỡ!