Страницы: 1
RSS
После переноса макроса с Виндовса на Mac - он перестал выполняться.
 
День добрый.
Не разбираюсь в программировании, поэтому обращаюсь ко всем знающим и умеющим с просьбой помощи.

Ранее пользовался макросом на виндовсе - все работало.
Решил запустить его в этом же файле на Mac - ругается.

Помогите откорректировать, чтобы все работало на Mac.

Заранее благодарен за помощь.
Код
Sub save_awb_w_val()
    Application.ScreenUpdating = False
    Set book_to_copy = ActiveWorkbook
    With book_to_copy
        awbfname$ = .FullName ' имя текущей книги с полным путём к ней
        nwbname$ = Mid(awbfname$, 1, InStrRev(awbfname$, ".") - 1) ' полное имя файла без расширения
        nwbext$ = Mid(awbfname$, InStrRev(awbfname$, ".")) ' расширение
        dt$ = Format(Now, "-YYYY_MM_DD-Hh_Nn_Ss") ' текущая дата и время
        nwbfname$ = nwbname$ & dt$ & "-val" & nwbext$ ' полное имя нового файла
        If CreateObject("Scripting.FileSystemObject").FileExists(nwbfname$) Then ' проверка на существование текущей книги
            MsgBox "Копию книги сохранить не удалось, т.к. файл с таким именем:" & Chr(10) & nwbfname$ & Chr(10) & "уже существует."
        Else
            .SaveCopyAs nwbfname$ '  создание копии текущей книги с сохранением
            Set book_to_copy = Nothing ' освобождаем память
            Set new_book = GetObject(nwbfname$) ' переменная для обращения к копии книги
            With new_book
                For Each sh In .Worksheets ' цикл только по рабочим листам
                    sh.UsedRange.Value = sh.UsedRange.Value ' записываем в заполненную область _
                    каждого рабочего листа только значения
                Next sh
                Set sh = Nothing ' освобождаем память
                Windows(.Name).Visible = True ' делаем видимой копию книги
                .Save ' сохраняем
                .Close False ' закрываем (без вопросов на всякий случай)
            End With
            Set new_book = Nothing ' освобождаем память
            Workbooks.Open Filename:=nwbfname$ ' открываем копию для проверки - можно закомментировать
        End If
    End With
End Sub

 
Попробуйте заменить эти строки:
Код
If CreateObject("Scripting.FileSystemObject").FileExists(nwbfname$) Then ' проверка на существование текущей книги
            MsgBox "Копию книги сохранить не удалось, т.к. файл с таким именем:" & Chr(10) & nwbfname$ & Chr(10) & "уже существует."
        Else

На такие:
Код
If Dir(nwbfname$,16) Then ' проверка на существование текущей книги
            MsgBox "Копию книги сохранить не удалось, т.к. файл с таким именем:" & Chr(10) & nwbfname$ & Chr(10) & "уже существует."
        Else
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Спасибо за ответ.
Попробовал внести изменения.
Вот результат:
Скрытый текст
 
В приведенном коде нет строки 33. Их там всего 30. Как заменили? Точно заменили, а не добавили то, что я предложил?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Скрин ошибки
 
Ну это уже не ко мне. У Вас там произвольный текст, который должен быть закомментирован. Обратите внимание, как выглядят другие комментарии к коду - они зеленым цветом. И перед ними апостроф. Вот его и надо поставить перед текстом, который у Вас красным выделен.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Пробовал изменить - не работает.

Просьба: нужен макрос, который бы сохранял книгу, в которой много формул в книгу, только с данными и форматированием, но без формул.

Буду благодарен!  
 
Тьмоич, попробуйте вместо
Код
If CreateObject("Scripting.FileSystemObject").FileExists(nwbfname$) Then
написать
Код
If  Len(Dir("")) = 0  Then
ещё для надёжности можно перед этой строчкой добавить
Код
        awbp = .Path & Application.PathSeparator
        ChDir awbp
UPD. Нет, не то немного. Файл создаётся, но на наличие такого же не проверяет
Изменено: Pelena - 03.07.2015 17:07:14
 
Добрый день.
Пробовал откорректировать. Вот результат.
Picture 1
Picture 2
 
Вам надо было заменить то, что я предложил. Далее просто закомментировать строку, которая выделена красным(скрин из сообщения 5).
Len(Dir("")) - всегда будет равно нулю, т.к. в Dir строка пустая, никакой путь не указан.
А почему у Вас потом так все "покраснело" - трудно догадаться. Может скопировали откуда и лишние пробелы появились, которые VBA считает лишними символами.
Вы бы лучше файл с кодом выложили.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Сделал так как Вы сказали. Не помогло.
Бросаю файл.

Заранее благодарен за помощь.  
 
В своё время мы с одним из форумчан (Саня) два дня потратили, чтобы добиться работы Dir на МАКе, поэтому я и выложила этот вариант. Dir с аргументом в виде имени файла на МАКе не заработал, к сожалению

Вот мой работающий на МАКе файл
 
Благодарен за помощь.

Вот как у меня запускается файл:
Picture 3
Picture 4
Изменено: Тьмоич - 06.07.2015 19:51:51
 
Стоп. Я какой-то не тот файл приложила. Должно быть
Код
If Len(Dir("")) = 0 Then
А офис у Вас какой, у меня 2011 и выглядит немного по-другому

Посмотрите ещё Сервис -- Ссылки… Что у Вас там подключено?
Изменено: Pelena - 06.07.2015 20:18:47
 
У меня 2016... Работаю с mac не так давно - поэтому нашел последнюю версию офиса - и ею пользуюсь.  
 
У меня Ваш файл заработал только после удаления "лишних пробелов", как и предположил Дмитрий
Вот Ваш файл, который у меня работает
 
Цитата
Pelena написал:
Dir с аргументом в виде имени файла на МАКе не заработал
печально, не знал(MAC-ом не обладаю). Значит перед Dir надо что-то выполнить(вроде ChDir), чтобы Dir знала куда смотреть для проверки.

P.S. Поэтому для MAC почти не существует надстроек - при любом изменении в офисе все может полететь. Преемственность версий очень плохая.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Всем спасибо огромное за помощь.
Пришел к тому - что установил Parallels desktop и там установил Windows 8.1 )))

Сейчас буду пробовать настраивать. Если возникнут вопросы, я так понимаю, мне в другую ветку форума...

Еще раз огромное спасибо за помощь и уделенное время.  
Страницы: 1
Наверх