powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Scripting.FileSystemObject - не фурычит
20 сообщений из 20, страница 1 из 1
Scripting.FileSystemObject - не фурычит
    #33229561
в реферансах Scripting Runtime подключена
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Dim myfilename As Variant

myfilename = Application.GetOpenFilename
If myfilename = False Then
    Exit Sub
End If

Dim fso As Scripting.FileSystemObject
Dim l As Variant

Set fso = CreateObject("Scripting.FileSystemObject")
Set l = fso.OpenTextFile(myfilename)
ругается:
мля, ВБА, еррор 249ActiveX component can't create object
выделяет как ошибку CreateObject
в чем прикол?
...
Рейтинг: 0 / 0
Scripting.FileSystemObject - не фурычит
    #33230013
Azart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот этот код прекрасно работает.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
    Dim fs, f

    On Error Resume Next

    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.OpenTextFile("C:\t.txt",  8 , True,  0 )
    f.Write DateTime.Date$ & " " & DateTime.Time$ & " : " & Text & vbCrLf
    f.Close
В референс Scripting Runtime ОТКЛЮЧЕНА.
...
Рейтинг: 0 / 0
Scripting.FileSystemObject - не фурычит
    #33244290
Спасибо за ответ, но мне ваще-то читать его надо...
сорри, что недописал, далее идет:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
For t =  1  To  10000 
If l.AtEndOfStream <> True Then 
ReDim Preserve a(t)
a(t) = l.ReadLine
Else: GoTo  1 
End If
Next t

 1 : l.Close
с Вашим вариантом не считывает строки
файл, который открывается, - текстовый
...
Рейтинг: 0 / 0
Scripting.FileSystemObject - не фурычит
    #33245584
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВот этот код прекрасно работает.
Dim fs, f

On Error Resume Next

Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.OpenTextFile("C:\t.txt", 8, True, 0)
f.Write DateTime.Date$ & " " & DateTime.Time$ & " : " & Text & vbCrLf
f.Close

В референс Scripting Runtime ОТКЛЮЧЕНА.
Конечно прекрасно. Ведь он ничего не делает!
Поскольку авторВ референс Scripting Runtime ОТКЛЮЧЕНА. то ошибка обязательно возникает, но при авторOn Error Resume Next она не показывается, а просто пропускается, как и все остальные. В шести строчках этого кода получаем четыре ошибки.
Но это должно работать если включить В референс Scripting Runtimе.

Я бы предложил все же явно описывать переменные.
Код: plaintext
1.
2.
3.
Dim fsoFile As New FileSystemObject
Dim fileStreamIN As TextStream
Set fileStreamIN = fsoFile.OpenTextFile(fileIN)
...
Рейтинг: 0 / 0
Scripting.FileSystemObject - не фурычит
    #33245995
Letter_D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем вообще использовать поганый FileSystemObject???
Можно просто открывать файл на чтение, или запись, или вообще как хошь.

Open Filename For Input As #1
For...
ReDim Preserve a(t)
Line Input #1, a(t)
Next...
Close #1
...
Рейтинг: 0 / 0
Scripting.FileSystemObject - не фурычит
    #33246120
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Letter_DА зачем вообще использовать поганый FileSystemObject???

Прошу прощения, но он совсем даже не поганый. Еcли вы не умеете им пользоваться, не надо валить все на майкрософт. FSO замечательно работает.
...
Рейтинг: 0 / 0
Scripting.FileSystemObject - не фурычит
    #33246689
Letter_D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Умеем. Потому и сравниваем.
...
Рейтинг: 0 / 0
Scripting.FileSystemObject - не фурычит
    #33248236
Processor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Letter_DУмеем. Потому и сравниваем.Такая аргументация присуща научной дисциплине под названием "Сравнительная фаллометрия"
...
Рейтинг: 0 / 0
Scripting.FileSystemObject - не фурычит
    #33270894
Сорри, был в командировке
Не сорьтесь, горячие финские парни. :)

FSO использую, т.к. он быстрее работает, чем просто перебор строк

самое интересное, что указанный мной код раньше прекрасно работал... а щас че-то не фурычит? причем ни с того, ни с сего
не пойму почему? ::confused::
вернее работает, но считывает пустые строки

(файл - источник данных - блаблабла.txt)
...
Рейтинг: 0 / 0
Scripting.FileSystemObject - не фурычит
    #33270962
