powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Создать файл...
25 сообщений из 38, страница 1 из 2
Создать файл...
    #34244172
Илья 812
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый вечер!

Возможно ли сделать с помощью VBA следующие:

1) создать файл с расширением txt;
2) внести определенный объем информации в созданный файл;
3) сохранить фаил param.txt в C:\
...
Рейтинг: 0 / 0
Создать файл...
    #34244189
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, возможно.

На этом форуме, да и на всех других, очень много, наверное сотни, примеров. Например, на Relib.com.

Сделай поиск на Microsoft Scripting Runtime и File System Object.

VladConn
...
Рейтинг: 0 / 0
Создать файл...
    #34244197
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот часть кода, чтобы ты почувствовал, в каком ключе действовать:

Dim objFSO As Scripting.FileSystemObject
Dim objTextStream As Scripting.TextStream

Set objFSO = New Scripting.FileSystemObject

Set objTextStream = objFSO.OpenTextFile("C:\MyFile.txt", ForAppending, True, TristateFalse)

objTextStream.WriteLine "My first and only (for now) test line!"
objTextStream.Close
...
Рейтинг: 0 / 0
Создать файл...
    #34244334
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неее, в том ключе действовать не надо. Надо действовать в другом ключе:
Код: plaintext
1.
2.
Open "c:\param.txt" For Output As # 1 
Print # 1 , "Hello world!"
Close # 1 
...
Рейтинг: 0 / 0
Создать файл...
    #34244369
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно еще API использовать
...
Рейтинг: 0 / 0
Создать файл...
    #34244733
baclanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White OwlНеее, в том ключе действовать не надо. Надо действовать в другом ключе:
Код: plaintext
1.
2.
Open "c:\param.txt" For Output As # 1 
Print # 1 , "Hello world!"
Close # 1 


Как раз в том!
FSO более новая технология, и проверочку на наличие файла в ней сделать элементарно.
...
Рейтинг: 0 / 0
Создать файл...
    #34245366
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
baclanov
Как раз в том!
FSO более новая технология, и проверочку на наличие файла в ней сделать элементарно.
зачем подключать дополнительно библиотеку, если есть встроенные команды, а проверку можно и Dir-ом сделать.
...
Рейтинг: 0 / 0
Создать файл...
    #34245384
Илья 812
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пасиб, вечером начну. О результатах сообщу.
...
Рейтинг: 0 / 0
Создать файл...
    #34245394
Илья 812
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как раз в том!
FSO более новая технология, и проверочку на наличие файла в ней сделать элементарно.[/quot]

Какая требуется библиотека?
...
Рейтинг: 0 / 0
Создать файл...
    #34245410
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Илья 812
Какая требуется библиотека?
библиотека "Microsoft Scripting Runtime"
Только лучше освой то, что белая сова написала.
...
Рейтинг: 0 / 0
Создать файл...
    #34245898
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlНеее, в том ключе действовать не надо. Надо действовать в другом ключе:
Код: plaintext
1.
2.
Open "c:\param.txt" For Output As # 1 
Print # 1 , "Hello world!"
Close # 1 


White Owl,

Спасибо за ценную мысль. Не забудьте поделиться вашей идеей с Microsoft, этими дурачками из Кремниевой Долины.

:0)))

VladConn
...
Рейтинг: 0 / 0
Создать файл...
    #34245965
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladConn White OwlНеее, в том ключе действовать не надо. Надо действовать в другом ключе:
Код: plaintext
1.
2.
Open "c:\param.txt" For Output As # 1 
Print # 1 , "Hello world!"
Close # 1 

Спасибо за ценную мысль. Не забудьте поделиться вашей идеей с Microsoft, этими дурачками из Кремниевой Долины.

VladConn, для поставленной задачи приведенного выше примера вполне достаточно, при этом никаких лишних библиотек не используется.
...
Рейтинг: 0 / 0
Создать файл...
    #34245977
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я что-то запамятовал, но если у чела VBA, может там нет команды OPEN ?
...
Рейтинг: 0 / 0
Создать файл...
    #34245988
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Создать файл...
    #34246010
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то есть.
...
Рейтинг: 0 / 0
Создать файл...
    #34246045
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот и я так думаю, что нечего огород городить из внешних библиотек :)

