|
DO_oK 11 / 11 / 7 Регистрация: 05.11.2011 Сообщений: 87 |
||||
|
1 |
||||
|
08.08.2017, 09:32. Показов 7758. Ответов 11 Метки нет (Все метки)
Привет! Поискал решение, не нашел, давно не обращался за помощью на форум так вот ругается на первую же строчку кода, т.е. на «Sub FSD()». Весь код:
__________________
0 |
|
es geht mir gut 11264 / 4746 / 1183 Регистрация: 27.07.2011 Сообщений: 11,437 |
|
|
08.08.2017, 09:42 |
2 |
|
FSD() Обзови по другому FSD_1 , например.
0 |
|
11 / 11 / 7 Регистрация: 05.11.2011 Сообщений: 87 |
|
|
08.08.2017, 09:45 [ТС] |
3 |
|
Переименовал в FSD_1(), не работает. Вообще от имени не зависит пробовал разные варианты и кириллицу тоже
0 |
|
6874 / 2806 / 533 Регистрация: 19.10.2012 Сообщений: 8,550 |
|
|
08.08.2017, 09:46 |
4 |
|
Библиотека с FileSystemObject подключена?
0 |
|
11 / 11 / 7 Регистрация: 05.11.2011 Сообщений: 87 |
|
|
08.08.2017, 09:50 [ТС] |
5 |
|
Если речь идет об этом то видимо нет. Можно поподробней? Миниатюры
0 |
|
6874 / 2806 / 533 Регистрация: 19.10.2012 Сообщений: 8,550 |
|
|
08.08.2017, 10:17 |
6 |
|
РешениеНайдите и подключите Microsoft scripting runtime scrrun.dll
3 |
|
mobile
26771 / 14450 / 3192 Регистрация: 28.04.2012 Сообщений: 15,782 |
||||
|
08.08.2017, 10:24 |
7 |
|||
|
Библиотека Microsoft Scripting Runtime. Но часто применяют позднее связывание без объявления в референсах: вместо Dim fso As New FileSystemObject пишут
Добавлено через 31 секунду
4 |
|
11 / 11 / 7 Регистрация: 05.11.2011 Сообщений: 87 |
|
|
08.08.2017, 10:25 [ТС] |
8 |
|
Проблема решилась, спасибо! Найдите и подключите Microsoft scripting runtime scrrun.dll
0 |
|
es geht mir gut 11264 / 4746 / 1183 Регистрация: 27.07.2011 Сообщений: 11,437 |
|
|
08.08.2017, 10:29 |
9 |
|
Аппаздал Зато в этом случае ничего не надо подключать .
0 |
|
DO_oK 11 / 11 / 7 Регистрация: 05.11.2011 Сообщений: 87 |
||||
|
09.08.2017, 07:37 [ТС] |
10 |
|||
|
Попробовал так, остается ошибка, не подскажите в чем дело?
0 |
|
6874 / 2806 / 533 Регистрация: 19.10.2012 Сообщений: 8,550 |
|
|
09.08.2017, 08:45 |
11 |
|
Ошибка в TextStream — что это, куда это… никто не знает.
0 |
|
shanemac51 Модератор
11260 / 4591 / 739 Регистрация: 07.08.2010 Сообщений: 13,153 Записей в блоге: 4 |
||||
|
09.08.2017, 09:21 |
12 |
|||
|
у меня заработало, но после исправлений
0 |
Is there something that I need to reference? How do I use this:
Dim fso As New FileSystemObject
Dim fld As Folder
Dim ts As TextStream
I am getting an error because it does not recognize these objects.
![]()
asked Jul 13, 2010 at 0:00
Alex GordonAlex Gordon
54.6k283 gold badges661 silver badges1046 bronze badges
Within Excel you need to set a reference to the VBScript run-time library.
The relevant file is usually located at WindowsSystem32scrrun.dll
- To reference this file, load the
Visual Basic Editor (ALT+F11) - Select Tools > References from the drop-down menu
- A listbox of available references will be displayed
- Tick the check-box next to ‘
Microsoft Scripting Runtime‘ - The full name and path of the
scrrun.dllfile will be displayed below the listbox - Click on the OK button.
This can also be done directly in the code if access to the VBA object model has been enabled.
Access can be enabled by ticking the check-box Trust access to the VBA project object model found at File > Options > Trust Center > Trust Center Settings > Macro Settings

