Файловый ввод-вывод в VBA
работает и ладно , а чем тебя не устравивает этот способ?
Private Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any,
ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, ByVal lpOverlapped As Long) As Long
Call ReadFile(hDevice, abBuff(0 UBound(abBuff) + 1, nRead, 0&)
ну и т д
это 5 ,баллов! в VBA использовать winAPI - это конечно по -аццовски
А что делать если очень хочеца?....
См. мсдн FileSystemObject, например, это основной объект работы с файловой системой.
VBScript связан с VBA примерно также, как Java с JavaScript.
VBScript связан с VBA примерно также, как Java с JavaScript.Вы совершенно правы, коллега. С лексической точки зрения.
Для тебя специально поясню: одна из областей применения VScript - это Windows Script Host.
Что это такое прочти сам. В данном случае интересно, что в нем можно использовать любой зарегистрированный в системе ActiveX dll. Для удобства работы с файлами в VBScript из WSH(или ASP) есть поставляемый с ОС ActiveX, естественно, его можно задействовать и из Visual Basic и из VBA, да хоть из С++(если тебе это поможет).
Какие мы умные! Вот теперь объясни мне, почему в ответе на вопрос про VBA встретилось слово VBScript? Логично было предположить, что ты что-то путаешь, вот я тебя и поправил. А ты сразу огрызаться.
Какие мы умные! Вот теперь объясни мне, почему в ответе на вопрос про VBA встретилось слово VBScript? Логично было предположить, что ты что-то путаешь, вот я тебя и поправил. А ты сразу огрызаться.Он ничего не путает. Ответ корректен, поскольку с точки зрения использования ActiveX пофигу где ты находишься - внутри VBA в Office/Corel и пр. или VBScript-а в WSH. Кроме своей корректности, пост заключает в себе ответ на вопрос, заданный автором треда.
Твой же пост в резкой форме утверждал, что сообщение в корне неверно.
не прав, он всего лишь заметил, что VBA и VBScript - разные вещи.
Хотя, конечно, оффтопик стоило поставить.
Погоди, он не утверждал, что Хотя, конечно, оффтопик стоило поставить.
Какие есть механизмы файлового ввода-вывода в VBA, который в офисе?
Насколько я понял (не зная ни VBA, ни VBScript'а можно подключить некоторый ActiveX
ага. и где описалово на эти функции? в МСДНе?
Какие есть механизмы файлового ввода-вывода в VBA, который в офисе?Какие-то может и есть, но они скорее всего сильно привязаны к офису. Что делать, если придется в Corel что-то писать? привел решение, которое работает везде.
На этом вопрос треда был исчерпан.
См. мсдн FileSystemObject, например, это основной объект работы с файловой системой.
Это стандартный компонент, считай что это часть стандартной библиотеки для VB\VBA\VBScript
в кореле тоже есть VBA? хм. думаю и там заведётся.
переведи мой пример из первого поста на FileSystemObject-модель, пожалуйста.
Во всяком случае выглядит громоздее:
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
Dim fso, f, ts
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CreateTextFile "test1.txt" ' Create a file.
Set f = fso.GetFile("test1.txt")
Set ts = f.OpenAsTextStream(ForWriting, TristateUseDefault)
ts.Write "Hello World"
ts.Close
Этож песдец.
Const ForReading = 1, ForWriting = 2, ForAppending = 8 Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0- это лишнее, при подключении ActiveX в VBA\VB, константы у тебя будут определены автоматически.
2. Зачем там лишние действия с созданием файла, проще вот как:
Dim fso As New FileSystemObject
Dim fs As TextStream
Set fs = fso.OpenTextFile("t.t", ForWriting, True)
fs.WriteLine "Hello world"
fs.Close
А вообще-то ты спросил
Есть другие способы. Я тебе сказал один из способов, что не так то?
С субъективной(ессно моей) точки зрения, такой код существенно красивей чем стандартный басиковский. Но это имхо, для всех по разному...
В общем это первый случай, когда я увидел, что для того, чтобы вывести строку в файл потребовалось аж две переменных.
Месье никогда не видел Java и .NET?
Одна неявная переменная и у тебя есть, это
1-2 переменные - один порядок
по до-диез даже курсором не ходил
to :
неявная - да. это логично, если религия хоть как-то позволяет с несколькими файлами работать..
Вопрос на засыпку: сколько потебуется переменных, чтобы работать с двумя файлами? с N файлами?
Сорри за резкость, но.. в данном случае такое кол-во переменных не принципиально, кроме как с какой-либо субъективной точки зрения.
А вот писать так: "open "filte.txt" for output as #2" - дурной тон, ибо 2 могло быть использованно раньше для какого - либо файла. (Отмазки типа: "Да я помню, что где юзал" не катят.)
Правильно вот как:
Dim fnum
fnum = FreeFile
open "filte.txt" for output as fnum
'Работа с файлом
Close fnum
Это рекомендуется в любой вменяемой книжке по VB, не я придумал.
Оставить комментарий
yolki
как сделать?А то у меня на уме только атавизм от обычного бейсика:
работает - знаю. Есть другие способы? или он хоть и вижуал, но бейсик в натуре?