اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

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

قام بنشر

الساده الكرام

بعد التحيه لجميع اعضاء المنتدى

ارجو المساعده فى صياغه كود لحفظ قيم شيت اكسيل مع التنسيقات وتصديرها الى شيت جديد منفصل بصيغة XLSX بدون مايحفظ المعادلات ( يحفظ القيم والتنسيقات فقط ) مع تحديد الخلايا المراد حفظها

مثلا من خلية A1 الى الخلية L50

جزاكم الله الف خير

  • تمت الإجابة
قام بنشر

Try this code

Sub Test()
    Dim wb As Workbook, ws As Worksheet, sh As Worksheet, r As Range
    Set ws = ActiveSheet
    Set r = ws.Range("A1:L50")
    Set wb = Application.Workbooks.Add
    With wb
        Set sh = .Worksheets(1)
        r.Copy sh.Range("A1")
        sh.Range(r.Address).Value = sh.Range(r.Address).Value
        Application.DisplayAlerts = False
            .SaveAs ThisWorkbook.Path & "\Output", 51
        Application.DisplayAlerts = True
        .Close 0
    End With
End Sub

 

  • Like 2
  • Thanks 1
قام بنشر

الكود يعمل بشكل جيد وممتاز جداً لكن المشكله الحالية في التنسيقات

الملف الاصلي يوجد فيه تنسيقات معينة تخلتف مقاسات الصفوف والاعمدة

في حال التصدير تكون مقاسات الشيت الجديد القياسات الافتراضية

المطلوب يكون نفس تنسيقات الملف الاصلي

 

قام بنشر

Try this version

Sub Test()
    Const iFirstRow As Long = 1, iFirstColumn As Long = 1, iLastRow As Long = 20, iLastColumn As Long = 5
    Dim wb As Workbook, ws As Worksheet, r As Range
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
        Set ws = ActiveSheet
        Set r = ws.Range(ws.Cells(iFirstRow, iFirstColumn), ws.Cells(iLastRow, iLastColumn))
        Set wb = Workbooks.Add(xlWBATWorksheet)
        With wb
            ws.Copy Before:=.Worksheets(1)
            .Worksheets(2).Delete
            With .Worksheets(1)
                .Range(r.Address).Value = .Range(r.Address).Value
                .Rows(iLastRow + 1 & ":" & .Rows.Count).Delete
                .Columns(iLastColumn + 1).Resize(, .Columns.Count - iLastColumn).Delete
                .Name = ws.Name
            End With
            .SaveAs ThisWorkbook.Path & "\Output", 51
            .Close 0
        End With
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    MsgBox "Done", 64
End Sub

 

Change the first line in the code to suit the range you desire. In my case this range is A1 to E20

  • Like 1

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

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

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

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

سجل حساب جديد

تسجيل دخول

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

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

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

Important Information