• Code VBA Access thiết lập Icon Sets cho Excel
  • Code VBA Access thiết lập Icon Sets cho Excel

    Minh Tiên > 29-10-20, 11:16 AM

    Nhờ ACE Pro giúp đỡ !
    Tiên có bài toán xuất dữ liệu ra Acc => Excel đã thực hiện OK (Format Font, border, Number, Hightlight) Tiếp theo Tiên muốn thiết lập Icon Sets Conditional Formatting cho cột dữ liệu nhưng không biết cách kết hợp. Tiên đã tham khảo Macro Excel và chỉnh cho đoạn code của mình như sau:
    Mã:
    Function Insert_iCon(oExcelWrSht As Object, StrRange As String)
        With oExcelWrSht.Range(StrRange).Select
            Selection.FormatConditions.AddIconSetCondition
            Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
            With .Selection.FormatConditions(1)
                .ReverseOrder = False
                .ShowIconOnly = False
                .IconSet = ActiveWorkbook.IconSets(xl3Arrows)
            End With
            Selection.FormatConditions(1).IconCriteria(1).Icon = xlIconRedDownArrow
            With .Selection.FormatConditions(1).IconCriteria(2)
                .Type = xlConditionValueNumber
                .Value = 0
                .Operator = 7
                .Icon = xlIconYellowDash
            End With
            With .Selection.FormatConditions(1).IconCriteria(3)
                .Type = xlConditionValueNumber
                .Value = 0
                .Operator = 5
                .Icon = xlIconGreenUpArrow
            End With
        End With
    End Function

    Nhưng khi chạy đến dòng 2 thì đã báo lỗi Run-time eror "424": Object required
    Nhờ ACE pro chỉ giáo gỡ lỗi giúp.
    Cảm ơn nhiều !
  • RE: Code VBA Access thiết lập Icon Sets cho Excel

    Minh Tiên > 29-10-20, 06:01 PM

    Sau khi mày mò gỡ lỗi từng dòng lệnh, mình đã giải quyết được yêu cầu của mình. Code:
    Mã:
    Function Format_iConTangGiam(oExcelWrSht As Object, StrRange As String)
        With oExcelWrSht.Range(StrRange)
            .FormatConditions.Delete
            .FormatConditions.AddIconSetCondition
            .FormatConditions(.FormatConditions.Count).SetFirstPriority
            With .FormatConditions(1)
                .ReverseOrder = False
                .ShowIconOnly = False
                .IconSet = .Application.ActiveWorkbook.IconSets(xl3Arrows)
            End With
            .FormatConditions(1).IconCriteria(1).Icon = xlIconRedDownArrow
            With .FormatConditions(1).IconCriteria(2)
                .Type = xlConditionValueNumber
                .Value = 0
                .Operator = 7
                .Icon = xlIconYellowDash
            End With
            With .FormatConditions(1).IconCriteria(3)
                .Type = xlConditionValueNumber
                .Value = 0
                .Operator = 5
                .Icon = xlIconGreenUpArrow
            End With
        End With
    End Function

    Vì là kết nối muộn nên khai báo thêm các biến toàn cục:
    Mã:
    Public Const xl3Arrows = 1
        Public Const xlIconRedDownArrow = 3
        Public Const xlIconGreenUpArrow = 1
        Public Const xlConditionValueNumber = 0
        Public Const xlIconYellowDash = 46

    Chương trình đã chạy theo y/c của mình.
    Thanks cả nhà quan tâm !
  • RE: Code VBA Access thiết lập Icon Sets cho Excel

    ongke0711 > 29-10-20, 06:33 PM

    Bạn không tính xuất ra một template Excel với các định dạng sẳn cho nhanh à? Hay dữ liệu xuất này không cố định cột?
  • RE: Code VBA Access thiết lập Icon Sets cho Excel

    Xuân Thanh > 31-10-20, 03:47 PM

    Nếu không khai báo biến toàn cục thì gán thẳng giá trị cho biến cũng được bởi access không hiểu định nghĩa giá trị các biến của macro excel khi khai báo muộn
  • RE: Code VBA Access thiết lập Icon Sets cho Excel

    Minh Tiên > 03-11-20, 09:47 AM

    (29-10-20, 06:33 PM)ongke0711 Đã viết: Bạn không tính xuất ra một template Excel với các định dạng sẳn cho nhanh à? Hay dữ liệu xuất này không cố định cột?

    Dữ liệu của mình xuất không cố định. Khi xuất tạo File mới (Nếu chưa có File), còn nếu đã có thì mở lên tạo thêm Sheet và xuất tiếp (nên không xuất qua file excel Temp).
    Hiện do có thể phải xuất một hay nhiều nội dung (Mỗi nội dung có thể ở 1 sheet hoặc nhiều sheet - Tùy theo yêu cầu (Khai báo dòng xuất và cột xuất), sau khi xuất sẽ format, sum, hightight, set icon biểu thị cho tăng giảm, ...) nên mình tạo nhiều class, mỗi class đảm nhiệm một nội dung.
    Hiện đã xuất thành công theo yêu cầu. Tuy nhiên mỗi class khi xuất phải mở/tạo Excel => Xuất => Lưu => Đóng nên chương trình nên còn chậm nếu chọn xuất 1 lúc nhiều nội dung.
    Mình đang nghiên cứu cách: Nếu xuất nhiều nội dung, chỉ cần mở 1 lần, xuất hết, lưu, rồi đóng (Ko phải đóng mở nhiều lần). Mình ko rãnh code bên Excel lắm nên đang mày mò/test từng dòng lệnh.
    ACE nào có kinh nghiệm, xin chia sẽ giúp.
    Thân./.
  • RE: Code VBA Access thiết lập Icon Sets cho Excel

    ongke0711 > 03-11-20, 08:50 PM

    (03-11-20, 09:47 AM)Minh Tiên Đã viết: Hiện do có thể phải xuất một hay nhiều nội dung (Mỗi nội dung có thể ở 1 sheet hoặc nhiều sheet - Tùy theo yêu cầu (Khai báo dòng xuất và cột xuất), sau khi xuất sẽ format, sum, hightight, set icon biểu thị cho tăng giảm, ...) nên mình tạo nhiều class, mỗi class đảm nhiệm một nội dung.
    Hiện đã xuất thành công theo yêu cầu. Tuy nhiên mỗi class khi xuất phải mở/tạo Excel => Xuất => Lưu => Đóng nên chương trình nên còn chậm nếu chọn xuất 1 lúc nhiều nội dung.

    Bạn rảnh thì cắt, gửi dữ liệu demo về việc xuất nhiều nội dung, nhiều sheet xem thử nhé.
    Tôi thấy khi mở một phiên làm việc Excel rồi, có thể tự động Add Sheet theo tên rồi đổ dữ liệu vô cho nó mà.
  • RE: Code VBA Access thiết lập Icon Sets cho Excel

    thuyyeu99 > 03-11-20, 09:32 PM

    (03-11-20, 08:50 PM)ongke0711 Đã viết:
    (03-11-20, 09:47 AM)Minh Tiên Đã viết: Hiện do có thể phải xuất một hay nhiều nội dung (Mỗi nội dung có thể ở 1 sheet hoặc nhiều sheet - Tùy theo yêu cầu (Khai báo dòng xuất và cột xuất), sau khi xuất sẽ format, sum, hightight, set icon biểu thị cho tăng giảm, ...) nên mình tạo nhiều class, mỗi class đảm nhiệm một nội dung.
    Hiện đã xuất thành công theo yêu cầu. Tuy nhiên mỗi class khi xuất phải mở/tạo Excel => Xuất => Lưu => Đóng nên chương trình nên còn chậm nếu chọn xuất 1 lúc nhiều nội dung.

    Bạn rảnh thì cắt, gửi dữ liệu demo về việc xuất nhiều nội dung, nhiều sheet xem thử nhé.
    Lâu lâu rảnh Comment hihi, anh nói em cũng cùng quan điểm, @minh tiên nói em chưa hình dung tới độ phúc tạp nó ra làm sao em cũng tò mò quá