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

التعامل مع الملفات النصية txt.*


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

بناءاً على رغبة المتابعين شرح الكود الخاص بالتعامل مع النصوص سيتم إدراج الأمثلة الخاصة بها مع الشرح في هذه الصفحة.

 

التعامل مع الملفات النصية ينقسم إلى ثلاثة أقسام وهي:

1- الكتابة (write).

2- القراءة (read).

3- الإضافة (append).

 

  • Like 2
رابط هذا التعليق
شارك

أولاً: الكتابة (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 فإن لم يجده فإنه سوف ينشؤه دون أن يؤثر ذلك في عمل الكود.

  • Like 1
رابط هذا التعليق
شارك

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

تم تعديل بواسطه ابوحمزه المصرى
رابط هذا التعليق
شارك

ماذا يعني as#1:

يعني أن تفتح الملف رقم (1) بحيث لا يمكن لأحد غيري التعامل معه إلا إذا أغلقته (close#1)..

وإذا أردت أن أفتح ملف آخر في نفس الوقت أعطيه رقم آخر وليكن 2 فيكون الكود كالتالي:

open file for output as #2
.
.
.
close #2

جرب أن تحذف كلمة close #1 وفعّل الكود، في المرة الأولى سيعمل معك بلا مشاكل،

حاول أن تشغل الكود مرة أخرى فسيعطيك رسالة بأن الملف لا يزال مفتوح، 

أرجع كلمة close #1 إلى مكانها فسيعطيك أيضاً رسالة بأن الملف لا يزال مفتوح، لمااااااذا؟ ومالحل؟

بانتظار إجاباتكم.

رابط هذا التعليق
شارك

تمام تمت التجربة ... اذن 1# هى عبارة عنوان تحديد الملف المعرف فى الـ VBA

كود فتح الملف

open file for output as #2

كود الاغلاق

close #2
تم تعديل بواسطه ابوحمزه المصرى
رابط هذا التعليق
شارك

الأرقام هي عملية تنظيمية لدخول الملف .. يُمنع دخول شخص آخر في نفس الملف إلا إذا كان يحمل رقم مختلف .. وهذا يساعدنا في فتح الملف لأكثر من مستخدم في نفس اللحظة طالما أن كل شخص يحمل رقم مختلف.

  • Like 1
رابط هذا التعليق
شارك

ثانياً: القراءة (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

جرب الكود بعد تغيير مسار الملف المطلوب قراءته.

لاحظ بأنه لا يمكن قراءة الملف إذا لم يكن موجود.

  • Like 1
رابط هذا التعليق
شارك

LOF: ترمز إلى long file open

بمعنى حجم محتوى الملف من حروف وفراغات والذي يقرأه بشكل تلقائي 

جرب بأن تستبدل (1) LOF بالرقم 10مثلاً ستشاهد بأنه قلل شاشة العرض حيث تحتوي على 10 خانات.

  • Like 1
رابط هذا التعليق
شارك

استاذ الزبارى

سؤال لو سمحت هذا الكود

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

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

رابط هذا التعليق
شارك

Print #1, "مرحبا.. هنا منتدى أوفيسنا"

ومن الممكن استبدال كلمة "print" ب "write" وكلهم يؤدون نفس الغرض كالتالي:

write #1, "مرحبا.. هنا منتدى أوفيسنا"

 

  • Like 1
رابط هذا التعليق
شارك

ولو أردنا الكتابة في سطرين نكرر كتابة الكود التالي:

Print #1, "اسمي هو: "
Print #1, "الزباري"

لتكون النتيجة كالتالي:

z01.PNG

أما إذا أردنا الكتابة في نفس السطر (العمود التالي) فإننا نضيف فاصلة كالتالي:

Print #1, "اسمي هو: ",
Print #1, "الزباري"

لتكون النتيجة كالتالي:

z02.PNG

  • Like 3
رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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

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

Important Information