2009-11-12 3 views
1

Я получил этот код от одного из тех хороших людей здесь, которые готовы тратить свое время и энергию, чтобы поделиться своими знаниями с недоносками:Что такое «Dim fso, MyFile, FileName, TextLine» в VBA?

Sub ReadLinesFromAFileOneAfterAnother() 
Const ForReading = 1, ForWriting = 2, ForAppending = 8 
Dim fso, MyFile, FileName, TextLine 

Set fso = CreateObject("Scripting.FileSystemObject") 

FileName = "c:\testfile.txt" 

Set MyFile = fso.OpenTextFile(FileName, ForReading) 

'' Read from the file 
Do While MyFile.AtEndOfStream <> True 
    TextLine = MyFile.ReadLine 

    '' Do stuff to TextLine 

Loop 
MyFile.Close 
End Sub 

Хотя я знаю, что задача этого код выполняет, я все еще хочу знать, что каждый из его элементов означает и делает. Может кто-нибудь, пожалуйста, объясните мне, что третья строка этого кода все о:

Dim fso, MyFile, FileName, TextLine 

Что такое «FSO» в первую очередь? Я знаю, что это означает «Объект файловой системы», но он мало что может объяснить мне, что это на самом деле и что он выполняет. Что означают эти три следующих слова («MyFile», «FileName», «TextLine»)? Это какие-то параметры чего-то?

Я прочитал это: http://msdn.microsoft.com/en-us/library/h7se9d4f(VS.85).aspx

и это: http://msdn.microsoft.com/en-us/library/ebkhfaaz(VS.85).aspx

, но он чувствует, как эти материалы wrriten для тех, которые сами могли бы написать их - я с трудом понимал ничего. Некоторые вещи, конечно, более или менее ясны, но есть так много других терминов и слов, которые я не знаю! В конце концов, нет целостной полной и четкой картины.

Итак, я сдался и решил вернуться сюда. Этот сайт, вероятно, один из немногих в Интернете (на самом деле я не встречал никого другого), который заявил в своих правилах: «Нет вопроса слишком тривиальным или слишком« новичком »». Это дает мне почву для того, чтобы задать этот вопрос.

Итак, пожалуйста, любой, объясните мне простыми словами, что такое «fso». Именно то, о чем идет третья строка кода.

Благодарим вас заблаговременно.

+0

Спасибо всем, кто ответил !!! – brilliant

+0

Для чего это стоит, пример кода выглядит как VBScript, а не VBA. Хотя вы можете использовать этот код в VBA, если вы не использовали 'Option Explicit'. – JimmyPena

ответ

6

Строка кода:

Dim fso, MyFile, FileName, TextLine 

объявляет вещи, называемые 'переменные' варианта типа.

Переменная - это немного пространства в памяти с именем и типом. Вы используете их, чтобы сообщить программе, что вы собираетесь использовать их позже в коде.

Обычно вы должны указывать переменные типа (например, целое число или строку), но кодер не имеет, поэтому он по умолчанию имеет вариант, который может принимать любой тип (по существу).

После того, как вы сделали:

Set fso = CreateObject("Scripting.FileSystemObject") 

затем FSO содержит немного кода, который может делать вещи в файловой системе.

Set MyFile = fso.OpenTextFile(FileName, ForReading) 

Средства вы используете FSO функциональность, чтобы открыть имя файла, заданное в переменной «имя файла», и вы разместили ссылку на него в переменной 'Myfile.

Таким образом, вы можете делать дальнейшие действия с файлом, используя переменную myfile.

Цикл «делать пока» читает через этот файл по одной строке за раз (myfile.readline) и помещает результат в переменную «textline», которая при каждом раунде содержит другую строку текста цикл, пока файл не будет закончен.

Идея этого кода заключается в том, чтобы читать файл по строкам, делая материал с содержимым каждой строки, когда вы сталкиваетесь с ней. Вы можете распечатать его, зарегистрировать, отобразить его пользователю и т. Д., Так как заголовок суб-указывает!

Чтобы быть честным, основы для VB необходимы для того, чтобы вы могли интерпретировать такой код, поэтому я бы предложил искать онлайн-учебник или книгу.

+0

Особая благодарность вам, Рич, за ваши обширные объяснения. – brilliant

5

Все, что линия делает, является определение тех, как переменные, которые будут использоваться дальше в коде

также сослаться на этот пост на StackOverflow: What does DIM stand for in Visual Basic and BASIC?

1

Это третья строка просто определяет их для последующего использования на. Fso, Filename и т. Д. - это просто переменные-заполнители, которые будут использоваться позже в коде. fso объявлен и установлен в новый объект файловой системы. Это может быть любой тип файловой системы - NTFS, FAT и т. Д., Но все это означает, что вы собираетесь работать с файлами в системе. Затем вы используете его, чтобы открыть файл, указанный только для чтения, и прочь остальная часть кода идет. Вам нужно указать fso, чтобы программа знала, где читать - будь то файл, входной поток или отдельная дополнительная файловая система.

Я надеюсь, что это поможет несколько!

+0

Спасибо, uberRouse. Ты пролил свет для меня! – brilliant

2
Dim fso, MyFile, FileName, TextLine 

Эта линия определяет переменные.
Целью этого является , чтобы помочь уловить опечатки, поскольку переменные ссылаются на весь сценарий. Обычно это используется в тандеме Опция Explicit (обычно находится в верхней части скрипта).

По умолчанию VBA не требует этой переменной.Можно переопределить это [глупое] поведение по умолчанию, используя опцию Option Explicit, чтобы исключение «неопределенной переменной» было создано, когда конкретная переменная не определена.
Без этого параметра, в фрагменте вопроса, если, например, в строке 4 мы нечаянно опечатали имя FileNam, опустив e, VBA продолжил бы, имея фактически две переменные FileName и FileNam; позже в программе при правильном использовании переменной FileName будет использоваться пустое значение, приводящее к тонким и труднодоступным ошибкам.

Смежные вопросы