Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Scripting.FileSystemObject - не фурычит / 20 сообщений из 20, страница 1 из 1
23.08.2005, 11:47
    #33229561
Scripting.FileSystemObject - не фурычит
в реферансах 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
23.08.2005, 14:06
    #33230013
Azart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Scripting.FileSystemObject - не фурычит
Вот этот код прекрасно работает.
Код: 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
31.08.2005, 18:01
    #33244290
Scripting.FileSystemObject - не фурычит
Спасибо за ответ, но мне ваще-то читать его надо...
сорри, что недописал, далее идет:
Код: 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
01.09.2005, 12:14
    #33245584
AndreyMp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Scripting.FileSystemObject - не фурычит
авторВот этот код прекрасно работает.
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
01.09.2005, 13:55
    #33245995
Letter_D
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Scripting.FileSystemObject - не фурычит
А зачем вообще использовать поганый FileSystemObject???
Можно просто открывать файл на чтение, или запись, или вообще как хошь.

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

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

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

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

(файл - источник данных - блаблабла.txt)
...
Рейтинг: 0 / 0
15.09.2005, 12:35
    #33270962
Scripting.FileSystemObject - не фурычит
и ещё...
хотел получить список файлов из папки:
Код: 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
15.09.2005, 12:43
    #33270996
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Scripting.FileSystemObject - не фурычит
Может вот это поможет?
...
Рейтинг: 0 / 0
15.09.2005, 13:31
    #33271147
Scripting.FileSystemObject - не фурычит
2Melkiades: огромное спасибо!
и как я не догадался!
недогадлИвый какой-то стал :)

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

Всем спасибо за отзывы
...
Рейтинг: 0 / 0
16.09.2005, 13:59
    #33273613
Processor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Scripting.FileSystemObject - не фурычит
Олег 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
16.09.2005, 14:54
    #33273837
Letter_D
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Scripting.FileSystemObject - не фурычит
Гммм, собственно, о чем пример-то?
Получить строку целиком можно и через 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
Период между сообщениями больше года.
23.07.2008, 12:12
    #35446678
vovan_z
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Scripting.FileSystemObject - не фурычит
подскажите пожалуйста, где "В референс Scripting Runtime" включать и выключать? word русский
...
Рейтинг: 0 / 0
25.07.2008, 12:08
    #35451696
Kallandor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Scripting.FileSystemObject - не фурычит
vovan_zподскажите пожалуйста, где "В референс Scripting Runtime" включать и выключать? word русский

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

Код: 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
10.07.2009, 11:28
    #36083914
ПикеЯ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Scripting.FileSystemObject - не фурычит
сорри за форматирование.
...
Рейтинг: 0 / 0
10.07.2009, 22:55
    #36085242
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Scripting.FileSystemObject - не фурычит
Letter_DА зачем вообще использовать поганый FileSystemObject???...

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

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


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