0% found this document useful (0 votes)
71 views

INTRODUCTION TO VBA PROGRAMMING Lesson7

This document introduces files and input/output operations in VBA programming. It discusses opening, closing, writing to, and reading from files. Specific topics covered include sequential and random access files, opening files for input/output/append modes, writing values and expressions to files using Print, reading values from files using Input, checking for end of file using EOF, and examples of reading and writing entire lines from files. Exercises provided practice opening, reading from, and writing to files to perform tasks like reversing lines, encrypting/decrypting text, and processing matrices.

Uploaded by

tendoshingan
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
71 views

INTRODUCTION TO VBA PROGRAMMING Lesson7

This document introduces files and input/output operations in VBA programming. It discusses opening, closing, writing to, and reading from files. Specific topics covered include sequential and random access files, opening files for input/output/append modes, writing values and expressions to files using Print, reading values from files using Input, checking for end of file using EOF, and examples of reading and writing entire lines from files. Exercises provided practice opening, reading from, and writing to files to perform tasks like reversing lines, encrypting/decrypting text, and processing matrices.

Uploaded by

tendoshingan
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 28

INTRODUCTION TO VBA

PROGRAMMING
LESSON7 [email protected]
Agenda
 Files
 Output to file
 Input from file

Introduction to VBA programming - (c) 2009 Dario Bonino


Files

Introduction to VBA programming - (c) 2009 Dario Bonino


Files
 Information (bytes) stored on a “mass storage
device”
 E.g. harddrive., memory cards, diskettes, usb sticks
 2 main types
 Sequential
 Data is written as a sequence of “records”
 To access the i-th record all previous records must be read
(that’s why is called sequential)
 Differently sized records depending on the stored types

110101 11 0101101 101


Introduction to VBA programming - (c) 2009 Dario Bonino
Files
 Random Access
 All records have the same size
 If the size is “greater” than the size of the stored type, “holes”
are left
 Records can be directly accessed on the basis of their position in
the file (they all have the same size)
Size (bytes)

110101 11 0101101 101


Record
Starting point: (i-1)*size

Introduction to VBA programming - (c) 2009 Dario Bonino


Opening a file
 To open a file
 Open filename For mode As #number
 Filename
 The name of the file to open
 Mode
 How the file has to be opened
 Input – to read the file
 Output – to write the file
 Append – to append content at the end of the file
 #number
 An identification number for the file

Introduction to VBA programming - (c) 2009 Dario Bonino


Closing a file
 To close a file
 The file numeric identifier is needed
 Close #fileid1
 Multiple files can be closed at the same time
 Close #fileid1, #fileid2, #fileid3
 To close all files
 Close

Introduction to VBA programming - (c) 2009 Dario Bonino


Writing to files

Introduction to VBA programming - (c) 2009 Dario Bonino


Writing to file
 Print allows to print some expressions to a file
 Print #fileid, expression1;
expression2; expression3
 #fileid – identifies the file to which expressions must
be output
 expression – what to print in the file
 Strings
 Result of numerical expressions
 ...

 Print #3, “The result is: ”; result


Introduction to VBA programming - (c) 2009 Dario Bonino
Example 1
Open “results.txt” For Output As #4
Print #4, “#results”
Print #4,”|x|y|”
For i=0 To 10
Print #4, “|”;x(i);”|”;y(i);”|”
Next I
Close #4

Introduction to VBA programming - (c) 2009 Dario Bonino


Exercise 1
 Write a program that given a number N computes
all the powers of 2 from 0 to N
 20=1, 21=2,…… 2N=?
 The computed values must be saved on a file
named powers.txt with a tab separated format
0 1
1 2

2 4

3 8

Introduction to VBA programming - (c) 2009 Dario Bonino


Reading from files

Introduction to VBA programming - (c) 2009 Dario Bonino


Reading from files
 To read one or more values from a file
 Input #fileid, variable1, variable2
 #fileid
 The numeric identifier of the file to be read
 variable1…n
 The variable in which to store the values read from the file
 The filling behavior changes depending on the variable
type

Introduction to VBA programming - (c) 2009 Dario Bonino


Reading from files
 If the variable to be read is a string, the input
function
 skipsany initial white space (spaces and TABs);
 reads all the characters until a string field separator
(commas and new-line characters) is found;
 assigns them to variable.

Introduction to VBA programming - (c) 2009 Dario Bonino


Reading from files
 If the variable to be read is numeric, the input function
 skips any initial white space (spaces and TABs);
 reads all the contiguous characters

 passes them to the Val function in order to have a


numerical value (if a reading returns a non-number or an
empty string, value 0 is produced);
 reads all characters until a number field separator (commas,
new-line characters, spaces, and TABs) is found (after a
field, white space before a comma or new-line is ignored);
 assigns the resulting value to the variable.

