Страницы: 1
RSS
Ошибка 1004 при попытке выполнить ActiveWorkbook.SaveAs, если используется переменная папки.
 

Здравствуйте уважаемые форумчане!

столкнулся с проблемой (глюком) в обоих нижеприведенных макросах. Думаю причина одна, но никак не могу понять что именно.

Итак макрос 1  создает в целевой папке (/2019)  новую папку и конкретным именем (значение из ячейки b3) и сохраняет в нее книгу с именем (данные из ячейки b4).

Раньше все работало. Сейчас выдает ошибку (1004) на строке   ActiveWorkbook.SaveAs FileName:=vFile, FileFormat:=xlExcel12. Если из процедуры убрать переменную новой папки, то все работает хорошо. Мое мнение что это связано с буфером переменной (новой папки).

Код
 Sub SaveAsO()
    Const strRootFolder As String = "E:\Работа\2019\"
    Dim zName As String, zAdress As String, vFile As String
    zName = Replace_symbols(ActiveWorkbook.Sheets("dannye").Range("b3").Value)  'имя папки
    zAdress = Replace_symbols(ActiveWorkbook.Sheets("dannye").Range("b4").Value)  'имя файла (адрес)
    ' если папка есть, то пропуск, если нет, то создаем 
    If Dir(strRootFolder & zName, vbDirectory) = "" Then
        MkDir strRootFolder & zName
    End If
   
    vFile = strRootFolder & zName & "\" & zAdress & ".xlsb" 'имя и путь файла
    ' сохраняем
   ' On Error Resume Next
    ActiveWorkbook.SaveAs FileName:=vFile, FileFormat:=xlExcel12
End Sub

Макрос 2 транслитерация формул. Раньше работало хорошо, сейчас выдает след.текст: "??"

Код
Sub ForTran() 'перевод формул РУС-ENG
With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}"): .SetText ActiveCell.Formula: .PutInClipboard: End With
'MsgBox ActiveCell.Formula & vbCrLf & _
'"" & "Перевод помещён в буфер обмена", , "Formula Translate"
End Sub

На других компьютерах все работает. Подскажите куда копать, где что можно почистить?

 
Цитата
CRAFT написал: Мое мнение что это связано с буфером переменной (новой папки).
А если нет?
Название темы дожно отражать проблему, а не Вашу догадку (возожно, ошибочную) . Предложите новое название. Модераторы заменят
 
Новая тема: Ошибка макросов, возникающая только на одном компьютере, и работающая на других.
 
Плохой вариант. Изменил на свой - так ведь более информативно?
 
Макрос 1
Сотрите, что у Вас в переменной vFile в момент ошибки.
Может быть что-то типа задвоенного слэша или другие, недопустимые для пути данные
Макрос 2
Что-то с кодировкаой
Согласие есть продукт при полном непротивлении сторон
 
Это не влияет на код, но Const strRootFolder As String = "E:\Работа\2019\"   Выделенное не имеет смысла, так как это не переменная и константа по сути не имеет типа. Точнее это всегда строка, которая просто заменяется в коде при компиляции.
Касаемо вопроса поддержуSanja, при этом и первая и вторая беда может быть вызвана проблемой кодировки.
По вопросам из тем форума, личку не читаю.
 
Sanja, значение vFile в момент ошибки нормальное (а при удалении из пути переменной создаваемой папки, макрос  полностью выполняется),

БМВ, Раньше макросы работали как и должны (код рабочий) (1 макрос отработал нормально 2 дня с момента создания  в начале этой недели, 2 макрос перестал работать более 2х месяцев назад), и на другом компьютере работают.

Если рассмотреть вопрос, что проблема у обоих макросов общая, есть еще идеи, почему они перестали работать?

Заранее спасибо.
 
Цитата
БМВ написал:
при этом и первая и вторая беда может быть вызвана проблемой кодировки
имеется в виду не код макроса, а кодовая страница системы. Что в настройках систем для NonUnicode?
Изменено: БМВ - 17.07.2019 20:07:43
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
имеется в виду не код макроса, а кодовая страница системы.
Понятно,

Цитата
БМВ написал:
Что в настройках систем для NonUnicode?
Подскажите где можно посмотреть данную настройку?  
 
поищите типа этого https://answers.microsoft.com/ru-ru/windows/forum/all/%D1%81%D0%BC%D0%B5%D0%BD%D0%B0/e37b9311­-6f56-46a0-886c-a2d48d2a72e5
По вопросам из тем форума, личку не читаю.
 
БМВ, спасибо, просветили!

значение стоит Русский(Россия).  На всякий случай переустановил настройку на Русский(Россия), Работа макросов без изменений.
 
Введите в активную ячейку формулу:
Код
=ДАТА(2019;10;11)

Выполните макрос 2. Откройте программу Блокнот, нажмите Shift+Insert и выложите результат в сообщении.
Владимир
 
sokol92, в блокнот ничего не вставляется
в код VBA если произвести вставку, то ??
 
Если в блокнот ничего не вставляется, значит Activecell.Formula не попала в буфер обмена (а должна). Это не проблемы с кодировками (в свойстве Formula латынь). Боюсь, дистанционно болезнь не вылечишь. Для начала можно переустановить офис (если другие приложения Windows работают нормально).
Владимир
 
Может Пунто шалит, может еще кто.
Несколько лет назад обсуждалось очень оживленно.
 
sokol92,  в буфер обмена Office попал,  при вставке в ячейку копируются 2 квадрата, если вставлять из буфера обмена  (нажатием) то вставляется норм.
Скрытый текст
Изменено: CRAFT - 17.07.2019 21:41:14
 
RAN, Punto Switcher отключил! Не помогло
 
После танцев с бубном, а также, отключением всех программ в трее, приостановлении работы антивируса и т.д., Макрос 2 после двухмесячного отпуска заработал! после перезагрузки системы работоспособность макроса сохранилась.

Макрос 1 работать не хочет (из этого делаю вывод что причины наверно разные).
 
Цитата
CRAFT написал: Мое мнение что это связано с буфером переменной (новой папки)...
...
из этого делаю вывод что причины наверно разные
:)
Эксперименты с тараканом (обществу охраны животных и всякой живности - не я проводил научные исследовния)
Пустил. Крикнул. Таракан побежал.
Оторвал средние лапы. Пустил. Крикнул. Таракан побежал.
Оторвал задние лапы. Пустил. Крикнул. Таракан побежал.
Оторвал передне лапы. Пустил. Крикнул. Таракан не побежал.
Вывод: уши у таракана находятся в передних лапах
 
Макрос 1 тоже заработал. Причиной явилась ошибка в макросе, при которой новая папка создавалась из конкатенации двух ячеек (имя и город).
Если ячейка город была пуста, то папка создавалась из значения ячейки b3 и ПРОБЕЛА, но файл в нее почему-то не записывался. Плохо протестировал код, и в примере привел не полностью. отсюда и ошибки.
Код
zName = Replace_symbols(ActiveWorkbook.Sheets("dannye").Range("b3").Value & " " & ActiveWorkbook.Sheets("dannye").Range("e3").Value)  'имя папки и город

Прошу прощения за потерю времени, за нахождении несуществующей ошибки и благодарю всех откликнувшихся.

Изменено: CRAFT - 17.07.2019 22:39:10
Страницы: 1
Наверх