PS
это я ВладКону, без обид
...
Рейтинг: 0 / 0
Создать файл...
    #34247135
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет. Сколько работаю, никогда не было проблем с этой библиотекой. А что, кому-то доставила неудобства? Вообще-то, я общаюсь в разноязычных форумах. Пока-что такое неприятие обнаруживаю исключительно на своих родных. В реальной жизни до этого никому нет дела. Всех интересует понятность и легкость поддержки кода, а также его надежность. Мой код с использованием ФСО еще никогда не ломался и не доставлял проблем заказчикам. Опять же, все претензии лучше направлять в фирму-производитель этой библиотеки. Может она непозволительно велика и в условиях дефицита места это важно? Вроде нет. Непопулярна, несовместима и требует усилий при кодировании? Не-а. Требует установки, а не простого копирования приложения? Так последнее не актуально. А, наверно она утилизирует об"ектную модель и использование классов... и вот это уже требует известного напряжения.

Опять же, заметьте, я не критикую использование методов 15 летней давности. Хочется - пожалуйста. Но старые привычки мне, например, мешают в переходе на .NET. Лучше, на мой взгляд, все сразу писать в классах, использовать готовые об"екты и удобные библиотеки. За нас написано 90% процентов кода. Но я своего мнения не навязываю. Тем более оно не столько мое, как той самой фирмы, продуктами которой мы все пользуемся.
...
Рейтинг: 0 / 0
Создать файл...
    #34247172
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladConnВсем привет. Сколько работаю, никогда не было проблем с этой библиотекой.А кто-то говорил что с ней будут проблемы? Не будет конечно, но новичку гораздо проще разобраться в примере из трех строк чем в примере из шести (не считая пустых строк) с кучей непонятных параметров, опций и констант.
Конечно ты можешь советовать новичку сразу браться за объектные библиотеки, классы и прочую прогрессивную фигню, но прости меня, ты хочешь помочь человеку или отпугнуть его?

VladConnОпять же, заметьте, я не критикую использование методов 15 летней давности.Всего 15-и? :) Вообще-то, работа с файлами через open уже была в abasic и gwbasic. Может даже раньше появилась... То есть этим методам уже как минимум 20 лет.
...
Рейтинг: 0 / 0
Создать файл...
    #34247343
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здесь столько дискуссии из-за маленького кода
Я тоже приведу свое мнение ;-)
Я согласен с VladConn при работе с текстовыми файлами я работаю только с FileSystemObject
А методы Open тоже нужно знать, в плане общего образования
...
Рейтинг: 0 / 0
Создать файл...
    #34247545
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кто лучше, Open или FSO???

кто-нибудь видел исходники сишной библиотеки iostream, где фактически все новые cout прописаны через тот же fprintf, который в свою очередь прописан через низкоуровневый write.

чем бы вы не баловались, всем занимается VM.

аффтопитезь
...
Рейтинг: 0 / 0
Создать файл...
    #34247555
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladConnВсем привет. Сколько работаю, никогда не было проблем с этой библиотекой. А что, кому-то доставила неудобства? Вообще-то, я общаюсь в разноязычных форумах. Пока-что такое неприятие обнаруживаю исключительно на своих родных. В реальной жизни до этого никому нет дела. Всех интересует понятность и легкость поддержки кода, а также его надежность. Мой код с использованием ФСО еще никогда не ломался и не доставлял проблем заказчикам. Опять же, все претензии лучше направлять в фирму-производитель этой библиотеки. Может она непозволительно велика и в условиях дефицита места это важно? Вроде нет. Непопулярна, несовместима и требует усилий при кодировании? Не-а. Требует установки, а не простого копирования приложения? Так последнее не актуально. А, наверно она утилизирует об"ектную модель и использование классов... и вот это уже требует известного напряжения.

Опять же, заметьте, я не критикую использование методов 15 летней давности. Хочется - пожалуйста. Но старые привычки мне, например, мешают в переходе на .NET. Лучше, на мой взгляд, все сразу писать в классах, использовать готовые об"екты и удобные библиотеки. За нас написано 90% процентов кода. Но я своего мнения не навязываю. Тем более оно не столько мое, как той самой фирмы, продуктами которой мы все пользуемся.