Introduction to VBA programming - (c) 2009 Dario Bonino


Example
 Suppose we want to read
 one two, three , four five
Six, seven , eight nine, ten
 We write the following statements
 Input #1, A
 Input #1, B
 Input #1, C
 Input #1, D
 Input #1, E
 Input #1, F
 Input #1, G

Introduction to VBA programming - (c) 2009 Dario Bonino


Example (cont.d)
 What we expect to be the value of ABCDEFG?
A = “one two”
 B = “three”

 C = “four five”

 D = “Six”

 E = “seven”

 F = “eight nine”

 G = “ten”

Introduction to VBA programming - (c) 2009 Dario Bonino


Example2
 August 16, 2006 Wednesday
Dim A As String
Dim B As Integer
Dim C As String
Input #1, A, B, C
 A = “August 16”
 B = 2006
 C = Wednesday

Introduction to VBA programming - (c) 2009 Dario Bonino


Example3
 Characters enclosed in quotes are read as single
strings
 “Hello
Everybody”
 Input #1, A

 A = “Hello Everybody”

Introduction to VBA programming - (c) 2009 Dario Bonino


Utilities
 The write function works as the print function
but already encloses string between double quotes
and writes the correct field separator characters
 Write #1, variable1, variable2,…,
variableN
 To read one entire line inside a variable the Line
Input instruction can be used
 Line Input #1, theWholeLine

Introduction to VBA programming - (c) 2009 Dario Bonino


End of File?
 We can read from files but…
 How can we detect the file end?
 The EOF (End Of File) function allows to check if a
file still contains something to read
 True – the end of the file has been reached
 False – the file has some more data to read
 EOF(#fileId)

 Usually we cannot assume to know the number of fields


to be read in a file….

Introduction to VBA programming - (c) 2009 Dario Bonino


Example
 Read a file line by line and show the line content
until the file is finished
Open “input.txt” For Input As #1
Do While Not EOF(1)
Line Input #1, line
MsgBox (line)
Loop

Introduction to VBA programming - (c) 2009 Dario Bonino


Example 2
 Use a text editor and create a file with some
numbers, one on each line. Now write a program
that asks the user for the name of the file to read,
then calculates and displays how many values there
are in that file, their maximum and minimum value,
their sum and average.

Introduction to VBA programming - (c) 2009 Dario Bonino


Exercise 2
 Write a program that reads all the lines of a file,
and writes them in reverse order (i.e. printing the
line content from right to left) in another file.
 Display a MsgBox reporting how many rows have
been copied.

Introduction to VBA programming - (c) 2009 Dario Bonino


Exercise 3
 Write a program to encrypt and decrypt a text file by
using Julius Caesar’s cipher method. The program asks
the user for the input file, the output file and a secret
key (a whole number). Encryption is achieved by
substituting uppercase and lowercase letters with other
letters based on the key. Each letter position is shifted by
key positions: for example, suppose key=3, then “A”
becomes “D”, “B” becomes “E”, etc. and “X” becomes “A”,
“Y” becomes “B”, and “Z” becomes “C”. The same for
lowercase letters. To decrypt an encrypted text, a
negative value for key (e.g. –3) is used.

Introduction to VBA programming - (c) 2009 Dario Bonino


Exercise 4
 Write a program that reads a matrix from a file
 The file reports the values of the matrix cells on
separated rows, one per each matrix row
 Values inside a row are separated by a space
 The first line of the file contains 2 values respectively
reporting the number of rows and columns of the matrix

22 1 2
12 3 4
34
 Display the matrix in a message box
Introduction to VBA programming - (c) 2009 Dario Bonino
Exercise 5
 Write a program that reads a matrix in the format
defined in Exercise 4 and writes a new file where
the rows and the cells of the matrix are exchanged
(transposed matrix)

1 2 1 3
3 4 2 4

Introduction to VBA programming - (c) 2009 Dario Bonino


Exercise 5
 Write a program that given a matrix M
computes the smoothed matrix MS using the
following algorithm
 The MS(i,j) value is provided by the average of the
values of the cells surrounding the same position in M
 MS(i, j) = (M(i-1, j-1)+ M(i-1, j)+ M(i-1,j+1)+ M(i,j-1)+ M(i, j)+
M(i,j+1)+ M(i+1,j-1)+ M(i+1,j)+ M(i+1,j+1)) / 9
 The initial matrix must be read from a file having the format
defined in Exercise 4
 The smoothed matrix must be saved in a file having the
same format

Introduction to VBA programming - (c) 2009 Dario Bonino

You might also like