اذهب الي المحتوي
أوفيسنا

الردود الموصى بها

قام بنشر (معدل)

الخبراء الافاضل

هذا الكود ابتكرة الخبير الفاضل خليفة اعادة الله الى المنتدى بالف سلامة

Private Sub EXCEL_Click()

 
    Dim folderPath As String
    Dim FilePath As String
    Dim FileName As String
    Dim xlApp As Object
    Dim xlWB As Object
    Dim xlWS As Object
    Dim LastRow As Long
    Dim lastCol As Long
    Dim NewRow As Long
    Dim C As Long

    ' التأكد من اختيار الشهر والسنة
    If Len(Me.MS_YR & "") = 0 Then
        MsgBox "الرجاء اختيار الشهر والسنة أولاً", vbExclamation + vbMsgBoxRight, "تنبيه"
        Me.MS_YR.SetFocus
        Exit Sub
    End If

    ' إنشاء فولدر حفظ النسخ بجوار القاعدة
    folderPath = CurrentProject.Path & "\Jo_Excel"
    If Dir(folderPath, vbDirectory) = "" Then MkDir folderPath

    ' اسم الملف مع التاريخ والوقت
    FileName = "اجمالى شــهر _" & Replace(Me.MS_YR.Value, "/", "-")     ' "_" & Format(Now, "yyyy-mm-dd_HH-MM-ss") & ".xlsx"
    FilePath = folderPath & "\" & FileName

    ' تصدير الاستعلام
    On Error Resume Next
    DoCmd.TransferSpreadsheet _
        acExport, _
        acSpreadsheetTypeExcel12Xml, _
        "Q_Total_Company_Excel", _
        FilePath, _
        True
    If Err.Number <> 0 Then
        MsgBox "خطأ عند التصدير: " & Err.Description
        Exit Sub
    End If
    On Error GoTo 0

    ' فتح Excel للتنسيق
    Set xlApp = CreateObject("Excel.Application")
    Set xlWB = xlApp.Workbooks.Open(FilePath)
    Set xlWS = xlWB.Sheets(1)
    xlApp.Visible = True

    ' آخر صف وعمود
    LastRow = xlWS.Cells(xlWS.Rows.count, 1).End(-4162).Row   ' xlUp
    lastCol = xlWS.Cells(1, xlWS.Columns.count).End(-4159).Column ' xlToLeft

    ' ==============================
    ' تثبيت الصف الأول بدون Select
    ' ==============================
    xlWS.Application.ActiveWindow.SplitRow = 1
    xlWS.Application.ActiveWindow.FreezePanes = True

    ' ==============================
    ' حدود لجميع الخلايا
    ' ==============================
    With xlWS.Range(xlWS.Cells(1, 1), xlWS.Cells(LastRow, lastCol)).Borders
        .LineStyle = 1
        .Weight = 2
    End With

    ' تنسيق العناوين
    With xlWS.Range(xlWS.Cells(1, 1), xlWS.Cells(1, lastCol))
        .Interior.Color = RGB(52, 152, 219)
        .Font.Color = RGB(255, 255, 255)
        .Font.Bold = True
        .HorizontalAlignment = -4108
        .VerticalAlignment = -4108
    End With

    ' ==============================
    ' إضافة صف الإجماليات أسفل البيانات
    ' ==============================
    NewRow = LastRow + 1

    ' دمج أول 4 أعمدة وكتابة "الإجمالي"
    With xlWS.Range(xlWS.Cells(NewRow, 1), xlWS.Cells(NewRow, 4))
        .Merge
        .Value = "الإجمالي"
        .Font.Bold = True
        .HorizontalAlignment = -4108
        .VerticalAlignment = -4108
    End With

    ' جمع الأعمدة من الخامس فصاعدًا
    For C = 5 To lastCol
        xlWS.Cells(NewRow, C).Formula = _
            "=SUM(" & xlWS.Cells(2, C).Address & ":" & xlWS.Cells(LastRow, C).Address & ")"
    Next C

    ' تنسيق صف الإجمالي
    With xlWS.Range(xlWS.Cells(NewRow, 1), xlWS.Cells(NewRow, lastCol))
        .Font.Bold = True
        .Font.Size = 12
        .Interior.Color = RGB(255, 255, 0)

        ' حدود خارجية سميكة
        With .Borders(7)   ' Left
            .LineStyle = 1
            .Weight = 4
        End With
        With .Borders(10)  ' Right
            .LineStyle = 1
            .Weight = 4
        End With
        With .Borders(8)   ' Top
            .LineStyle = 1
            .Weight = 4
        End With
        With .Borders(9)   ' Bottom
            .LineStyle = 1
            .Weight = 4
        End With

        ' حدود داخلية أخف
        With .Borders(11)  ' Inside Vertical
            .LineStyle = 1
            .Weight = 2
        End With
        With .Borders(12)  ' Inside Horizontal
            .LineStyle = 1
            .Weight = 2
        End With
    End With

    xlWS.Columns.AutoFit

    xlWB.save
    xlWB.Close
    xlApp.Quit

    Set xlWS = Nothing
    Set xlWB = Nothing
    Set xlApp = Nothing

     MsgBox "JO_Excel" & "  " & " تـم التصدير ... بنجاح مع حفظ النسخة في فولدر ", vbInformation + vbMsgBoxRight

 
End Sub

اريد العمود الاول الذى يتحتوى اسماء الشركات ان يكون راسيا  كما بالصورة 2

بدل من افقيا كما  بالصورة 1

هل هذا ممكن ام لالا

1.png

2.png

تم تعديل بواسطه jo_2010

انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد

يجب ان تكون عضوا لدينا لتتمكن من التعليق

انشئ حساب جديد

سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .

سجل حساب جديد

تسجيل دخول

هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.

سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information