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

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

قام بنشر

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

 

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

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