কীভাবে ভিবিএ ব্যবহার করে একটি টেক্সট ফাইল তৈরি করতে এবং লিখতে হয়


116

আমার কাছে একটি ফাইল রয়েছে যা ইনপুটগুলির উপর ভিত্তি করে ম্যানুয়ালি যুক্ত বা সংশোধিত। যেহেতু বেশিরভাগ বিষয়বস্তু সেই ফাইলটিতে পুনরাবৃত্তিযোগ্য, কেবলমাত্র হেক্স মানগুলি পরিবর্তিত হচ্ছে, আমি এটিকে একটি সরঞ্জাম উত্পন্ন ফাইল হিসাবে তৈরি করতে চাই।

আমি সি কোডগুলি লিখতে চাই যা সেই .txt ফাইলটিতে মুদ্রিত হতে চলেছে ।

ভিবিএ ব্যবহার করে একটি টেক্সট ফাইল তৈরি করার আদেশ কী এবং আমি কীভাবে এটি লিখব


1
আপনি কি বিদ্যমান ফাইলটি তৈরি হয়ে গেলে তা পরিবর্তন করতে চান? এবং "সি কোডগুলি" কী
ব্রেটডটজ

1
বিদ্যমান উত্তরগুলির মধ্যে যদি কোনও আপনার প্রয়োজনগুলি পূরণ করে, তবে আপনি কি এটি উত্তর হিসাবে গ্রহণ করতে আপত্তি করবেন, তাই আপনার প্রশ্নটি আর উত্তর না দেওয়া হিসাবে দেখাবে না? (যদি তা না হয় তবে দয়া করে আপনার সমস্যার সমাধানের জন্য বিদ্যমান উত্তরগুলি থেকে কী অনুপস্থিত রয়েছে তার বিবরণ যোগ করুন :))
মার্কাস মঙ্গেলসডর্ফ

উত্তর:


37

বেনের উত্তরটি বিস্তারিতভাবে জানাতে :

যদি আপনি একটি উল্লেখ উল্লেখ করে থাকেন Microsoft Scripting Runtimeএবং সঠিকভাবে চলকটি টাইপ করেন তবে আপনি স্বয়ংসম্পূর্ণতার (ইনটেলিসেন্স) সুবিধা নিতে পারেন এবং এর অন্যান্য দুর্দান্ত বৈশিষ্ট্যগুলি আবিষ্কার করতে পারেন FileSystemObject

এখানে একটি সম্পূর্ণ উদাহরণ মডিউল:

Option Explicit

' Go to Tools -> References... and check "Microsoft Scripting Runtime" to be able to use
' the FileSystemObject which has many useful features for handling files and folders
Public Sub SaveTextToFile()

    Dim filePath As String
    filePath = "C:\temp\MyTestFile.txt"

    ' The advantage of correctly typing fso as FileSystemObject is to make autocompletion
    ' (Intellisense) work, which helps you avoid typos and lets you discover other useful
    ' methods of the FileSystemObject
    Dim fso As FileSystemObject
    Set fso = New FileSystemObject
    Dim fileStream As TextStream

    ' Here the actual file is created and opened for write access
    Set fileStream = fso.CreateTextFile(filePath)

    ' Write something to the file
    fileStream.WriteLine "something"

    ' Close it, so it is not locked anymore
    fileStream.Close

    ' Here is another great method of the FileSystemObject that checks if a file exists
    If fso.FileExists(filePath) Then
        MsgBox "Yay! The file was created! :D"
    End If

    ' Explicitly setting objects to Nothing should not be necessary in most cases, but if
    ' you're writing macros for Microsoft Access, you may want to uncomment the following
    ' two lines (see https://stackoverflow.com/a/517202/2822719 for details):
    'Set fileStream = Nothing
    'Set fso = Nothing

End Sub

কোড সম্পর্কে সহায়ক মন্তব্য সহ একটি সম্পূর্ণ উত্তর লেখার জন্য ধন্যবাদ।
পোর্টল্যান্ড রানার

আপনি আমার পোস্ট থেকে কিছু শিখলে আমি বেশি খুশি! :)
মার্কাস মঙ্গেলসডর্ফ

171

ফাইল তৈরি করতে এবং এটিকে লিখতে এফএসও ব্যবহার করুন।

Dim fso as Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim oFile as Object
Set oFile = FSO.CreateTextFile(strPath)
oFile.WriteLine "test" 
oFile.Close
Set fso = Nothing
Set oFile = Nothing    

ডকুমেন্টেশন এখানে দেখুন:


25
আপনি যখন স্ক্রিপ্টিং রানটাইম সরাসরি উল্লেখ করেন, আপনি সঠিক প্রকারগুলি ব্যবহার করতে পারেন: Dim oFs As New FileSystemObject Dim oFile As TextStream
টিএমট্রন

স্ক্রিপ্টিং রানটাইমটি কি পুরানো চ্যানেল পদ্ধতির চেয়ে বেশি পছন্দ করা হচ্ছে? আমি আমার অভিজ্ঞ শিক্ষার্থীদের অন্যান্য অভিজ্ঞতার দ্বারা ব্যাক আপ করা তথ্য দিয়ে বলার কিছু কারণ চাই।
রিক হেন্ডারসন

@ রিকহেন্ডারসন, আমি এটি পছন্দ করি, যদি এটিই আপনি বোঝাতে চান। সুবিধা হ'ল এনক্যাপসুলেশন। একবার আপনি আপত্তি (সেট oFile = কিছুই না |), বা এটি সুযোগের বাইরে চলে গেলে ফাইলটি স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যায়।
বেন