и ещё...
хотел получить список файлов из папки:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Function ShowFileList(folderspec)
Dim fso, fld, f1, fc, s
Set fso = CreateObject("Scripting.FileSystemObject")
Set fld = fso.GetFolder(folderspec)
Set fc = fld.Files
For Each f1 In fc
s = s & f1.Name
s = s & vbCrLf
Next
ShowFileList = s

End Function
опять то же самое, выделяет строку и пишет, что, дескать, не в силах АктивХ сделать мне хорошо
...
Рейтинг: 0 / 0
Scripting.FileSystemObject - не фурычит
    #33270996
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может вот это поможет?
...
Рейтинг: 0 / 0
Scripting.FileSystemObject - не фурычит
    #33271147
2Melkiades: огромное спасибо!
и как я не догадался!
недогадлИвый какой-то стал :)

там оказываецца баг какой-то...
исправление тут

Всем спасибо за отзывы
...
Рейтинг: 0 / 0
Scripting.FileSystemObject - не фурычит
    #33273613
Processor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Олег aka 3вероВоуFSO использую, т.к. он быстрее работает, чем просто перебор строкВ защиту FSO и в качестве примера "перебора строк" привожу пример из реально работающей "примочки".
Часть деклараций опущена.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
Private Declare Function OemToChar Lib "user32" Alias "OemToCharA" _
                    (ByVal lpszSrc As String, ByVal lpszDst As String) As Long

Public Sub Test()
Dim fso As New Scripting.FileSystemObject	'Достаточно 1 объекта на всю работу.
Dim txtFl As Scripting.File			'Формат файла не имеет значения:								                          		'важны байты, его составляющие
Set txtFl = fso.GetFile(PathToTxt)      	'DOS-текст (866 кодовая страница)
Dim txtStrmI As Scripting.TextStream		'работа со строками (типа StdIn,StdOut)
'Уходим от файловых операций к операциям с потоком символов:
Set txtStrmI = txtFl.OpenAsTextStream(ForReading, TristateFalse)
'Вместо работы с отдельными строками, считываемыми из потока,
'будем работать со всеми символами потока, включая vbCrLf.
'С этой целью утилизируем ещё одно преимущество современной техники - большую память:
'в одной VB-строке можно разместить все Unicode-символы текстового файла.
Dim sDOS As String			'Исключительно для читабельности кода
Dim sASCII As String			'резервируем ДВЕ строки. WinAPI правильно
Dim RetCode As Long			'перекодирует текст и в случае задания dst=src.
'Без всякого цикла загоняем все ЛОГИЧЕСКИЕ строки в единую строку VB
sDOS = txtStrmI.ReadAll                 'весь файл с DOS-текстом загоняем в VB-строку
RetCode = OemToChar(sDOS, sASCII)   'к-рую перекодируем средствами самой Windows.
sDOS = ""                                   'очищаем ненужную в дальнейшем строку
'Set txtStrmO = fso.OpenTextFile(ThisWorkbook.Path & "\ОТЧЕТ.txt", ForWriting, True, TristateFalse)
'txtStrmO.Write sASCII                  'эти три оператора остались из отладочного варианта;
'txtStrmO.Close						    
'Далее можно проводить работу с данными без файловых операций. 
'Можно выделять строки, разбирать строки на термы "от головы до хвоста (InStr)",
' "от хвоста до головы (InStrRev)", "из глубины души (Mid)". Напр.:   
Dim p As Long, q As Long, sPayOrder As String, s As String, v As Variant, k As Long
p = InStr( 1 , sASCII, VTotal)                  'Извлекаем строку, содержащую DOS-сформированную
q = InStr(p, sASCII, vbCrLf)                  'базу налогообложения.
v = Split(Mid(sASCII, p, q - p +  1 ), "|")   'Подготовим строку для преобразования
k = UBound(v,  1 ) -  1                             'в Double
sDOS = v(k): sDOS = Replace(sDOS, ".", ",")   'и сохраним "на потом" в sDOS.

p = InStr( 1 , sASCII, OsProd, vbTextCompare)    'Из всего документа нам нужна только часть налоговой
q = InStr(p, sASCII, EOPartOne, vbTextCompare) 'с необходимыми и достаточными исходными данными.
sPayOrder = Mid(sASCII, p, q - p)              'Эта часть найдена и помещена в строку-хранилище...
'
' и т.д.
'
End Sub
...
Рейтинг: 0 / 0
Scripting.FileSystemObject - не фурычит
    #33273837