To add a reference:
Sub Add_Reference()
Application.VBE.ActiveVBProject.References.AddFromFile "C:WindowsSystem32scrrun.dll"
'Add a reference
End Sub
To remove a reference:
Sub Remove_Reference()
Dim oReference As Object
Set oReference = Application.VBE.ActiveVBProject.References.Item("Scripting")
Application.VBE.ActiveVBProject.References.Remove oReference
'Remove a reference
End Sub
![]()
answered Jul 13, 2010 at 10:46
Robert MearnsRobert Mearns
11.7k3 gold badges38 silver badges42 bronze badges
3
In excel 2013 the object creation string is:
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
instead of the code in the answer above:
Dim fs,fname
Set fs=Server.CreateObject("Scripting.FileSystemObject")
answered Jul 31, 2016 at 19:54
1
These guys have excellent examples of how to use the filesystem object http://www.w3schools.com/asp/asp_ref_filesystem.asp
<%
dim fs,fname
set fs=Server.CreateObject("Scripting.FileSystemObject")
set fname=fs.CreateTextFile("c:test.txt",true)
fname.WriteLine("Hello World!")
fname.Close
set fname=nothing
set fs=nothing
%>
![]()
shA.t
16.4k5 gold badges52 silver badges111 bronze badges
answered Jul 13, 2010 at 0:04
Gerald FerreiraGerald Ferreira
1,3392 gold badges22 silver badges43 bronze badges
1
After adding the reference, I had to use
Dim fso As New Scripting.FileSystemObject
answered Feb 15, 2018 at 23:25
thedanottothedanotto
6,5855 gold badges45 silver badges42 bronze badges
After importing the scripting runtime as described above you have to make some slighty modification to get it working in Excel 2010 (my version). Into the following code I’ve also add the code used to the user to pick a file.
Dim intChoice As Integer
Dim strPath As String
' Select one file
Application.FileDialog(msoFileDialogOpen).AllowMultiSelect = False
' Show the selection window
intChoice = Application.FileDialog(msoFileDialogOpen).Show
' Get back the user option
If intChoice <> 0 Then
strPath = Application.FileDialog(msoFileDialogOpen).SelectedItems(1)
Else
Exit Sub
End If
Dim FSO As New Scripting.FileSystemObject
Dim fsoStream As Scripting.TextStream
Dim strLine As String
Set fsoStream = FSO.OpenTextFile(strPath)
Do Until fsoStream.AtEndOfStream = True
strLine = fsoStream.ReadLine
' ... do your work ...
Loop
fsoStream.Close
Set FSO = Nothing
![]()
answered May 4, 2018 at 16:18
![]()
- Remove From My Forums
-
Question
-
I found some code that seems to fit what I’m trying to do, but I’m getting an error message that the user defined type is not defined. The statements that won’t compile are listed below. What library is needed to make this compile? I’m using
Access 2013, but database version is 2007-2010.Dim fso As New FileSystemObject, sFile As Scripting.File Dim sourceFolder As Scripting.Folder
For the benefit of others, please mark posts as answered or helpful when they answer or assist you in finding the answer. ___ «We came all this way to explore the Moon, and the most important thing is that we discovered the Earth.» — Bill Anders,
Apollo 8.
Answers
-
Hi suzyQ,
If you want to stick with early binding, I think you need a reference to Windows Script Host Object Model library.
-
Proposed as answer by
Monday, December 7, 2015 2:58 AM
-
Marked as answer by
Fei XueMicrosoft employee
Monday, December 14, 2015 9:08 AM
-
Proposed as answer by
|
copper-top Пользователь Сообщений: 1051 |
#1 19.12.2017 21:43:09 здравствуйте. прошу помочь. скопировал два макроса в файл. макрос Content_for_etfs_convert отработал без проблем. после запускаю replaceTxts. выходит ошибка и выделяется fso As New FileSystemObject синим. в файле, с которого скопировал, работает как надо.может, какие то библиотеки надо подключить?
|
||
|
Hugo Пользователь Сообщений: 23100 |
#2 19.12.2017 21:48:58
— не может, а обязательно. Microsoft Scripting Runtime. Изменено: Hugo — 19.12.2017 21:50:03 |
||
|
The_Prist Пользователь Сообщений: 13958 Профессиональная разработка приложений для MS Office |
#3 19.12.2017 21:51:15 Либо для файла с кодом в VBA -Tools -References подключите библиотеку Microsoft Scripting Runtime, либо запишите процедуру так:
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
|
Hugo, The_Prist, подключил библиотеку Microsoft Scripting Runtime. заработало.спасибо. |
|
|
БМВ Модератор Сообщений: 20890 Excel 2013, 2016 |
copper-top, ну реально кажется, что вы даже не пытаетесь решить проблему самостоятельно, сразу сюда. Да и в целом вопрос к excel ваще не относится. Чистой воды VBS скрипты. То что они работают в VBA, то это только до первой Wscript. … (Я часто Excel как отладчик пользую, для простых и не очень VBS) . По вопросам из тем форума, личку не читаю. |
|
copper-top Пользователь Сообщений: 1051 |
#6 19.12.2017 22:23:58
как я решу, если макросами умею только пользоваться. макросы получил на этом форуме, за что спасибо и форуму и авторам.
так и есть. получил как скрипт. был скриптом — стал макросом. |
||||
|
БМВ Модератор Сообщений: 20890 Excel 2013, 2016 |
#7 19.12.2017 22:37:05 Offtop
Как скриптом был, так им и остался, Возможно кто-то кроме меня из форумчан застал первые выпуски Excel в которых реально макросы записывались в лист условными командами вот так например NDX = 1: Do While NDX < IDN: SendKeys «{down}»: NDX = NDX + 1: Loop , вот с тех пор и повелось, что все что на VBA макросом кличут, хотя это уже давно не так. По вопросам из тем форума, личку не читаю. |
||
|
|
|
|
Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.
Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ!
4. Используйте теги [ code=vba ] …текст программы… [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.
Полезные ссылки:
FAQ Сайта
FAQ Раздела
Кладовка
Наши Исходники
API-Guide
Поиск по Разделу
MSDN Library Online
Google
Ваше мнение о модераторах:
SCINER,
B.V.

Проблема с FSO
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
|
|
Доброго времени суток. Хочеться узнать как сделать так чтобы работала это (FSO) Когда я пытаюсь написать
Dim fso As New FileSystemObject то у меня не показывает FileSystemObject
как это исправить ? |
|
Lumen |
|
|
Project->References и поставить галочку напротив Microsoft Scripting Runtime |
Da$aD |
|
|
И еще нажать ОК)) |
|
VisualProg |
|
|
Dim FSO As Object Private Sub Form_Load() Set FSO = CreateObject(«Scripting.FileSystemObject») End Sub — Если совсем лень… |
|
Змей |
|
|
Цитата lytgeygen @ 25.04.09, 11:37 As New вот только хорошие книги настоятельно не рекомендуют использовать As New — в сложном коде это чревато тем, что ты не сможешь точно понять, где создаётся объект… а самое главное, он может быть создан случайно, при попытке проверить его значение — что приведёт к логической ошибке в коде. ПисАть совсем не сложнее, зато ты явно знаешь, когда и где создаётся объект. Цитата VisualProg @ 27.04.09, 18:44 Если совсем лень… это не «если мсовсем лень», а позднее связывание. Неудобно тем, что среда не поддерживает автокомплит для таких объектов, зато имеет огромный плюс: в случае отсутствия нужной библиотеки, программа не упадёт при попытке запуска, а нормально запустится, дойдёт до попытки создать объект и сгененирует ошибку, которую можно перехватить обычным On Error — например, чтоб сообщить юзеру, где он должен взять недостающую длл`ку |
ANDLL |
|
|
Цитата Змей @ 27.04.09, 20:17 плюс: в случае отсутствия нужной библиотеки, программа не упадёт при попытке запуска, а нормально запустится, дойдёт до попытки создать объект и сгененирует ошибку, которую можно перехватить обычным On Error — например, чтоб сообщить юзеру, где он должен взять недостающую длл`ку Аналогично и в случае с new |
|
VisualProg |
|
|
Цитата Змей @ 27.04.09, 20:17 перехватить обычным On Error
Блин! |
B.V. |
|
|
Цитата VisualProg @ 28.04.09, 08:24 «On Error» оказывается не просто НЕ частью Commondialog, это вообще самостоятельная функция Я тебя еще больше удивлю — On Error не функция, это конструкция языка. |
Da$aD |
|
|
VisualProg, если ты не заметил, «On Error» по дефолту синеньким выделяется) |
|
Змей |
|
|
Цитата ANDLL @ 27.04.09, 20:40 Аналогично и в случае с new не совсем. Если библиотека подключена к проекту через References — запуск программы в системе, где эта библиотека не установлена, вызовет неустранимую ошибку СРАЗУ, ещё до начала выполнения кода программы. например, так:
Private useCAPI As Boolean ‘переменная уровня модуля Private Sub Class_Initialize() On Error Resume Next Set cao = CreateObject(«CAPICOM.Utilities») If cao Is Nothing Then ‘библиотека микрософт криптоАПИ не установлена, будем юзать медленные самодельные функции. useCAPI = False Else ‘всё нормально, можно юзать криптоАПИ. useCAPI = True End If End Sub или так:
Private Sub Class_Initialize() On Error GoTo errh Set fso = CreateObject(«Scripting.FileSystemObject») Set shl = CreateObject(«Shell.application») Set wsc = CreateObject(«WScript.Shell») Exit Sub errh: MsgBox «Не удалось подключить одну из системных библиотек. Ваша система повреждена или не соответствует требованиям программы.» End End Sub |
|
nash |
|
|
Цитата Змей @ 29.04.09, 11:28 Если библиотека подключена к проекту через References — запуск программы в системе, где эта библиотека не установлена, вызовет неустранимую ошибку СРАЗУ, ещё до начала выполнения кода программы. офигеть какие новости. |
|
Змей |
|
|
nash, иди нафиг M Кстати, nash, я обязан обратить ваше внимание на тот факт, что своим постом #11 вы грубо нарушаете Правила, п.5 |
|
nash |
|
|
Цитата Змей @ 29.04.09, 13:31 кому это и правда новость да потому что это не новость, а фигня (неправда). |
|
Змей |
|
|
. Добавлено 29.04.09, 15:01 Цитата nash @ 29.04.09, 14:21 неправда дааа??? батенька, в своём стремлении доказать кому-то свою крутизну вы уже совсем заврались. Если программа скомпилирована с заявленной в References библиотекой, то на машине, где этой библиотеки нет, она не запустится СОВСЕМ. nash, у меня и раньше были сомнения в вашей компетентности, но теперь вы их окончательно развеяли. Теперь я знаю точно: Вы некомпетентны. сорри за оффтоп. |
B.V. |
|
|
Цитата nash @ 29.04.09, 14:21 да потому что это не новость, а фигня (неправда). Эх, моя невнимательность. Мне чего-то показалось, что речь идет о Components. Хотя, и в этом случае, теоретически, можно выйти из положения, установив стартовой Sub Main. Цитата Змей @ 29.04.09, 14:46 злостный оффтоп, п5, плюс личная переписка, п9. Злостный оффтоп пошел от тебя, как и личная переписка. nash высказался по теме, и он прав |
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- Visual Basic: Общие вопросы
- Следующая тема
[ Script execution time: 0,0416 ] [ 16 queries used ] [ Generated: 28.01.23, 18:34 GMT ]
Вопрос:
Есть ли что-то, что мне нужно для ссылки? Как это использовать:
Dim fso As New FileSystemObject
Dim fld As Folder
Dim ts As TextStream
Я получаю сообщение об ошибке, потому что он не распознает эти объекты.
Лучший ответ:
В Excel вам нужно установить ссылку на библиотеку времени исполнения VB. Соответствующий файл обычно находится в папке WindowsSystem32scrrun.dll
- Чтобы ссылаться на этот файл, загрузите редактор Visual Basic (ALT + F11)
- Выберите “Инструменты”> “Ссылки” в раскрывающемся меню
- Появится список доступных ссылок.
- Установите флажок рядом с ”
Microsoft Scripting Runtime“ - Полное имя и путь к файлу
scrrun.dllбудут отображаться под списком - Нажмите кнопку OK.
Это также можно сделать непосредственно в коде, если включен доступ к объектной модели VBA.
Доступ можно включить, отметив флажок Trust access to the VBA project object model найденному в меню “Файл”> “Параметры”> “Центр доверия”> “Настройки центра доверия”> “Параметры макроса”