2
দয়া করে মনে রাখবেন যে এই উত্তরটি খারাপ কোডিং অনুশীলনকে উত্সাহ দেয় : সমস্যাটি হ'ল সুস্পষ্টভাবে সঠিক পরিবর্তনশীল প্রকারগুলি সংজ্ঞায়িত করার পাশাপাশি তার নামের সাথে স্ট্রিং রেফারেন্স দ্বারা কোনও অবজেক্ট তৈরি করা আপনাকে ভবিষ্যতে সমস্যাগুলি ডিবাগ করাতে খুব কঠিন হতে পারে (উদাহরণস্বরূপ যদি আপনি নামের কিছুটা ভুল বানান) এছাড়াও, ভেরিয়েবল না টাইপ করে, আপনি অন্যান্য আশ্চর্যজনক পদ্ধতি সম্পর্কে জানতে কোন উপায় আছে FileSystemObjectঅফার দেওয়া। @ বেন: দয়া করে আপনার উত্তরটি আরও ভাল দিকনির্দেশে নেতৃত্ব দেওয়ার জন্য আপডেট করার বিষয়ে বিবেচনা করুন ।
মার্কাস মঙ্গেলসডর্ফ

2
@ মার্কাস মঙ্গেলসডর্ফ আমি শুনেছি, তবে আমি কোনও বিতর্ক করতে চাই না।
বেন

43
Open ThisWorkbook.Path & "\template.txt" For Output As #1
Print #1, strContent
Close #1

অধিক তথ্য:


প্লিজ কিছু ব্যাখ্যা এবং বিশদ সহ উত্তর লিখুন।
মোহাম্মদ নুরাল্ডিন

4
আমি এই পদ্ধতিটি এফএসও পদ্ধতির তুলনায় পছন্দ করি কারণ এটিতে বাহ্যিক উল্লেখের প্রয়োজন হয় না এবং এটি খুব কম। যদিও আমি # 1 হিসাবে হার্ডকোডিংয়ের পরিবর্তে ফাইল নম্বর পেতে ফ্রিফিল ব্যবহার করার পরামর্শ দিই।
ফ্রেব

2
এটি দুর্দান্ত কাজ করে। আমি এর Open somePath For Output As #1আগে সিনট্যাক্সটি আগে কখনও দেখিনি , এটি নথিতে: এমএসডিএন.মাইক্রোসফট.ইন
ইউভি

5
আমি এই পদ্ধতির পাশাপাশি জাগতিক পাঠ্য ফাইল লেখার জন্য পছন্দ করি। এই বিবৃতির অন্তত 1981 সাল থেকে বেসিক ভাষা অংশ হয়েছে
richardtallent

2
হার্ডকডযুক্ত # 1 এর পরিবর্তে ফ্রিফিল ব্যবহার সম্পর্কে @ ফ্রেভের মন্তব্য সম্পর্কে ওয়েলস r.com/vba/2016/excel/vba-freefile-for-foolproof-file-IO দেখুন
জর্জ বীরবিলিস

33

অতিরিক্ত অপ্রয়োজনীয়তার একটি সহজ উপায়।

    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")

    Dim Fileout As Object
    Set Fileout = fso.CreateTextFile("C:\your_path\vba.txt", True, True)
    Fileout.Write "your string goes here"
    Fileout.Close

2
পথ নির্ধারণের জন্য ফাইল চয়নকারী ব্যবহার করা কি সম্ভব?
rrs

এটি ইউসিএস 2 এনকোডযুক্ত একটি ফাইল তৈরি করে। এএনএসআই এমন একটি তৈরি করা কি সম্ভব?
পাওলোভ

-10
Dim SaveVar As Object

Sub Main()

    Console.WriteLine("Enter Text")

    Console.WriteLine("")

    SaveVar = Console.ReadLine

    My.Computer.FileSystem.WriteAllText("N:\A-Level Computing\2017!\PPE\SaveFile\SaveData.txt", "Text: " & SaveVar & ", ", True)

    Console.WriteLine("")

    Console.WriteLine("File Saved")

    Console.WriteLine("")

    Console.WriteLine(My.Computer.FileSystem.ReadAllText("N:\A-Level Computing\2017!\PPE\SaveFile\SaveData.txt"))
    Console.ReadLine()

End Sub()

এটি কোনও পাঠ্য ফাইল রাইটিং এবং
জ্যাক ব্রাইটম্যান

1
আমি মনে করি আপনি প্রশ্নটি কী তা পড়েন না এবং আপনি কী চেষ্টা করতে যাচ্ছেন তা ব্যাখ্যা করতে পছন্দ করেন না যা অন্যকে সাহায্য করার সময় কোনও ভাল জিনিস নয়।
এম আদিল খালিদ

এবং আপনি নিজের উত্তরটি সঠিকভাবে ফর্ম্যাটও করছেন না।
বিডিএল

3
দুর্ভাগ্যক্রমে, আপনার পোস্ট করা কোডটি ভিবিএ নয়। My.Computer.FileSystemভিবিএতে ডিফল্টরূপে কোনও বস্তু নেই এবং সুতরাং আপনি WriteAllTextপদ্ধতিটি ব্যবহার করতে পারবেন না ।
মার্কাস মঙ্গেলসডর্ফ

জ্যাক, দয়া করে কেবল উত্তর পোস্ট করা এড়াতে ভুলবেন না এবং নিশ্চিত করুন যে আপনি যে ভাষাটি ব্যবহার করছেন তা অপের সাথে ইনলাইন রয়েছে।
ড্যানিয়েল এল। ভ্যানডেনবোশ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.