الزباري قام بنشر يناير 22, 2017 قام بنشر يناير 22, 2017 بناءاً على رغبة المتابعين شرح الكود الخاص بالتعامل مع النصوص سيتم إدراج الأمثلة الخاصة بها مع الشرح في هذه الصفحة. التعامل مع الملفات النصية ينقسم إلى ثلاثة أقسام وهي: 1- الكتابة (write). 2- القراءة (read). 3- الإضافة (append). 2
الزباري قام بنشر يناير 22, 2017 الكاتب قام بنشر يناير 22, 2017 أولاً: الكتابة (write): الكتابة تعتبر نوع من أنواع المخرجات ولذلك نعبر عن الملف ب output فلو أردنا الكتابة في ملف نصي فيجب أن نفتح ملف نوعه output قبل كتابة الكود كالمثال التالي: Sub VBA_Print_to_a_text_file() Dim strFile_Path As String strFile_Path = "C:\temp\test.txt" 'غيّر مسار الملف من هنا Open strFile_Path For Output As #1 'هنا قمنا بفتح الملف Print #1, "مرحبا.. هنا منتدى أوفيسنا" Close #1 'هنا غلقنا الملف الذي فتحناه End Sub جرب الكود ولا تنسى بأن تغير مسار الملف ثم ابحث عن ملف test الذي تم تكوينه بشكل تلقائي. حاول أن تغير العبارة "مرحبا.. هنا منتدى أوفيسنا" إلى عبارة أخرى، ستلاحظ بأنه تم طباعته على الكلام السابق في الملف test. بمعنى أن الكود يبحث عن الملف test فإن لم يجده فإنه سوف ينشؤه دون أن يؤثر ذلك في عمل الكود. 1
ابوحمزه المصرى قام بنشر يناير 22, 2017 قام بنشر يناير 22, 2017 (معدل) 1 ساعه مضت, الزباري said: Sub VBA_Print_to_a_text_file() Dim strFile_Path As String strFile_Path = "C:\temp\test.txt" 'غيّر مسار الملف من هنا Open strFile_Path For Output As #1 'هنا قمنا بفتح الملف Print #1, "مرحبا.. هنا منتدى أوفيسنا" Close #1 'هنا غلقنا الملف الذي فتحناه End Sub شكرا لك كم انت كريم اخى الزباري لكن اريد ان توضيح علامة #1 تم تعديل يناير 22, 2017 بواسطه ابوحمزه المصرى
الزباري قام بنشر يناير 22, 2017 الكاتب قام بنشر يناير 22, 2017 ماذا يعني as#1: يعني أن تفتح الملف رقم (1) بحيث لا يمكن لأحد غيري التعامل معه إلا إذا أغلقته (close#1).. وإذا أردت أن أفتح ملف آخر في نفس الوقت أعطيه رقم آخر وليكن 2 فيكون الكود كالتالي: open file for output as #2 . . . close #2 جرب أن تحذف كلمة close #1 وفعّل الكود، في المرة الأولى سيعمل معك بلا مشاكل، حاول أن تشغل الكود مرة أخرى فسيعطيك رسالة بأن الملف لا يزال مفتوح، أرجع كلمة close #1 إلى مكانها فسيعطيك أيضاً رسالة بأن الملف لا يزال مفتوح، لمااااااذا؟ ومالحل؟ بانتظار إجاباتكم.
ابوحمزه المصرى قام بنشر يناير 22, 2017 قام بنشر يناير 22, 2017 (معدل) تمام تمت التجربة ... اذن 1# هى عبارة عنوان تحديد الملف المعرف فى الـ VBA كود فتح الملف open file for output as #2 كود الاغلاق close #2 تم تعديل يناير 22, 2017 بواسطه ابوحمزه المصرى
الزباري قام بنشر يناير 22, 2017 الكاتب قام بنشر يناير 22, 2017 الأرقام هي عملية تنظيمية لدخول الملف .. يُمنع دخول شخص آخر في نفس الملف إلا إذا كان يحمل رقم مختلف .. وهذا يساعدنا في فتح الملف لأكثر من مستخدم في نفس اللحظة طالما أن كل شخص يحمل رقم مختلف. 1
ابوحمزه المصرى قام بنشر يناير 22, 2017 قام بنشر يناير 22, 2017 تمام اخى الزباري وصلت المعلومة بارك الله فيك .. استمر
الزباري قام بنشر يناير 23, 2017 الكاتب قام بنشر يناير 23, 2017 ثانياً: القراءة (read): وهي نفس مبدأ الكتابة ولكنها تختلف في أمرين وهما: - استخدام كلمة input بدلاً من output - تخزين البيانات لعرضها بدلاً من نقلها مثال: Sub read() Dim FilePath As String Dim FileContent As String ' تحديد مسار الملف المطلوب قراءته FilePath = "C:\testfolder\create.txt" 'فتح الملف النصي Open FilePath For Input As #1 'تخزين البيانات FileContent = Input(LOF(1), #1) 'عرض البيانات المخزنة MsgBox FileContent 'إغلاق الملف النصي Close #1 End Sub جرب الكود بعد تغيير مسار الملف المطلوب قراءته. لاحظ بأنه لا يمكن قراءة الملف إذا لم يكن موجود. 1
الزباري قام بنشر يناير 23, 2017 الكاتب قام بنشر يناير 23, 2017 LOF: ترمز إلى long file open بمعنى حجم محتوى الملف من حروف وفراغات والذي يقرأه بشكل تلقائي جرب بأن تستبدل (1) LOF بالرقم 10مثلاً ستشاهد بأنه قلل شاشة العرض حيث تحتوي على 10 خانات. 1
خالد الشاعر قام بنشر يناير 23, 2017 قام بنشر يناير 23, 2017 استاذ الزبارى سؤال لو سمحت هذا الكود Sub VBA_Print_to_a_text_file() Dim strFile_Path As String strFile_Path = "C:\temp\test.txt" 'غيّر مسار الملف من هنا Open strFile_Path For Output As #1 'هنا قمنا بفتح الملف Print #1, "مرحبا.. هنا منتدى أوفيسنا" Close #1 'هنا غلقنا الملف الذي فتحناه End Sub يوضع فى ملف اكسل ام فى ملف txt جزاكم الله كل خيراً
الزباري قام بنشر يناير 25, 2017 الكاتب قام بنشر يناير 25, 2017 Print #1, "مرحبا.. هنا منتدى أوفيسنا" ومن الممكن استبدال كلمة "print" ب "write" وكلهم يؤدون نفس الغرض كالتالي: write #1, "مرحبا.. هنا منتدى أوفيسنا" 1
الزباري قام بنشر يناير 25, 2017 الكاتب قام بنشر يناير 25, 2017 ولو أردنا الكتابة في سطرين نكرر كتابة الكود التالي: Print #1, "اسمي هو: " Print #1, "الزباري" لتكون النتيجة كالتالي: أما إذا أردنا الكتابة في نفس السطر (العمود التالي) فإننا نضيف فاصلة كالتالي: Print #1, "اسمي هو: ", Print #1, "الزباري" لتكون النتيجة كالتالي: 3
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.