Letter_D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гммм, собственно, о чем пример-то?
Получить строку целиком можно и через Open (я знаю 10 способов)
Например:

Dim f3 As String
f3 = String(FileLen(MyFile), vbNull)
Open MyFile For Binary As #3
Get #3, 1, f3
Close #3

Получаем весь файл в строке f3.
А всё остальное (строковые преобразования) к fso отношения не имеет.
:))
...На самом деле, кому что удобнее.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Scripting.FileSystemObject - не фурычит
    #35446678
vovan_z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подскажите пожалуйста, где "В референс Scripting Runtime" включать и выключать? word русский
...
Рейтинг: 0 / 0
Scripting.FileSystemObject - не фурычит
    #35451696
Фотография Kallandor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vovan_zподскажите пожалуйста, где "В референс Scripting Runtime" включать и выключать? word русский

попробуйте обзором выбрать файл из папки system32 scrrun.dll
...
Рейтинг: 0 / 0
Scripting.FileSystemObject - не фурычит
    #36083886
Фотография ПикеЯ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
воспользуюсь темой. немного похожей.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
Dim cnnDBF As ADODB.Connection

With cnnDBF
                .ConnectionString = _
                    "Provider=MSDASQL.1;" & _
                    "Persist Security Info=False;" & _
                    "Data Source=FPD26;" & _
                    "Mode=ReadWrite;"
                .CursorLocation = adUseClient
                .CommandTimeout =  30 
                .Open
            End With
...
On Error GoTo ErrHndlr
    txtSQL = "CREATE TABLE ... "
    txtErr = "Не могу создать файл ведомости " & PathTable & "\" & NameTable
    cnnDBF.Execute txtSQL, , adExecuteNoRecords
    
    txtSQL = "INSERT INTO ...."
    txtErr = "Не могу добавить служебную строку в файл ведомости " & PathTable & "\" & NameTable
    cnnDBF.Execute txtSQL, , adExecuteNoRecords
    
EndFunc:
    CreateVedom = PL.Stream
    If cnnDBF.State <> adStateClosed Then cnnDBF.Close
    On Error GoTo  0 
    Exit Function
    
ErrHndlr:
    PL.ErrDescription = ": " & txtErr & vbNewLine & "Код: " & Err.Number & " " & Err.Description
    Resume EndFunc

'эта часть отрабатывает без ошибки. cnnDBF.Close должен отработать
....


' сдесь файл переименовывается в силу производственной необходимости
BakFile = Left$(PathNameDBF, InStr(PathNameDBF, ".")) & "bak"
If FSO.FileExists(BakFile) Then FSO.DeleteFile BakFile
FSO.MoveFile PathNameDBF, BakFile   'err[/quote]

создается ДБФник. в него вносятся данные, после чего этот ДБФник необходимо переименовать. файл действительно создается, копируется, открывается на чтение Set F_Bak = FSO.OpenTextFile(BakFile, ForReading)

при попытке переименования (или удаления, если использовать копирование-удаление) получаю АкцесДенаид.
описанная ситуация возникает на ВинХР и редко на Вин2000.
выполнение программы пошагово проходит нормально.

вдруг кто сталкивался - в чем может быть загвоздка
(гугел, к сожалению, недоступен)
...
Рейтинг: 0 / 0
Scripting.FileSystemObject - не фурычит
    #36083914
Фотография ПикеЯ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сорри за форматирование.
...
Рейтинг: 0 / 0
Scripting.FileSystemObject - не фурычит
    #36085242
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Letter_DА зачем вообще использовать поганый FileSystemObject???...

Да чем же он поганый?
:0)
...
Рейтинг: 0 / 0
Scripting.FileSystemObject - не фурычит
    #36085685
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladConnLetter_DА зачем вообще использовать поганый FileSystemObject???...

Да чем же он поганый?
:0)У него имя длинное, писать долго. Имена объектов должны быть короткими и легкими. Вот например i или j, в крайнем случае k. А объект у которого в имени аж шестнадцать букв - поганый, однозначно поганый.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Scripting.FileSystemObject - не фурычит
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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