| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA. Ошибка "run-time error '53': file not found", в чём может быть причина.

VBA. Ошибка "run-time error '53': file not found", в чём может быть причина.

Ответ
Поиск в этой теме
Непрочитано 27.07.2017, 16:28 #1
VBA. Ошибка "run-time error '53': file not found", в чём может быть причина.
Jeneva
 
Регистрация: 21.06.2017
Сообщений: 10

Добрый день.
Есть код VBA (вставка динамического блока), работает на трёх компах, а на четвертом он же выдаёт ошибку "run-time error '53': file not found". Ниже приведён отрывок кода с выделенной красным цветом строкой, которую vba подчёркивает как ошибку. Может кто знает, в чём причина не работы кода на одной из машин? (Я в VBA не силён).

Sub Bon()
Dim returnObj As AcadObject
Dim InPoint As Variant
Dim varAttributes As Variant
Dim blockObj As AcadBlockReference
Dim strAttributes As String
Dim Len1S As String
Dim Len2S As String

'On Error Resume Next
FullPathZ
Open PathZ + "Nadpisi.txt" For Input As #1
Do While Not EOF(1)
Line Input #1, inputdata
If inputdata <> "" Then
UserForm12.ComboBox1.AddItem inputdata
UserForm12.ComboBox2.AddItem inputdata
UserForm12.ComboBox3.AddItem inputdata
End If
Loop
Close #1
.....................
Просмотров: 13664
 
Непрочитано 27.07.2017, 18:13
#2
maratovich


 
Регистрация: 12.07.2009
г. Самара
Сообщений: 2,481
Отправить сообщение для maratovich с помощью Skype™


Дык пишет же
file not found
файл не найден.
что такое PathZ ? И с какого перепуга там "+" ? вы текстовую строку суммировать собрались ? используйте "&"
__________________
Вопрос : Где находится Тургай ? Ответ : Между Парагваем и Уругваем.....
maratovich вне форума  
 
Непрочитано 27.07.2017, 19:10
#3
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,832


maratovich, насколько я помню, в VBA для строк вполне корректно срабатывает и +, и &.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 27.07.2017, 21:38
#4
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,036


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
в VBA для строк вполне корректно срабатывает и +, и &.
да, без разницы.

Цитата:
Сообщение от Jeneva Посмотреть сообщение
Open PathZ + "Nadpisi.txt" For Input As #1
Делаете еще одну переменную строковую, там собираете имя файла и либо просматриваете в отладчике пошагово, либо просто временно вставьте MsgBox. И смотрите результирующее имя файла. И есть ли он на компе вообще. И есть ли права на чтение хотя бы на эту папку.

p.s. Лучше не полагаться, что файл №1 свободный, а использовать:
Код:
[Выделить все]
Dim lNumFile As Integer
lNumFile = FreeFile()
и далее вместо #1 использовать #lNumFile
Сергей812 вне форума  
 
Непрочитано 28.07.2017, 07:48
#5
baksconstructor


 
Регистрация: 05.11.2014
Сообщений: 978


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
насколько я помню, в VBA для строк вполне корректно срабатывает и +, и &.
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
да, без разницы.
Как в том анекдоте.... "Ну да конечно" !
А теперь смотрим и видим что первая часть объявлена как String, а вторая как Long, а между ними стоит"+". И чё мы получим ?
baksconstructor вне форума  
 
Непрочитано 28.07.2017, 07:54
#6
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,832


Цитата:
Сообщение от baksconstructor Посмотреть сообщение
А теперь смотрим и видим что первая часть объявлена как String, а вторая как Long
Наверное, с утра пораньше я слепой, но я этого не вижу.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 28.07.2017, 07:56
#7
baksconstructor


 
Регистрация: 05.11.2014
Сообщений: 978


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Наверное, с утра пораньше я слепой, но я этого не вижу.
Не конкретно в этом примере, а вообще, это должно быть правилом т.к. неизвестно в каком месте это будет применяться.
baksconstructor вне форума  
 
Непрочитано 28.07.2017, 09:30
#8
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,036


Цитата:
Сообщение от baksconstructor Посмотреть сообщение
Не конкретно в этом примере, а вообще, это должно быть правилом т.к. неизвестно в каком месте это будет применяться.
Прежде чем "удивлять" окружающих своими знаниями - попробовали бы на практике) При попытке осуществления сложения строки и числа при первом же прогоне вылетит ошибка: несоответствие типов.
Сергей812 вне форума  
 
Непрочитано 28.07.2017, 09:40
#9
baksconstructor


 
Регистрация: 05.11.2014
Сообщений: 978


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
При попытке осуществления сложения строки и числа при первом же прогоне вылетит ошибка: несоответствие типов.
Посмотрите первый пост автора, он не знает что такое "file not found", а несоответствие типов приведёт его в полный ступор.
baksconstructor вне форума  
 
Непрочитано 28.07.2017, 09:47
#10
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,036


Цитата:
Сообщение от baksconstructor Посмотреть сообщение
Посмотрите первый пост автора, он не знает что такое "file not found", а несоответствие типов приведёт его в полный ступор.
Во первых, отучайтесь думать и решать за других людей) Во вторых, вы придумали какое свое понятие-правило, что пользоваться исключительно амперсандом для объединения строк, а это является лишь рекомендацией. И выдуманная ситуация про сложение строки и числа отловится при первом же запуске приложения. Т.е. даже новичку-программисту не дадут сделать такую ошибку.
Сергей812 вне форума  
 
