উত্তর:
1.) এখানে চেক করুন । মূলত এটি করুন:
Function FileExists(ByVal FileToTest As String) As Boolean
FileExists = (Dir(FileToTest) <> "")
End Function
বিভিন্ন ত্রুটি পরিচালনার প্রয়োজনীয়তা খুঁজে বের করার জন্য আমি এটি আপনার কাছে ছেড়ে দিচ্ছি তবে এগুলি আমি বিবেচনা করব এমন ত্রুটি পরিচালনার মধ্যে একটি:
২) কিভাবে একটি ফাইল মুছবেন। তাকান করেছেন। মূলত কিল কমান্ডটি ব্যবহার করুন তবে আপনাকে কেবল ফাইলটি পঠনযোগ্য হওয়ার সম্ভাবনা দেওয়া দরকার। আপনার জন্য এখানে একটি ফাংশন রয়েছে:
Sub DeleteFile(ByVal FileToDelete As String)
If FileExists(FileToDelete) Then 'See above
' First remove readonly attribute, if set
SetAttr FileToDelete, vbNormal
' Then delete the file
Kill FileToDelete
End If
End Sub
আবার, আমি ত্রুটিটি আপনার কাছে পরিচালনা করব এবং এগুলিই আমি বিবেচনা করব:
ডিরেক্টরি বনাম কোনও ফাইলের জন্য এটি কি আলাদা আচরণ করা উচিত? কোনও ব্যবহারকারীকে স্পষ্টভাবে নির্দেশ করতে হবে যে তারা কোনও ডিরেক্টরি মুছতে চান?
আপনি কি কোডটি কেবল পঠনযোগ্য অ্যাট্রিবিউটটি স্বয়ংক্রিয়ভাবে পুনরায় সেট করতে চান বা কেবলমাত্র পঠনযোগ্য বৈশিষ্ট্য সেট করা আছে তা ব্যবহারকারীকে কোনও প্রকারের ইঙ্গিত দেওয়া উচিত?
সম্পাদনা করুন: এই উত্তরটিকে সম্প্রদায় উইকি হিসাবে চিহ্নিত করা হচ্ছে যাতে প্রয়োজনে যে কেউ এটি পরিবর্তন করতে পারে।
ব্রেটস্কির উত্তরের কোডের বিকল্প উপায়, যার সাথে আমি অন্যথায় পুরোপুরি একমত, হতে পারে
With New FileSystemObject
If .FileExists(yourFilePath) Then
.DeleteFile yourFilepath
End If
End With
একই প্রভাব কিন্তু কম (ভাল, মোটেও কিছুই নয়) ভেরিয়েবল ঘোষণা rations
ফাইলসিস্টেমবজেক্টটি একটি সত্যিই দরকারী সরঞ্জাম এবং এর সাথে বন্ধুত্বপূর্ণ হওয়ার পক্ষে উপযুক্ত। অন্য কিছু বাদে, পাঠ্য ফাইল লেখার জন্য এটি কখনও কখনও উত্তরাধিকার বিকল্পের চেয়ে দ্রুততর হতে পারে যা কিছু লোককে অবাক করে দিতে পারে। (আমার অভিজ্ঞতায় কমপক্ষে, ওয়াইএমএমভি)।
আমি সম্ভবত এটির জন্য ব্লেড হয়ে যাব, তবে আপনি যদি এটি মুছতে চলেছেন তবে অস্তিত্বের জন্য পরীক্ষা করার কী লাভ? আমার বড় পোষা প্রাণীগুলির মধ্যে একটি হল এমন একটি অ্যাপ্লিকেশন যা "ফাইলটি মুছতে পারে না, এটি বিদ্যমান নেই!" এর মতো কিছু দিয়ে ত্রুটিযুক্ত ডায়লগ ছুঁড়েছে!
On Error Resume Next
aFile = "c:\file_to_delete.txt"
Kill aFile
On Error Goto 0
return Len(Dir$(aFile)) > 0 ' Make sure it actually got deleted.
যদি ফাইলটি প্রথম স্থানে না থাকে তবে মিশনটি সম্পন্ন!
ActiveWorkbook.SaveCopyAs
ওভাররাইট করতে সক্ষম হয় না, তাই আপনাকে প্রথমে একই ফাইলের নাম সহ বিদ্যমান ফাইলটি সরিয়ে ফেলতে হবে।
On Error Resume Next
, বা তাই আমাকে বলা হয়েছে: ডি অবশ্যই, এটি হাস্যকর পরামর্শ এবং আপনার উত্তরটি সঠিক is
Len(dir(...))
অংশ নিজেই অস্তিত্ব জন্য চেক করতে নয়। এছাড়া করা হয় ফাইলটি লুকানো হয় পরীক্ষণ কারণ একটি গোপন ফাইল একটি খালি স্ট্রিং এমনকি যদি এটি বিদ্যমান ফিরে আসবে (এবং আপনি এটি মুছে ফেলতে সক্ষম হবেন না): Dir(hiddenFile) = ""
। সুতরাং, অংশটি আপনার পক্ষে SetAttr FileToDelete, vbNormal
স্পষ্টভাবে এই যত্ন করে।
নিম্নলিখিতটি কোনও ফাইলের অস্তিত্বের জন্য পরীক্ষা করতে, এবং তারপরে এটি মুছতে ব্যবহৃত হতে পারে।
Dim aFile As String
aFile = "c:\file_to_delete.txt"
If Len(Dir$(aFile)) > 0 Then
Kill aFile
End If
Len()
(এবং LenB()
, যা আরও দ্রুত হয়) দ্রুত স্ট্রিং তুলনা চেয়ে আছে মেমরি, ভিবি স্ট্রিং তাদের দৈর্ঘ্য পূর্বে হয়। লেন / লেনব কেবল সেই মেমরির অবস্থান থেকে দৈর্ঘ্যটি টানবে, তার দৈর্ঘ্য জানতে তাদের স্ট্রিং দিয়ে পুনরাবৃত্তি করতে হবে না। অন্যদিকে, স্ট্রিং তুলনা ব্যবহার করার আরও অনেক কাজ রয়েছে। অতিরিক্তভাবে, ""
ভিবিতে ব্যবহার এড়াতে যেমন এটি সর্বদা একটি নতুন স্ট্রিং বরাদ্দ করে। vbNullString
পরিবর্তে এটি ব্যবহার করুন কারণ এটি একটি ধ্রুবক এবং আরও মেমরি ব্যবহার করে না।
স্ক্রিপ্টিং -রুনটাইম লাইব্রেরিতে একটি রেফারেন্স সেট করুন এবং তারপরে ফাইলসিস্টেমঅবজেক্টটি ব্যবহার করুন:
Dim fso as New FileSystemObject, aFile as File
if (fso.FileExists("PathToFile")) then
aFile = fso.GetFile("PathToFile")
aFile.Delete
End if
এখানে একটি পরামর্শ: আপনি কি ফাইলের নামটি পুনরায় ব্যবহার করছেন, বা এমন কিছু করার পরিকল্পনা করছেন যা অবিলম্বে মুছে ফেলার প্রয়োজন?
কোন?
/ এফ কম্যান্ড প্রম্প্ট থেকে: আপনি VBA কমান্ড del "\ TEMP \ scratchpad.txt সি" গুলি পেতে পারেন অ্যাসিঙ্ক্রোনাস VBA.Shell ব্যবহার করছে:
শেল "দেল" এবং chr (34) এবং স্ট্রপাথ এবং chr (34) এবং "/ এফ", ভিবিহাইড
ফাইলের নামটির চারপাশে ডাবল-কোটস (এএসসিআইআই অক্ষর 34) নোট করুন: আমি ধরে নিচ্ছি যে আপনি একটি নেটওয়ার্ক পাথ পেয়েছেন বা ফাঁকা স্থান সহ একটি দীর্ঘ ফাইলের নাম।
যদি এটি একটি বড় ফাইল, বা এটি ধীর নেটওয়ার্ক সংযোগে থাকে তবে আগুন এবং ভুলে যাওয়ার উপায়। অবশ্যই, আপনি কখনই এটি দেখতে পাচ্ছেন না এটি কাজ করে কি না; তবে আপনি তত্ক্ষণাত আপনার ভিবিএ পুনরায় চালু করুন এবং এমন সময় রয়েছে যখন এটি নেটওয়ার্কের জন্য অপেক্ষা করার চেয়ে ভাল।
আপনি স্ক্রিপ্টিং.রুনটাইম লাইব্রেরিতে একটি রেফারেন্স সেট করতে পারেন এবং তারপরে ফাইলসিস্টেমবজেক্টটি ব্যবহার করতে পারেন। এটিতে একটি মুছে ফেলা পদ্ধতি এবং একটি ফাইলএক্সিস্ট পদ্ধতি রয়েছে।
এমএসডিএন নিবন্ধটি এখানে দেখুন ।