Страницы: 1 2 След.
RSS
Проблема совместимости версий Excel
 
Всем добрый день.
Помогите понять, что не так.
В 2010 Excel код отрабатывает как надо, а в 2007 - выдает ошибку: Run-time error '1004':
Method 'Open' of Object 'Workbook' failed
Причем в таком месте, что вообще непонятна причина. Возможно у кого-то будут мысли. Очень надеюсь на "Сторожил"!
Ошибка в строке 67: Set iTempWB = Application.Workbooks.Open(Filename:=sPath, ReadOnly:=True)
(код см. на 'Лист1'). Там только код - сам по себе работать не будет.
Изменено: Lock - 05.11.2013 14:20:42
Иногда только промахнувшись, понимаешь как ты попал.
 
Lock, правьте своё сообщение - пустые строки никому никакой информации не дают.
 
По вопросу не знаю, но мне в строках
Код
        sPath = MyPath + MyName
        Ext = CreateObject("Scripting.FileSystemObject").GetExtensionName(sPath)

не нравится плюс и то, что объект вероятно создаётся много раз подряд.
Плюс конечно по факту не влияет, но не нравится :)

Ещё - раз уж используете "Scripting.FileSystemObject", то может обойтись без Dir, делать перебор файлов тоже средствами FSO?
 
Сидеть и вылавливать глазами ошибки дело не очень занятное. Варианты есть: хотя бы сказать нам, что у Вас в переменной sPath. Есть ли на конце переменной MyPath слеш или его нет. Содержит ли MyName расширение или нет.
И обратная Hugo позиция - действительно ли так нужен FSO? Может стандартными средствами: Просмотреть все файлы в папке
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Очень надеюсь на "Сторожил"!
вообще не понимаю, как в целом грамотный человек может написать такое...  :(
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Это не принципиально, можно и стандартными средствами, но почему ошибка возникает потом? Она, мне кажется, не связана с FSO. (2007 SP3) - все это должен нормально воспринять.
Иногда только промахнувшись, понимаешь как ты попал.
 
Да, про "сторожил" забыл... А ведь когда-то и сторожил тоже :)
 
Lock, ну вот когда хотя бы скажете что у Вас содержат переменные sPath, MyPath и MyName - тогда может дело сдвинется.
А то Вы хотите, чтобы мы тут нерабочий код глазами потестили и сразу ошибку выдали. На вид нормально - но я задал ряд вопросов, которые меня интересуют, чтобы сделать хоть какой-то вывод.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Но все-равно, ради принципа, хотелось бы разобраться.
Отвечаю: sPath - в ней полный путьк файлу с названием файла и его расширением (String).
MyPath - в конце переменной слэш есть (String). MyName - в конце файла есть расширение. Надеюсь на дальнейший ход вашего диагностического поиска.
Иногда только промахнувшись, понимаешь как ты попал.
 
ikki, добрый день.

Может тоже посмотрите на мою проблему. В прошлый раз вы меня натолкнули на суперидею, которую удалось несколько развить. В любом случае, благодаря вам был достигнут желаемый результат.
Иногда только промахнувшись, понимаешь как ты попал.
 
Lock, к сожалению, не могу - у меня сейчас Excel 2003
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
А по WinAPI подсказку дадите?
В моем сегодняшнем другом посте - суть проблемы - на форме я отразил нужную мне иконку в заголовке, а код для изменения иконки application в заголовке не работает. Если не сложно посмотрите???
Иногда только промахнувшись, понимаешь как ты попал.
 
Hugo, а кто не сторожил. Все бывало. Здесь игра слов - Ста(о)рожил.)))
Иногда только промахнувшись, понимаешь как ты попал.
 
Может просто банально MISSING в референсах?
Или офис напрочь левый...
 
Опечатка вышла на самом деле. Прошу прощения!
Иногда только промахнувшись, понимаешь как ты попал.
 
Нет в Missing там, проверял. А офис, как ни странно - лицензия! Вот что и обидно.
Иногда только промахнувшись, понимаешь как ты попал.
 
Ясно. Файл открывается вообще? Или нет? Пробовали открыть его не кодом?
Возможно слишком много символов в полном пути файла.
Возможно файл поврежден(хотя в данном случае ошибка была бы другая, но все же)

Еще можно попробовать отказаться от обновления связей:
Код
Set iTempWB = Application.Workbooks.Open(Filename:=sPath, UpdateLinks:=False, ReadOnly:=True)

или вообще открыть с восстановлением:
Код
Set iTempWB = Application.Workbooks.Open(sPath, False, True, , , , , , , , , , , , 2)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Файл сам открывается - без vba. Попробую ваш совет. Спасибо.
Иногда только промахнувшись, понимаешь как ты попал.
 
