File Operations – VBA, Python, VBS, C, C++ & DOS
It is important for any programming language to open text file or get data from external file or write to a external file. Without this open enabled in a programming language, it cannot be considered as a complete technology.
What do we offer here? – Simple Working Code Snippets – for quick reference
We have given code snippets, that quickly give the idea of how to open, read, write to a text file or a log file. We have covered these programming language code snippets for a quick reference.
What Programming Languages are Covered?
- Excel VBA Macro / VB
- VBS
- Python
- C
- C++
- DOS CMD Batch
Some Programming languages have more than one method to process text files. We have not presented all possible methods, but one method that would work good.
1. VBA Open Text File
The Visual Basic for Applications (VBA) code & VB6 code are one and the same in this case. Also, this VBA code can be used for importing data into Excel from text file or Outlook,Word etc.,
1. VBA Read From Text File
Public Sub VBA_Open_Text_File_Read() 'Added Kumarapush123@gmail.com - https://officetricks.com Dim sFileNamePath As String, iFile As Double, sFileContent As String, sFileReadLine As String sFileNamePath = "D:/OutFile_Log.Txt" 'Read All File Content to a String Variable iFile = FreeFile Open fname For Input As #iFile sFileContent = Input$(LOF(iFile), iFile) Close iFile 'Read File Content Line by Line iFile = FreeFile Open fname For Input As #iFile Do While Not EOF(iFile) Line Input #iFile, sFileReadLine Loop Close iFile End Sub
2. VBA Write To Text File
Use this VBA or VB6 code to write data to a text file.
Public Sub VBA_Write_To_Text_File(sOptAppend As String, Optional fMsg As String) 'Added Kumarapush123@gmail.com - https://officetricks.com Dim sFileNamePath As String, iFile As Double sFileNamePath = "D:/OutFile_Log.Txt" 'Get Number To handle File iFile = FreeFile 'Open Text File in Append or Output Mode If sOptAppend = "A" Then Open sFileNamePath For Append As #iFile Else Open sFileNamePath For Output As #iFile End If 'Use Write or Print Command to Write To File Print #iFile, fMsg 'Write Data without any formatting Write #iFile, fMsg 'WRite data with automatic Quotes & delimiters 'To Print Data on Same line, add a Comma at end of Print or Write Statement Print #iFile, fMsg, Print #iFile, fMsg 'Close the File using FileNumber Close iFile End Sub
For any of the Microsoft Office Applications, the code snippet can be used in the VB editor (Press Alt + F11 to invoke VB Editor from any MS Office Application)
2. VBScript (VBS) – Write To Text File
The ‘Open Filepath For Output/Input/Append as #fNum” command use in the above example will not work in VBScript. We have to use the Scripting.Filesystemobject to perform this operation within VBS file.
But, this code snippet will also work in a VBA code with no modifications.
Public Sub VBScript_Open_Text_File_Write_Read() 'Added Kumarapush123@gmail.com - https://officetricks.com Dim sFileNamePath As String, sFileContent As String, sFileReadLine As String sFileNamePath = "D:/OutFile_Log.Txt" Dim oFSO As Object, oFile As Object, iTextStream As Object Set oFSO = CreateObject("Scripting.FileSystemObject") 'Write to Output Text File Set oFile = oFSO.CreateTextFile(sFileNamePath, True) oFile.WriteLine "Write Data to Text File1" oFile.WriteLine "Write Data to Text File2" oFile.WriteLine "Write Data to Text File3" oFile.Close 'Read/Import from Text File Set iTextStream = oFSO.OpenTextFile(sFileNamePath, 1) MsgBox iTextStream.Read(10) 'Read Number of Charcters MsgBox iTextStream.ReadLine 'Read Line by Line - From Characters read in Previous Command MsgBox iTextStream.ReadLine MsgBox iTextStream.ReadAll 'Read Full Text File Content iTextStream.Close 'Garbage Collection - Disconnect All Allocated Objects Set iTextStream = Nothing Set oFile = Nothing Set oFSO = Nothing End Sub
3. Python Open, Read, Write To Text File
This seems very easy as similar to VBA. Actually I learnt it only while preparing this article. Nice to learn new tech on the go.
#Python Write to Text File f = open('d:/helloworld.txt','w') f.write('hello world1\n') f.write('hello world2\n') f.write('hello world3' + '\n') f.write('hello world4') f.close() #Read from Text File f = open('d:/helloworld.txt','r') fText = f.read() print(fText) #Read Text File Character by Character f.seek(0) fText = f.read(2) while fText != "": print(fText) fText = f.read(1) #Read Text File Lines f.seek(0) fText = f.readline(7) print(fText) f.seek(0) fText = f.readlines() print(fText) #Close File f.close()
4. C Program File Operation Commands
Here is the simplest C code that can read characters from a input file & write it to another file. One file is opened in read mode & another in Write mode. Another file operation possible is append mode “a”.
Apart from this, there are three more possible file operation mode r+, w+ & a+. when you put a ‘+’ symbol in front of a mode it means that it is compatible to perform the other 2 modes as well.
For example, if it is ‘r+’ – it means that it can also be used to read, write & append to that file.
/* Read Input File Character By character & Write to Another file */ /* Copy content from One file to Another Text file*/ # include "stdio.h" main () { FILE *ifp, *ofp; char fch; /*Open File in Read mode*/ ifp = fopen ("ifile.txt","r"); ofp = fopen ("ofile.txt","w"); while (1) { /*Read Character by Character*/ fch = fgetc(fp); /*Check for End of File*/ if (fch == EOF) break; printf("%c",fch); /*Write to Output File*/ fputc(fch,ofp); } /*Close File*/ fclose(ofp); fclose(ifp); }
5. C++ to Open Text File
/*Read & Write to File using C++ code - Officetricks.com*/ #include <iostream> #include <fstream> using namespace std; int main() { /*Declare variable used in the program*/ char fstr[200]; char fch; fstream iofile; /*Open the file in IO Mode*/ iofile.open ("iofile.txt", ios::out | ios::in ); /*Assign Some Text to a String variable*/ cout << "Hello World - File Operations - Read & Write" << endl; cin.getline(fstr, sizeof(fstr)); /*Writing String to the File*/ iofile << fstr << endl; /*Reading the String from Same file*/ iofile >> fstr; cout << fstr << endl; /*Read Character by Character till End of File while(1) { iofile.get(fch); if (iofile.eof()) break; std::cout << fch; } /*close iofile*/ iofile.close(); return 0; }
6. Command Prompt DOS Batch
We don’t have much flexibility in DOS. But still it is very easy way to automate few tiny things using a DOS Batch. Here is not to write & read from a text file.
@echo off cls echo 123>textfile.txt echo "abc">>textfile.txt type textfile.txt more textfile.txt
Hope you like this article. If you have any programming languages that would interest you, please leave a simple comment. I will make sure that the required code gets added to this page.