У меня тоже не было проблем с FSO.
А разве с оператором Open были? (у меня нет)
Нсчет неудобства, когда понимаешь код, нет никакого неудобства, да и неприятия тоже.
А вот White Owl новичку гораздо проще разобраться в примере из трех строк чем в примере из шести (не считая пустых строк) с кучей непонятных параметров, опций и констант. - согласен на все сто
Да насчет реалий.
Вот тебе результат трех процедур
1-я
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Sub f()
    Dim objFSO As Object
    Dim objTextStream As Object
    Dim i%, a
    a = Timer
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    
    Set objTextStream = objFSO.OpenTextFile("C:\MyFile.txt", ForAppending, True, TristateFalse)
    For i =  1  To  32000 
        objTextStream.WriteLine "My first and only (for now) test line!"
    Next i
    objTextStream.Close
    Set objTextStream = Nothing
    Set objFSO = Nothing
    Cells( 1 ,  1 ) = Timer - a
    MsgBox Timer - a
End Sub
0,234375 сек.
2-я
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Sub ff()
    Dim objFSO As Scripting.FileSystemObject
    Dim objTextStream As Scripting.TextStream
    Dim i%, a
    a = Timer
    Set objFSO = New Scripting.FileSystemObject
    
    Set objTextStream = objFSO.OpenTextFile("C:\MyFile.txt", ForAppending, True, TristateFalse)
    For i =  1  To  32000 
        objTextStream.WriteLine "My first and only (for now) test line!"
    Next i
    objTextStream.Close
    Set objTextStream = Nothing
    Set objFSO = Nothing
    Cells( 2 ,  1 ) = Timer - a
    MsgBox Timer - a
End Sub
0,171875 сек
3-я
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Sub fff()
    Dim i%, f!, a
    a = Timer
    f = FreeFile
    Open "C:\MyFile.txt" For Output As #f
    For i =  1  To  32000 
        Print #f, "My first and only (for now) test line!"
    Next i
    Close #f
    Cells( 2 ,  1 ) = Timer - a
    MsgBox Timer - a
End Sub
0,09375 сек
win2000 sp4
office2000 sp3
...
Рейтинг: 0 / 0
Создать файл...
    #34248021
baclanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, приличная дисскусия получилась.
Насчет скорости, конечно, согласен.
Маленькое замечание:
1 метод: 0,3125 - С-диск и 0,4219 - сетевой.
3 метод: 0,0625 - С-диск и 1,3125 - сетевой.

WinXP sp2
VB 6 sp6
...
Рейтинг: 0 / 0
Создать файл...
    #34248612
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
baclanov
О как!!!
сеть
1-й 0,375
3-й 0,90625
Теперь знаю где ипользовать FSO
...
Рейтинг: 0 / 0
Создать файл...
    #34250425
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
baclanovДа, приличная дисскусия получилась.
Насчет скорости, конечно, согласен.
Маленькое замечание:
1 метод: 0,3125 - С-диск и 0,4219 - сетевой.
3 метод: 0,0625 - С-диск и 1,3125 - сетевой.

WinXP sp2
VB 6 sp6
интересный плюс в сторону FSO :)
теперь точно буду знать чем лучше FSO от обычных методов
...
Рейтинг: 0 / 0
Создать файл...
    #34287197
Andrey911
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Народ извените, но я опьять поднимаю эту тему чтобы другие знали про все возможности.
В VB есть еще свой (старый) движок (если нужно вести базу даных).
Надо определить поля

Public Type Tabl1
Pole1 as Strings*25
Pole2 as Integer
Pole3 as byte
Pole4 as Long
end Type

Процедура
Dim TmpTbl as Tabl1
Open "d:\text.tmp" For Random As #1 Len=Len(TmpTbl ) ' Открываем файл в произвольном доступе
Put #1, Номер_позиции, TmpTbl ' Сохраняем запись
Get #1, Номер_позиции, TmpTbl ' Читаем запись
Msgbox TmpTbl.Pole1 ' Так мы обращаемся к полю чтобы присвоить или опросить
close 1 ' Закрываем файл

Заметка:
При присваиванию Pole1 типу Strings*25 текстового значения учтите что поле будет переменная будет иметь размер 25байт, тоисть пустое пространство будет заполнено пробелами.
Полезный совет:
1. Для того чтобы удалить пробелы используйте функцию RTrim() или Trim()
2. Если у Вас часто возникает ошибка о повторном открытии файла и вы не можете отследить где именно вы забываете закрыть файл методом Close 1, то я Не рекомендую, но все таки возможно просто перед открытием лишний раз в холостую закрыть файл. Ошибки не будет.
...
Рейтинг: 0 / 0
25 сообщений из 38, страница 1 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Создать файл...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]