الفدائي قام بنشر ديسمبر 18, 2011 قام بنشر ديسمبر 18, 2011 (معدل) اخواني الاعزاء وانا ابحث عن حل لمشكلتي صادفت هذا المنتدى المميز فقمت بالتسجيل فيه . نسال الله ان يوفقنا لما يحب ويرضى بحثت في المنتدي لكني لم اجد الاجابة الشافية لطلبي لذا طرحت هذا الموضوع آملا من الاخوة الأكارم النظر فيه طلبي يختلف قليلا عن المعتاد لانه ليس فيه ملف اكسل مرفق عموما انا عندي برنامج صممته ب فيجوال بيزك 6 وفيه وظيفة حفظ بعض البيانات ( فواتير) كل واحدة في شيت جديد داخل ملف الاكسل موجود في دليل البرنامج اسمه MyDB - عند تحميل الفورم الرئيسئ تلقائيا يتم فتح الملف بالامر التالي : حدث لود للفورم الرئيسي set MyDB = Exl.workbooks.open(App.path & "\myDB.xls") فاريد ان اعمل لاي فاتورة شيت جديد باسم جديد اسم الشيت يتم أخذه من تكست بوكس موجود في الفورم اسمه Text1 الحدث كليك في زر اضافة فاتورة جديدة: يتم استدعاء الدالة NweSheeetCustomeName من موديول موجود بالبرنامج الاكواد الموجودة في الموديول ( طبعا اظن هذا الكود من ابداعات الاستاذ خبور خير ) : Dim Exl As Excel.Application Dim MyDB As Excel.Workbook Sub NweSheeetCustomeName() Dim SheetName As String workbooks("MyDB").Select SheetName=Text1.Text If SheetName = "" Or Len(SheetName) > 31 Then MsgBox ("You did not insert a name OR sheet name lenth is greater than 31 Characther") Exit Sub End If Sheets.Add.Name = SheetName End Sub _____________________________ ماهو الخطأ الذي ارتكبته وانا لا ادري ؟ ثانيا هذا الخطأ ايضا يحدث في حالة الترحيل من الفورم الي شيت او من الشيت الي شيت اخر فاذا تبين الخطأ تمكنا من حل مشكلة النقل والنسخ طبعا ملف الاكسل فيه شيت واحد فقط وبه تنسيقات معينة للاعمدة يتم نسخها في كل فاتورة جديدة (شيت جديد ) _____________________ بارك الله فيكم .. وفي انتظار ابداعاتكم أخوكم ( الفدائي ) تم تعديل ديسمبر 18, 2011 بواسطه Alfidai
الـعيدروس قام بنشر ديسمبر 18, 2011 قام بنشر ديسمبر 18, 2011 (معدل) السلام عليكم الاخ الفاضل الفدائي فتح ملف اكسل جديد عن طريق VB6 فيجول يختلف من فتح ملف اكسل جديد من ملف اكسل لاادري هل يزبط معاك بهذا الشكل Dim Exl As Excel.Application Dim MyDB As Excel.Workbook Sub NweSheeetCustomeName() Dim SheetName As String Workbooks("MyDB").Select SheetName = Text1.Text If SheetName = "" Or Len(SheetName) > 31 Then MsgBox ("You did not insert a name OR sheet name lenth is greater than 31 Characther") Exit Sub Else With ActiveWorkbook.Sheets .Add after:=Worksheets(Worksheets.Count) End With ActiveSheet.Name = SheetName End If End Sub تم تعديل ديسمبر 18, 2011 بواسطه alidroos
الفدائي قام بنشر ديسمبر 18, 2011 الكاتب قام بنشر ديسمبر 18, 2011 (معدل) بارك الله فيك اخي العيدروس على الرد السريع الكود لم ينجح في عمل شيت جديد بل اعطى كود الخطأ الاتي : Run-time error '9' : Subscript out of range هل يوجد موضوع خاص بالتعامل مع اكسل من داخل فيجول بيزك ؟ دون النظر الي الماكرو وملفات الاكسل المباشرة ؟ تم تعديل ديسمبر 18, 2011 بواسطه Alfidai
الفدائي قام بنشر ديسمبر 18, 2011 الكاتب قام بنشر ديسمبر 18, 2011 (معدل) تم تعديل ديسمبر 18, 2011 بواسطه Alfidai
الفدائي قام بنشر ديسمبر 19, 2011 الكاتب قام بنشر ديسمبر 19, 2011 (معدل) الحمد لله تم التوصل للحل بهذا الكود Public Exl As Excel.Application Public MyDB As Excel.Workbook Public xlSheet As Excel.Worksheet Private Sub Command1_Click() Set MyDB = Excel.Workbooks.Open(App.Path & "\MyDB.xls") Set xlSheet = MyDB.Worksheets.Add xlSheet.Name = "sheet_name" " عندي اسم الشيت متغير في تكس بوكس لذا السطر الاخير عندي هو : xlSheet.Name = text1.text مع ملاحظة ان الكود السابق المتغير فيه هو اسم الشيت وفي هذا الكود المتغير هو الشيت نفسه في الكود الاول لم يتم استدعاء وفتح ملف الاكسل اما هنا فتم ذلك كذلك ما دام ياخذ الاسم من تكست بوكس تم تجاهل شروط طول الاسم ووضع رسالة التحذير للتكست بوكس وليس لزر الاضافة وان شاء الله اسعى لاكمال البرنامج ووضع اي كود اراه مهم للاخوة هنا لتعم الفائدة ملحوظة مهمة : هذه الأكواد للتعامل مع Vb 6 لعمل برنامج مستقل وليس VBA الشائعة في المنتدى هنا لذا الأخوة الذين يطلعون عليه أخذ الحذر في التعامل معه لان في هذه الفكرة انت لا ترى اي ملف اكسل ولا ورقة الا اذا قمت بادراج امر : xlApp.Visible = True __________________________ كود لانشاء ملف اكسل غير موجود اصلا والتعامل معه اولاً يجب إضافة مكتبة اكسل من قائمة Project > References Microsoft Excel 11.0 Object Library ( الرقم 11 تعني اوفيس اكس بي 2003) كود إنشاء ملف اكسل وتسمية ورقة العمل الاولى بــ Sheet وحفظ الملف على C Public xlApp As Excel.Application Public xlBook As Excel.Workbook Sub CreateNewWorkBooks() Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add xlApp.Windows(1).ActiveSheet.Name = "sheet" xlBook.SaveAs FileName:="C:\file_name.xls" xlApp.Quit Set xlBook = Nothing Set xlApp = Nothing End Sub : اما اذا اردت حفظه في دليل البرنامج دون التقيد باي درايف استخدم هذا الكود ("App.Path & \MyDB.xls") ______________________ تم تعديل ديسمبر 19, 2011 بواسطه Alfidai
الـعيدروس قام بنشر ديسمبر 19, 2011 قام بنشر ديسمبر 19, 2011 الحمد لله انك توصلت لطلبك كلام فعلا مزبوط بالنسبة لاكواد VB6 واكواد VBA Excel متقاربة جدا وهيا نفسها ولاكن الفرق في المسميات هذا والله اعلم
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.