Автор темы   Непрочитано 28.07.2017, 11:45
#11
Jeneva


 
Регистрация: 21.06.2017
Сообщений: 10


Всем спасибо за советы!
Действительно был не правильно указан путь к PathZ, перепрописал верный путь и заработало.
Про несоответствие типов в ступор не привело, мат часть я читал) общие понятия есть, теперь практикой креплю, с этим возникают проблемы, особенно когда код написан человеком, который уже уволился)
Jeneva вне форума  
 
Непрочитано 28.07.2017, 11:57
#12
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,036


Лучше такие вещи типа путей хранить во внешнем текстовом файле (для VBA) - переписывать код под конкретные машины - не самая хорошая идея, имхо)
Сергей812 вне форума  
 
Непрочитано 28.07.2017, 16:08
#13
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


Конкатенация строк... меня больше оператор Open покорежил (пережиток ДОСовских времен), неужели нельзя нормально сделать?
С проверками и прочими плюшками.
Код:
[Выделить все]
Sub fileRead(ByVal FilePathAndName As String)
    Const OpenFileForReading = 1
    Const OpenFileForWriting = 2
    Const OpenFileForAppending = 8
    Const vbSplitAll = -1
     

    Dim FSO As FileSystemObject
    Dim TextStream As TextStream
    Dim S As String
    Dim FileLines() As String
    Dim FSOFile As File
    
    Set FSO = CreateObject("Scripting.FileSystemObject")
    If FSO.FileExists(FilePathAndName) Then
        Set FSOFile = FSO.GetFile(FilePathAndName)
        Set TextStream = FSOFile.OpenAsTextStream(OpenFileForReading)
        Do While Not TextStream.AtEndOfStream
            S = S & TextStream.ReadLine & vbNewLine
        Loop
        TextStream.Close
        FileLines = Split(S, vbNewLine, vbSplitAll, vbTextCompare)
    Else
        MsgBox ("Ошибка. Файл " & FilePathAndNam & "недоступен.")
    End If
End Sub
Boxa вне форума  
 
Непрочитано 28.07.2017, 16:31
#14
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,036


Ну Open - стандартная конструкция языка VBA) Больше тогда уж UserForm12 вызывает дисгармонию - т.е., если человек не удалял пользовательские формы из проекта VBA Акада, то как минимум - еще одиннадцать пользовательских форм с названиями по умолчанию и на каждой из них энное количество контролов с названиями по умолчанию может быть. Тут уже не до Windows Script Host... Но работает же)
Сергей812 вне форума  
 
Автор темы   Непрочитано 28.07.2017, 16:51
#15
Jeneva


 
Регистрация: 21.06.2017
Сообщений: 10


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Ну Open - стандартная конструкция языка VBA) Больше тогда уж UserForm12 вызывает дисгармонию - т.е., если человек не удалял пользовательские формы из проекта VBA Акада, то как минимум - еще одиннадцать пользовательских форм с названиями по умолчанию и на каждой из них энное количество контролов с названиями по умолчанию может быть. Тут уже не до Windows Script Host... Но работает же)
Там всего 16 форм и километровый код, под который создано 16 кнопок в AutoCad с вставкой динам блоков, изменение, копированием, сохранением, редактированием и тэ дэ.
Я вырвал кусок, в котором выдавало ошибку....
Jeneva вне форума  
 
Непрочитано 28.07.2017, 17:02
#16
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,036


Цитата:
Сообщение от Jeneva Посмотреть сообщение
Там всего 16 форм и километровый код, под который создано 16 кнопок в AutoCad с вставкой динам блоков, изменение, копированием, сохранением, редактированием и тэ дэ.
такие вещи проще переписать заново порою, чем поддерживать)
Сергей812 вне форума  
 
Непрочитано 28.07.2017, 18:09
#17
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,407
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Boxa Посмотреть сообщение
меня больше оператор Open покорежил (пережиток ДОСовских времен), неужели нельзя нормально сделать?
Цитата:
Сообщение от Boxa Посмотреть сообщение
Set FSO = CreateObject("Scripting.FileSystemObject")
Это для домашнего компьютера допустимо. А вот офисе сисадмин запросто может (и должен) запретить Scripting. Так что ...
Александр Ривилис вне форума  
 
Непрочитано 28.07.2017, 19:08
#18
CalcProg


 
Регистрация: 02.10.2016
Сообщений: 205


http://www.firststeps.ru/vba/excel/r.php?16
- уроки для начинающих.

анализ ошибки: 1)удостоверится, что такой файл в указанном месте существует, 2) что файл не косячный, 3)правильность задания местоположения файла FullPathZ.
CalcProg вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA. Ошибка "run-time error '53': file not found", в чём может быть причина.

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какой максимальный катет может быть у сварного шва Т3 прикрепления пластины в тавр к пластине? МишаИнженер Поиск литературы, чертежей, моделей и прочих материалов 32 09.11.2022 13:53
Продольная рабочая арматура в "холодном (рабочем) шве" - во благо ли это? А может быть это блажь? Тиберий Железобетонные конструкции 8 01.11.2014 18:51
Может ли быть трехслойная кладка на гибких и жестких связях одновременно? Aragorn Конструкции зданий и сооружений 2 16.06.2014 12:00
Относительный путь не может быть назначен для внешней ссылки DWG Zets AutoCAD 7 20.04.2013 15:05
Быть может куда-то надо ввести какой-то коэффициент? psik AutoCAD 1 16.01.2007 02:32