Чтобы добавить ссылку:
Sub Add_Reference()
Application.VBE.ActiveVBProject.References.AddFromFile "C:WindowsSystem32scrrun.dll"
'Add a reference
End Sub
Чтобы удалить ссылку:
Sub Remove_Reference()
Dim oReference As Object
Set oReference = Application.VBE.ActiveVBProject.References.Item("Scripting")
Application.VBE.ActiveVBProject.References.Remove oReference
'Remove a reference
End Sub
Ответ №1
У этих ребят есть отличные примеры использования объекта файловой системы http://www.w3schools.com/asp/asp_ref_filesystem.asp
<%
dim fs,fname
set fs=Server.CreateObject("Scripting.FileSystemObject")
set fname=fs.CreateTextFile("c:test.txt",true)
fname.WriteLine("Hello World!")
fname.Close
set fname=nothing
set fs=nothing
%>
Ответ №2
В excel 2013 строка создания объекта:
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
вместо кода в ответе выше:
Dim fs,fname
Set fs=Server.CreateObject("Scripting.FileSystemObject")
Ответ №3
После добавления ссылки мне пришлось использовать
Dim fso As New Scripting.FileSystemObject
Ответ №4
После импорта сценария выполнения, как описано выше, вы должны внести некоторые незначительные изменения, чтобы заставить его работать в Excel 2010 (моя версия). В следующий код я также добавляю код, используемый пользователю для выбора файла.
Dim intChoice As Integer
Dim strPath As String
' Select one file
Application.FileDialog(msoFileDialogOpen).AllowMultiSelect = False
' Show the selection window
intChoice = Application.FileDialog(msoFileDialogOpen).Show
' Get back the user option
If intChoice <> 0 Then
strPath = Application.FileDialog(msoFileDialogOpen).SelectedItems(1)
Else
Exit Sub
End If
Dim FSO As New Scripting.FileSystemObject
Dim fsoStream As Scripting.TextStream
Dim strLine As String
Set fsoStream = FSO.OpenTextFile(strPath)
Do Until fsoStream.AtEndOfStream = True
strLine = fsoStream.ReadLine
' ... do your work ...
Loop
fsoStream.Close
Set FSO = Nothing
Надеюсь, это поможет!
С наилучшими пожеланиями
Fabio

Сообщение было отмечено DO_oK как решение




Я не для тебя говорю, а для тех, кому это и правда новость. И таких людей немало.