Еще помню наступал на грабли при программном открытие файла - разные настройки проводника с отображением и скрытием расширений. В результате у меня работало, а у пользователя нет. На старом форуме писалось, искать лень.
 
Игорь, такая проблема есть, если в макросе указывать без расширения. Тогда если в настройках ОС установлено "скрывать расширения файлов" - работать будет. А если "не скрывать" - не будет.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
К сожалению на 2007 не сработали предложенные варианты.
Я попробовал по другому -
Excel.Application.Workbooks.Open sPath
Set iTempWB = ActiveWorkbook

Тоже не хочет.
Иногда только промахнувшись, понимаешь как ты попал.
 
Полностью переписал код - продолжает ругаться на Workbooks.Open MyPath & MyName
Причем на двух машинах сразу, где 2007 стоит. А на моем компе на 2007 работает нормально. Может какие-то разрешения не стоят в системе?

Кто-то может дать совет???
Иногда только промахнувшись, понимаешь как ты попал.
 
Другие макросы работают нормально?

Скопируйте сюда полный путь и имя файла, который без проблем открывается в Excel вручную.
И напишите также, чему для открытия этого файла равно (приведите конкретное текстовое значение): MyPath & MyName
 
У меня да. У человека, который запускал у себя не знаю. Только последний код не работает.
Путь, который отрываю вручную -
Код
C:\User\Manager6\Desktop\Тестирование\Итоги\Общие итоги\Общие итоги_2013.11.05_22-33-14.xlsx
MyPath = GetFolderPath("Choose Итоги folder...", ThisWorkbook.Path)
MyName = Dir(MyPath)
Function GetFolderPath(Optional ByVal Title As String = "Выберите папку", _
 Optional ByVal InitialPath As String = "c:\" ;)  As String
 Dim PS As String: PS = Application.PathSeparator
 With Application.FileDialog(msoFileDialogFolderPicker)
 If Not Right$(InitialPath, 1) = PS Then InitialPath = InitialPath & PS
 If Worksheets("Данные" ;) .Range("D13" ;) .Value = "Русский" Or Worksheets("Данные" ;) .Range("D13" ;) .Value = "" Then
 .ButtonName = "Выбрать": .Title = Title: .InitialFileName = InitialPath
 Else
 .ButtonName = "Select": .Title = Title: .InitialFileName = InitialPath
 End If
 If .Show <> -1 Then Exit Function
 GetFolderPath = .SelectedItems(1)
 If Not Right$(GetFolderPath, 1) = PS Then GetFolderPath = GetFolderPath & PS
 End With
End Function
Иногда только промахнувшись, понимаешь как ты попал.
 
На первом листе скопировал кусок кода - который просматривает все эксель файлы в вышеуказанной папке и копирует их на другой лист для сохранения в книгу.
На втором листе второй вариант кода - тоже не работает на 2007, но не у меня, а у другого человека.
Иногда только промахнувшись, понимаешь как ты попал.
 
Цитата
У меня да. У человека, который запускал у себя не знаю.
У него,а не у Вас,  в VBE-Tools-References нет чего-нибудь, начинающегося с MISSING?

Цитата
MyPath = GetFolderPath("Choose Итоги folder...", ThisWorkbook.Path)
MyName = Dir(MyPath)
Если в папке несколько файлов, то неизвестно какой из них попадет в MyName.
Например, там может быть файл 1.bmp , имя которого скорее всего и будет в MyName
 
В Tools-References MISSING's нет - это я сразу проверил.

А в указанной папке только excel - файлы. Других быть не может. Папка создается сама, файлы в нее выгружаются - только excel. Причина не в этом, я думаю. А какие варианты еще возможны?
Иногда только промахнувшись, понимаешь как ты попал.
 
Кстати, там есть проверка, на всякий случай, на не excel файлы, до присвоения имени просто не дойдет и процедура возобновится вновь, до последнего неоткрытого excel файла.
Иногда только промахнувшись, понимаешь как ты попал.
 
Цитата
Прикрепленные файлы: пример.xlsb
Вы же сами заметили, что код проверить не удастся - есть ссылки на какие-то ячейки, много лишнего, не относящегося к проблеме. Чтобы локализовать проблему предложите тому человеку протестировать код попроще, например:
Код
Sub Test1()
  Const File = "C:\Temp\Test.xls"
  If Dir(File) = "" Then
    MsgBox "Создайте и сохраните тестовый файл:" & vbLf & File
  Else
    Workbooks.Open File
  End If
End Sub
Изменено: ZVI - 07.11.2013 02:47:24
 
Я тоже об этом думал. Видимо самое простое - всегда самое правильное.
Иногда только промахнувшись, понимаешь как ты попал.
Страницы: 1 2 След.
Наверх