TÜM ? OBJE HTML NVB

sabangul67@gmail.com
Ağustos 25, 202618 dk okuma1 görüntülenme
\' Üretilmiştir
\' Daha Fazlası İçin: sabangul.com
\' Hata, İstek ve Öneriler İçin: sabangul67@gmail.com
\' Makro Başlığı: Netcad Objelerini Sekmeli HTML Raporuna Dönüştürme
\' Makro Hakkında:
\' - Tüm Netcad objelerini (tag 0-10) türlerine ayırır ve tek HTML’de sekmeli rapor oluşturur.
\' - Her sekmede obje özellikler tablo halinde (örn. oline: alan; ocircle: rad).
\' - Tablolar DataTables ile arama, sıralama butonları ve Excel export destekler.
\' - 50’li, 100’lü kayıt gösterim seçenekleri ekli.
\' - HTML UTF-8 BOM ile kaydedilir (Türkçe karakter desteği).

Option Explicit

Sub Main
    Dim i, j, obj, SEL, fso, stream
    Dim obj_lists, obj_types, key
    Dim html_yol, tabaka_indeks, tabaka_ad
    Dim shell, folder, row
    Dim html_content

    With Netcad
        \' Dosya seçimi
        Dim default_path
        default_path = \"C:\\Users\\elify\\Desktop\\Yeni klasör (2)\\Proje_\" & Year(Now) & Right(\"0\" & Month(Now), 2) & Right(\"0\" & Day(Now), 2) & \"_\" & Right(\"0\" & Hour(Now), 2) & Right(\"0\" & Minute(Now), 2) & \".html\"
        html_yol = InputBox(\"HTML Raporu Kaydet (varsayılan: \" & default_path & \")\", \"Dosya Kaydet\", default_path)
        If html_yol = \"\" Then
            MsgBox \"Dosya kaydetme işlemi iptal edildi!\", 16, \"Hata\"
            Exit Sub
        End If
        Set fso = CreateObject(\"Scripting.FileSystemObject\")
        If fso.FileExists(html_yol) Then
            If MsgBox(\"Dosya zaten var. Üzerine yazılsın mı?\", 36, \"Uyarı\") = 7 Then
                Exit Sub
            End If
        End If

        \' Obje listeleri ve türleri
        Set obj_lists = CreateObject(\"Scripting.Dictionary\")
        Set obj_types = CreateObject(\"Scripting.Dictionary\")
        obj_types.Add 0, \"oline\"
        obj_types.Add 1, \"opoint\"
        obj_types.Add 2, \"ocircle\"
        obj_types.Add 3, \"oarc\"
        obj_types.Add 4, \"opline3d\"
        obj_types.Add 5, \"otext\"
        obj_types.Add 6, \"osymbol\"
        obj_types.Add 7, \"opline\"
        obj_types.Add 8, \"omline\"
        obj_types.Add 9, \"oregion\"
        obj_types.Add 10, \"oellipse\"
        For i = 0 To 10
            obj_lists.Add obj_types(i), CreateObject(\"System.Collections.ArrayList\")
        Next

        \' Obje seçimi
        Set SEL = .NewSelectionSet
        Set obj = .NewObject
        If SEL.Select(\"Raporlanacak objeleri seçiniz\", Array()) Then
            For i = 0 To SEL.NE - 1
                j = SEL.GetSelectedObject(i, obj)
                tabaka_indeks = obj.tabaka
                tabaka_ad = .LayerNameOf(tabaka_indeks)
                If tabaka_indeks = -1 Then tabaka_ad = \"Bilinmeyen\"

                Select Case obj.Tag
                    Case 0 \' oline
                        obj_lists(\"oline\").Add Array(j, obj.objname, tabaka_ad, obj.renk, Left(obj.pname, 50), obj.w, obj.lt, obj.length(0))
                    Case 1 \' opoint
                        obj_lists(\"opoint\").Add Array(j, obj.cls, tabaka_ad, obj.renk, Left(obj.pname, 50), obj.pcode, obj.p1.x, obj.p1.y, obj.p1.z)
                    Case 2 \' ocircle
                        obj_lists(\"ocircle\").Add Array(j, obj.cls, tabaka_ad, obj.renk, Left(obj.pname, 50), obj.p1.x, obj.p1.y, obj.rad)
                    Case 3 \' oarc
                        obj_lists(\"oarc\").Add Array(j, obj.cls, tabaka_ad, obj.renk, Left(obj.pname, 50), obj.p1.x, obj.p1.y, obj.rad, obj.startangle, obj.endangle)
                    Case 4 \' opline3d
                        Dim pline, koseler, k
                        Set pline = obj.GetObjectAsPline()
                        koseler = \"\"
                        For k = 0 To pline.Num - 1
                            koseler = koseler & \"(\" & pline.Cor(k).x & \",\" & pline.Cor(k).y & \",\" & pline.Cor(k).z & \")\"
                            If k < pline.Num - 1 Then koseler = koseler & \"; \"
                        Next
                        obj_lists(\"opline3d\").Add Array(j, obj.objname, tabaka_ad, obj.renk, Left(obj.pname, 50), obj.w, obj.lt, koseler)
                    Case 5 \' otext
                        obj_lists(\"otext\").Add Array(j, obj.cls, tabaka_ad, obj.renk, Left(obj.s, 50), obj.p1.x, obj.p1.y, obj.angle, obj.wsc, obj.sc, obj.just, obj.flags)
                    Case 6 \' osymbol
                        obj_lists(\"osymbol\").Add Array(j, obj.cls, tabaka_ad, obj.renk, Left(obj.pname, 50), obj.p1.x, obj.p1.y, obj.angle)
                    Case 7 \' opline
                        Set pline = obj.GetObjectAsPline()
                        koseler = \"\"
                        For k = 0 To pline.Num - 1
                            koseler = koseler & \"(\" & pline.Cor(k).x & \",\" & pline.Cor(k).y & \",\" & pline.Cor(k).z & \")\"
                            If k < pline.Num - 1 Then koseler = koseler & \"; \"
                        Next
                        obj_lists(\"opline\").Add Array(j, obj.objname, tabaka_ad, obj.renk, Left(obj.pname, 50), obj.w, obj.lt, obj.length(0), obj.tarea, obj.area, koseler)
                    Case 8 \' omline
                        obj_lists(\"omline\").Add Array(j, obj.objname, tabaka_ad, obj.renk, Left(obj.pname, 50), obj.w, obj.lt, obj.length(0))
                    Case 9 \' oregion
                        obj_lists(\"oregion\").Add Array(j, obj.objname, tabaka_ad, obj.renk, Left(obj.pname, 50), obj.area)
                    Case 10 \' oellipse
                        obj_lists(\"oellipse\").Add Array(j, obj.cls, tabaka_ad, obj.renk, Left(obj.pname, 50), obj.p1.x, obj.p1.y, obj.majrad, obj.minrad, obj.angle)
                End Select
            Next
            SEL.RedrawAndRewind
        Else
            MsgBox \"Hiç obje seçilmedi!\", 16, \"Hata\"
            Exit Sub
        End If

        \' HTML içeriği
        html_content = \"<!DOCTYPE html>\" & vbCrLf
        html_content = html_content & \"<html lang=\'tr\'>\" & vbCrLf
        html_content = html_content & \"<head>\" & vbCrLf
        html_content = html_content & \"<meta charset=\'UTF-8\'>\" & vbCrLf
        html_content = html_content & \"<title>Netcad Obje Raporu</title>\" & vbCrLf
        html_content = html_content & \"<link href=\'https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css\' rel=\'stylesheet\'>\" & vbCrLf
        html_content = html_content & \"<link href=\'https://cdn.datatables.net/1.13.4/css/dataTables.bootstrap5.min.css\' rel=\'stylesheet\'>\" & vbCrLf
        html_content = html_content & \"<link href=\'https://cdn.datatables.net/buttons/2.3.6/css/buttons.bootstrap5.min.css\' rel=\'stylesheet\'>\" & vbCrLf
        html_content = html_content & \"<script src=\'https://code.jquery.com/jquery-3.6.0.min.js\'></script>\" & vbCrLf
        html_content = html_content & \"<script src=\'https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js\'></script>\" & vbCrLf
        html_content = html_content & \"<script src=\'https://cdn.datatables.net/1.13.4/js/jquery.dataTables.min.js\'></script>\" & vbCrLf
        html_content = html_content & \"<script src=\'https://cdn.datatables.net/1.13.4/js/dataTables.bootstrap5.min.js\'></script>\" & vbCrLf
        html_content = html_content & \"<script src=\'https://cdn.datatables.net/buttons/2.3.6/js/dataTables.buttons.min.js\'></script>\" & vbCrLf
        html_content = html_content & \"<script src=\'https://cdn.datatables.net/buttons/2.3.6/js/buttons.bootstrap5.min.js\'></script>\" & vbCrLf
        html_content = html_content & \"<script src=\'https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js\'></script>\" & vbCrLf
        html_content = html_content & \"<script src=\'https://cdn.datatables.net/buttons/2.3.6/js/buttons.html5.min.js\'></script>\" & vbCrLf
        html_content = html_content & \"<style>\" & vbCrLf
        html_content = html_content & \"body { font-family: Arial, sans-serif; margin: 20px; }\" & vbCrLf
        html_content = html_content & \".nav-tabs { margin-bottom: 20px; }\" & vbCrLf
        html_content = html_content & \"table { width: 100%; }\" & vbCrLf
        html_content = html_content & \"th, td { text-align: left; padding: 8px; }\" & vbCrLf
        html_content = html_content & \".dt-buttons { margin-bottom: 10px; }\" & vbCrLf
        html_content = html_content & \".dataTables_filter { margin-bottom: 10px; }\" & vbCrLf
        html_content = html_content & \".dataTables_length { margin-bottom: 10px; }\" & vbCrLf
        html_content = html_content & \".sort-btn { cursor: pointer; padding: 2px 5px; margin-left: 5px; }\" & vbCrLf
        html_content = html_content & \"</style>\" & vbCrLf
        html_content = html_content & \"</head>\" & vbCrLf
        html_content = html_content & \"<body>\" & vbCrLf
        html_content = html_content & \"<h2>Netcad Obje Raporu</h2>\" & vbCrLf
        html_content = html_content & \"<p>Üretilmiştir. Daha Fazlası İçin: <a href=\'http://www.sabangul.com\'>www.sabangul.com</a></p>\" & vbCrLf

        \' Sekmeler
        html_content = html_content & \"<ul class=\'nav nav-tabs\' id=\'objeTabs\' role=\'tablist\'>\" & vbCrLf
        Dim first_tab: first_tab = True
        For Each key In obj_lists.Keys
            If obj_lists(key).Count > 0 Then
                html_content = html_content & \"<li class=\'nav-item\' role=\'presentation\'>\" & vbCrLf
                html_content = html_content & \"<button class=\'nav-link\" & IIf(first_tab, \" active\", \"\") & \"\' id=\'\" & key & \"-tab\' data-bs-toggle=\'tab\' data-bs-target=\'#\" & key & \"\' type=\'button\' role=\'tab\'>\" & UCase(Left(key, 1)) & Mid(key, 2) & \" (\" & obj_lists(key).Count & \")</button>\" & vbCrLf
                html_content = html_content & \"</li>\" & vbCrLf
                first_tab = False
            End If
        Next
        html_content = html_content & \"</ul>\" & vbCrLf

        \' Sekme içerikleri
        html_content = html_content & \"<div class=\'tab-content\' id=\'objeTabsContent\'>\" & vbCrLf
        first_tab = True
        For Each key In obj_lists.Keys
            If obj_lists(key).Count > 0 Then
                html_content = html_content & \"<div class=\'tab-pane fade\" & IIf(first_tab, \" show active\", \"\") & \"\' id=\'\" & key & \"\' role=\'tabpanel\'>\" & vbCrLf
                html_content = html_content & \"<table id=\'\" & key & \"Table\' class=\'table table-striped\'>\" & vbCrLf
                html_content = html_content & \"<thead><tr>\" & vbCrLf

                \' Sütun başlıkları ve sıralama butonları
                Select Case key
                    Case \"oline\"
                        html_content = html_content & \"<th>ID <span class=\'sort-btn\' data-col=\'0\' style=\'display:none;\'>▲</span></th><th>GIS Kodu <span class=\'sort-btn\' data-col=\'1\' style=\'display:none;\'>▲</span></th><th>Tabaka Adı <span class=\'sort-btn\' data-col=\'2\' style=\'display:none;\'>▲</span></th><th>Renk <span class=\'sort-btn\' data-col=\'3\' style=\'display:none;\'>▲</span></th><th>Adı <span class=\'sort-btn\' data-col=\'4\' style=\'display:none;\'>▲</span></th><th>Kalınlık <span class=\'sort-btn\' data-col=\'5\' style=\'display:none;\'>▲</span></th><th>Çizgi Tipi <span class=\'sort-btn\' data-col=\'6\' style=\'display:none;\'>▲</span></th><th>Uzunluk <span class=\'sort-btn\' data-col=\'7\' style=\'display:none;\'>▲</span></th>\" & vbCrLf
                    Case \"opoint\"
                        html_content = html_content & \"<th>ID <span class=\'sort-btn\' data-col=\'0\' style=\'display:none;\'>▲</span></th><th>GIS Sınıfı <span class=\'sort-btn\' data-col=\'1\' style=\'display:none;\'>▲</span></th><th>Tabaka Adı <span class=\'sort-btn\' data-col=\'2\' style=\'display:none;\'>▲</span></th><th>Renk <span class=\'sort-btn\' data-col=\'3\' style=\'display:none;\'>▲</span></th><th>Adı <span class=\'sort-btn\' data-col=\'4\' style=\'display:none;\'>▲</span></th><th>Nokta Kodu <span class=\'sort-btn\' data-col=\'5\' style=\'display:none;\'>▲</span></th><th>X <span class=\'sort-btn\' data-col=\'6\' style=\'display:none;\'>▲</span></th><th>Y <span class=\'sort-btn\' data-col=\'7\' style=\'display:none;\'>▲</span></th><th>Z <span class=\'sort-btn\' data-col=\'8\' style=\'display:none;\'>▲</span></th>\" & vbCrLf
                    Case \"ocircle\"
                        html_content = html_content & \"<th>ID <span class=\'sort-btn\' data-col=\'0\' style=\'display:none;\'>▲</span></th><th>GIS Sınıfı <span class=\'sort-btn\' data-col=\'1\' style=\'display:none;\'>▲</span></th><th>Tabaka Adı <span class=\'sort-btn\' data-col=\'2\' style=\'display:none;\'>▲</span></th><th>Renk <span class=\'sort-btn\' data-col=\'3\' style=\'display:none;\'>▲</span></th><th>Adı <span class=\'sort-btn\' data-col=\'4\' style=\'display:none;\'>▲</span></th><th>Merkez X <span class=\'sort-btn\' data-col=\'5\' style=\'display:none;\'>▲</span></th><th>Merkez Y <span class=\'sort-btn\' data-col=\'6\' style=\'display:none;\'>▲</span></th><th>Rad <span class=\'sort-btn\' data-col=\'7\' style=\'display:none;\'>▲</span></th>\" & vbCrLf
                    Case \"oarc\"
                        html_content = html_content & \"<th>ID <span class=\'sort-btn\' data-col=\'0\' style=\'display:none;\'>▲</span></th><th>GIS Sınıfı <span class=\'sort-btn\' data-col=\'1\' style=\'display:none;\'>▲</span></th><th>Tabaka Adı <span class=\'sort-btn\' data-col=\'2\' style=\'display:none;\'>▲</span></th><th>Renk <span class=\'sort-btn\' data-col=\'3\' style=\'display:none;\'>▲</span></th><th>Adı <span class=\'sort-btn\' data-col=\'4\' style=\'display:none;\'>▲</span></th><th>Merkez X <span class=\'sort-btn\' data-col=\'5\' style=\'display:none;\'>▲</span></th><th>Merkez Y <span class=\'sort-btn\' data-col=\'6\' style=\'display:none;\'>▲</span></th><th>Rad <span class=\'sort-btn\' data-col=\'7\' style=\'display:none;\'>▲</span></th><th>Başlangıç Açısı <span class=\'sort-btn\' data-col=\'8\' style=\'display:none;\'>▲</span></th><th>Bitiş Açısı <span class=\'sort-btn\' data-col=\'9\' style=\'display:none;\'>▲</span></th>\" & vbCrLf
                    Case \"opline3d\"
                        html_content = html_content & \"<th>ID <span class=\'sort-btn\' data-col=\'0\' style=\'display:none;\'>▲</span></th><th>GIS Kodu <span class=\'sort-btn\' data-col=\'1\' style=\'display:none;\'>▲</span></th><th>Tabaka Adı <span class=\'sort-btn\' data-col=\'2\' style=\'display:none;\'>▲</span></th><th>Renk <span class=\'sort-btn\' data-col=\'3\' style=\'display:none;\'>▲</span></th><th>Adı <span class=\'sort-btn\' data-col=\'4\' style=\'display:none;\'>▲</span></th><th>Kalınlık <span class=\'sort-btn\' data-col=\'5\' style=\'display:none;\'>▲</span></th><th>Çizgi Tipi <span class=\'sort-btn\' data-col=\'6\' style=\'display:none;\'>▲</span></th><th>Köşe Noktaları <span class=\'sort-btn\' data-col=\'7\' style=\'display:none;\'>▲</span></th>\" & vbCrLf
                    Case \"otext\"
                        html_content = html_content & \"<th>ID <span class=\'sort-btn\' data-col=\'0\' style=\'display:none;\'>▲</span></th><th>GIS Sınıfı <span class=\'sort-btn\' data-col=\'1\' style=\'display:none;\'>▲</span></th><th>Tabaka Adı <span class=\'sort-btn\' data-col=\'2\' style=\'display:none;\'>▲</span></th><th>Renk <span class=\'sort-btn\' data-col=\'3\' style=\'display:none;\'>▲</span></th><th>Metin <span class=\'sort-btn\' data-col=\'4\' style=\'display:none;\'>▲</span></th><th>X Koordinatı <span class=\'sort-btn\' data-col=\'5\' style=\'display:none;\'>▲</span></th><th>Y Koordinatı <span class=\'sort-btn\' data-col=\'6\' style=\'display:none;\'>▲</span></th><th>Açı (Grad) <span class=\'sort-btn\' data-col=\'7\' style=\'display:none;\'>▲</span></th><th>Genişlik Çarpanı <span class=\'sort-btn\' data-col=\'8\' style=\'display:none;\'>▲</span></th><th>Yazı Boyu <span class=\'sort-btn\' data-col=\'9\' style=\'display:none;\'>▲</span></th><th>Dayanma <span class=\'sort-btn\' data-col=\'10\' style=\'display:none;\'>▲</span></th><th>Özellikler <span class=\'sort-btn\' data-col=\'11\' style=\'display:none;\'>▲</span></th>\" & vbCrLf
                    Case \"osymbol\"
                        html_content = html_content & \"<th>ID <span class=\'sort-btn\' data-col=\'0\' style=\'display:none;\'>▲</span></th><th>GIS Sınıfı <span class=\'sort-btn\' data-col=\'1\' style=\'display:none;\'>▲</span></th><th>Tabaka Adı <span class=\'sort-btn\' data-col=\'2\' style=\'display:none;\'>▲</span></th><th>Renk <span class=\'sort-btn\' data-col=\'3\' style=\'display:none;\'>▲</span></th><th>Adı <span class=\'sort-btn\' data-col=\'4\' style=\'display:none;\'>▲</span></th><th>X Koordinatı <span class=\'sort-btn\' data-col=\'5\' style=\'display:none;\'>▲</span></th><th>Y Koordinatı <span class=\'sort-btn\' data-col=\'6\' style=\'display:none;\'>▲</span></th><th>Açı <span class=\'sort-btn\' data-col=\'7\' style=\'display:none;\'>▲</span></th>\" & vbCrLf
                    Case \"opline\"
                        html_content = html_content & \"<th>ID <span class=\'sort-btn\' data-col=\'0\' style=\'display:none;\'>▲</span></th><th>GIS Kodu <span class=\'sort-btn\' data-col=\'1\' style=\'display:none;\'>▲</span></th><th>Tabaka Adı <span class=\'sort-btn\' data-col=\'2\' style=\'display:none;\'>▲</span></th><th>Renk <span class=\'sort-btn\' data-col=\'3\' style=\'display:none;\'>▲</span></th><th>Adı <span class=\'sort-btn\' data-col=\'4\' style=\'display:none;\'>▲</span></th><th>Kalınlık <span class=\'sort-btn\' data-col=\'5\' style=\'display:none;\'>▲</span></th><th>Çizgi Tipi <span class=\'sort-btn\' data-col=\'6\' style=\'display:none;\'>▲</span></th><th>Çevre <span class=\'sort-btn\' data-col=\'7\' style=\'display:none;\'>▲</span></th><th>Tapu Alanı <span class=\'sort-btn\' data-col=\'8\' style=\'display:none;\'>▲</span></th><th>Hesap Alanı <span class=\'sort-btn\' data-col=\'9\' style=\'display:none;\'>▲</span></th><th>Köşe Noktaları <span class=\'sort-btn\' data-col=\'10\' style=\'display:none;\'>▲</span></th>\" & vbCrLf
                    Case \"omline\"
                        html_content = html_content & \"<th>ID <span class=\'sort-btn\' data-col=\'0\' style=\'display:none;\'>▲</span></th><th>GIS Kodu <span class=\'sort-btn\' data-col=\'1\' style=\'display:none;\'>▲</span></th><th>Tabaka Adı <span class=\'sort-btn\' data-col=\'2\' style=\'display:none;\'>▲</span></th><th>Renk <span class=\'sort-btn\' data-col=\'3\' style=\'display:none;\'>▲</span></th><th>Adı <span class=\'sort-btn\' data-col=\'4\' style=\'display:none;\'>▲</span></th><th>Kalınlık <span class=\'sort-btn\' data-col=\'5\' style=\'display:none;\'>▲</span></th><th>Çizgi Tipi <span class=\'sort-btn\' data-col=\'6\' style=\'display:none;\'>▲</span></th><th>Uzunluk <span class=\'sort-btn\' data-col=\'7\' style=\'display:none;\'>▲</span></th>\" & vbCrLf
                    Case \"oregion\"
                        html_content = html_content & \"<th>ID <span class=\'sort-btn\' data-col=\'0\' style=\'display:none;\'>▲</span></th><th>GIS Kodu <span class=\'sort-btn\' data-col=\'1\' style=\'display:none;\'>▲</span></th><th>Tabaka Adı <span class=\'sort-btn\' data-col=\'2\' style=\'display:none;\'>▲</span></th><th>Renk <span class=\'sort-btn\' data-col=\'3\' style=\'display:none;\'>▲</span></th><th>Adı <span class=\'sort-btn\' data-col=\'4\' style=\'display:none;\'>▲</span></th><th>Alan <span class=\'sort-btn\' data-col=\'5\' style=\'display:none;\'>▲</span></th>\" & vbCrLf
                    Case \"oellipse\"
                        html_content = html_content & \"<th>ID <span class=\'sort-btn\' data-col=\'0\' style=\'display:none;\'>▲</span></th><th>GIS Sınıfı <span class=\'sort-btn\' data-col=\'1\' style=\'display:none;\'>▲</span></th><th>Tabaka Adı <span class=\'sort-btn\' data-col=\'2\' style=\'display:none;\'>▲</span></th><th>Renk <span class=\'sort-btn\' data-col=\'3\' style=\'display:none;\'>▲</span></th><th>Adı <span class=\'sort-btn\' data-col=\'4\' style=\'display:none;\'>▲</span></th><th>Merkez X <span class=\'sort-btn\' data-col=\'5\' style=\'display:none;\'>▲</span></th><th>Merkez Y <span class=\'sort-btn\' data-col=\'6\' style=\'display:none;\'>▲</span></th><th>Büyük Rad <span class=\'sort-btn\' data-col=\'7\' style=\'display:none;\'>▲</span></th><th>Küçük Rad <span class=\'sort-btn\' data-col=\'8\' style=\'display:none;\'>▲</span></th><th>Açı <span class=\'sort-btn\' data-col=\'9\' style=\'display:none;\'>▲</span></th>\" & vbCrLf
                End Select
                html_content = html_content & \"</tr><tr>\" & vbCrLf

                \' Arama kutuları
                Dim col_count
                Select Case key
                    Case \"oline\", \"omline\", \"opline3d\", \"ocircle\", \"osymbol\" col_count = 8
                    Case \"opoint\" col_count = 9
                    Case \"oarc\", \"oellipse\" col_count = 10
                    Case \"opline\" col_count = 11
                    Case \"otext\" col_count = 12
                    Case \"oregion\" col_count = 6
                End Select
                For i = 1 To col_count
                    html_content = html_content & \"<th><input type=\'text\' class=\'column-search\' placeholder=\'Ara...\' style=\'width: 100%;\'></th>\" & vbCrLf
                Next
                html_content = html_content & \"</tr></thead><tbody>\" & vbCrLf

                \' Tablo içeriği
                For Each row In obj_lists(key)
                    html_content = html_content & \"<tr>\" & vbCrLf
                    For i = 0 To UBound(row)
                        html_content = html_content & \"<td>\" & Replace(Replace(row(i) & \"\", \"&\", \"&\"), \"<\", \"<\") & \"</td>\" & vbCrLf
                    Next
                    html_content = html_content & \"</tr>\" & vbCrLf
                Next
                html_content = html_content & \"</tbody></table></div>\" & vbCrLf
                first_tab = False
            End If
        Next
        html_content = html_content & \"</div>\" & vbCrLf

        \' DataTables başlatma
        html_content = html_content & \"<script>\" & vbCrLf
        html_content = html_content & \"$(document).ready(function() {\" & vbCrLf
        For Each key In obj_lists.Keys
            If obj_lists(key).Count > 0 Then
                html_content = html_content & \"$(\'#\" & key & \"Table\').DataTable({ \" & vbCrLf
                html_content = html_content & \"\'pageLength\': 50, \" & vbCrLf
                html_content = html_content & \"\'lengthMenu\': [50, 100, 250, -1], \" & vbCrLf
                html_content = html_content & \"\'dom\': \'lBfrtip\', \" & vbCrLf
                html_content = html_content & \"\'buttons\': [\'excel\'], \" & vbCrLf
                html_content = html_content & \"\'ordering\': false, \" & vbCrLf
                html_content = html_content & \"\'language\': { \" & vbCrLf
                html_content = html_content & \"\'search\': \'Genel Ara:\', \" & vbCrLf
                html_content = html_content & \"\'lengthMenu\': \'Göster _MENU_ kayıt\', \" & vbCrLf
                html_content = html_content & \"\'info\': \'_TOTAL_ kayıttan _START_ - _END_ arası gösteriliyor\', \" & vbCrLf
                html_content = html_content & \"\'paginate\': { \'first\': \'İlk\', \'last\': \'Son\', \'next\': \'Sonraki\', \'previous\': \'Önceki\' } \" & vbCrLf
                html_content = html_content & \"}, \" & vbCrLf
                html_content = html_content & \"\'initComplete\': function() { \" & vbCrLf
                html_content = html_content & \"var api = this.api(); \" & vbCrLf
                html_content = html_content & \"api.columns().every(function(index) { \" & vbCrLf
                html_content = html_content & \"var column = this; \" & vbCrLf
                html_content = html_content & \"var input = $(this.header()).next(\'tr\').find(\'th\').eq(index).find(\'input.column-search\'); \" & vbCrLf
                html_content = html_content & \"if (input.length > 0) { \" & vbCrLf
                html_content = html_content & \"input.off(\'keyup\').on(\'keyup\', function(e) { \" & vbCrLf
                html_content = html_content & \"if (e.key === \'Enter\' || e.type === \'keyup\') { \" & vbCrLf
                html_content = html_content & \"column.search(this.value).draw(); \" & vbCrLf
                html_content = html_content & \"} \" & vbCrLf
                html_content = html_content & \"}); \" & vbCrLf
                html_content = html_content & \"} \" & vbCrLf
                html_content = html_content & \"}); \" & vbCrLf
                html_content = html_content & \"// Sıralama butonları için olay ekle \" & vbCrLf
                html_content = html_content & \"$(\'.sort-btn\').on(\'click\', function() { \" & vbCrLf
                html_content = html_content & \"var col = $(this).data(\'col\'); \" & vbCrLf
                html_content = html_content & \"var isAsc = $(this).text() === \'▲\'; \" & vbCrLf
                html_content = html_content & \"$(this).closest(\'table\').find(\'.sort-btn\').text(\'▲\').hide(); \" & vbCrLf
                html_content = html_content & \"$(this).text(isAsc ? \'▼\' : \'▲\').show(); \" & vbCrLf
                html_content = html_content & \"api.column(col).order(isAsc ? \'asc\' : \'desc\').draw(); \" & vbCrLf
                html_content = html_content & \"}); \" & vbCrLf
                html_content = html_content & \"} \" & vbCrLf
                html_content = html_content & \"});\" & vbCrLf
            End If
        Next
        html_content = html_content & \"});\" & vbCrLf
        html_content = html_content & \"</script>\" & vbCrLf
        html_content = html_content & \"</body></html>\" & vbCrLf

        \' HTML\'yi UTF-8 BOM ile kaydet
        Set stream = CreateObject(\"ADODB.Stream\")
        With stream
            .Type = 2 \' adTypeText
            .Charset = \"utf-8\"
            .Open
            .WriteText html_content
            .SaveToFile html_yol, 2 \' adSaveCreateOverWrite
            .Close
        End With

        MsgBox \"HTML raporu başarıyla oluşturuldu: \" & html_yol, 64, \"Başarılı\"

        Set fso = Nothing
        Set stream = Nothing
        Set shell = Nothing
        Set folder = Nothing
        Set SEL = Nothing
        Set obj = Nothing
        Set obj_lists = Nothing
        Set obj_types = Nothing
    End With
End Sub

\' IIf fonksiyonu
Function IIf(expr, true_part, false_part)
    If expr Then
        IIf = true_part
    Else
        IIf = false_part
    End If
End Function
Yazar

sabangul67@gmail.com

Bu yazarın yayınladığı diğer içerikleri inceleyebilirsiniz.

Tüm yazıları