Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Удалить макросы макросом и отправить "пустой" файл - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Удалить макросы макросом и отправить "пустой" файл (Макросы/Sub)
Удалить макросы макросом и отправить "пустой" файл
pabchek Дата: Понедельник, 16.05.2016, 11:30 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 645
Репутация: 145 ±
Замечаний: 0% ±

Excel 2007
Здравствуйте, все!
Никак не могу справиться с логикой алгоритма. Есть два макроса. В первом прописано удаление макросов. Во втором запускается "удалялка". Общая задача: отправить письмо с файлом без макросов. Если файл сохранить не отправляя - все нормально - макросы удалены. Однако, по коду из примера открывается окно отправления почты и, если отправить сразу, то уходит с макросами. Подскажете?
[vba]
Код
Sub Delete_VBA()
    Dim oVB As Object
    For Each oVB In ActiveWorkbook.VBProject.VBComponents
        On Error Resume Next
        With oVB
            If .Type = 1 Or .Type = 2 Or .Type = 3 Then .Collection.Remove oVB
            If .Type = 100 Then .CodeModule.DeleteLines 1, .CodeModule.CountOfLines
        End With
    Next
    Set oVB = Nothing
End Sub
Sub Выбор()
    имя_файла = Range("A1")
    Application.DisplayAlerts = False
        Delete_VBA
        ActiveWorkbook.SaveAs "D:\ППАА\Еженедельное обновление\" & _
            Left(Date, 2) & "-" & Mid(Date, 4, 2) & "_Статистика(" & имя_файла & ").xlsb", FileFormat:=xlExcel12
    Application.DisplayAlerts = True
    Application.Dialogs(xlDialogSendMail).Show
End Sub
[/vba]
К сообщению приложен файл: 3664760.xlsb(17Kb)


"Учиться, учиться и еще раз учиться!"
WM: R399923528092


Сообщение отредактировал pabchek - Понедельник, 16.05.2016, 11:37
 
Ответить
СообщениеЗдравствуйте, все!
Никак не могу справиться с логикой алгоритма. Есть два макроса. В первом прописано удаление макросов. Во втором запускается "удалялка". Общая задача: отправить письмо с файлом без макросов. Если файл сохранить не отправляя - все нормально - макросы удалены. Однако, по коду из примера открывается окно отправления почты и, если отправить сразу, то уходит с макросами. Подскажете?
[vba]
Код
Sub Delete_VBA()
    Dim oVB As Object
    For Each oVB In ActiveWorkbook.VBProject.VBComponents
        On Error Resume Next
        With oVB
            If .Type = 1 Or .Type = 2 Or .Type = 3 Then .Collection.Remove oVB
            If .Type = 100 Then .CodeModule.DeleteLines 1, .CodeModule.CountOfLines
        End With
    Next
    Set oVB = Nothing
End Sub
Sub Выбор()
    имя_файла = Range("A1")
    Application.DisplayAlerts = False
        Delete_VBA
        ActiveWorkbook.SaveAs "D:\ППАА\Еженедельное обновление\" & _
            Left(Date, 2) & "-" & Mid(Date, 4, 2) & "_Статистика(" & имя_файла & ").xlsb", FileFormat:=xlExcel12
    Application.DisplayAlerts = True
    Application.Dialogs(xlDialogSendMail).Show
End Sub
[/vba]

Автор - pabchek
Дата добавления - 16.05.2016 в 11:30
_Boroda_ Дата: Понедельник, 16.05.2016, 12:04 | Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 9375
Репутация: 3948 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
У меня на работе отправка через не скажу какое место, поэтому проверить не могу.

В качестве предположения - а что будет, если сохранять не в xlsb, а в xlsx? Если нужно именно в xlsb, то потом можно еще раз пересохранить. Кстати, тогда и макросы удалять не нужно - они в xlsx просто не живут.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеУ меня на работе отправка через не скажу какое место, поэтому проверить не могу.

В качестве предположения - а что будет, если сохранять не в xlsb, а в xlsx? Если нужно именно в xlsb, то потом можно еще раз пересохранить. Кстати, тогда и макросы удалять не нужно - они в xlsx просто не живут.

Автор - _Boroda_
Дата добавления - 16.05.2016 в 12:04
pabchek Дата: Понедельник, 16.05.2016, 12:16 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 645
Репутация: 145 ±
Замечаний: 0% ±

Excel 2007
не в xlsb, а в xlsx
Чувствую идея правильная. Но, пока не могу реализовать. Убрал удалялку, пишу:
[vba]
Код
Sub Выбор()
    имя_файла = Range("A1")
    Application.DisplayAlerts = False
        'Delete_VBA
        ActiveWorkbook.SaveAs "D:\ППАА\Еженедельное обновление\" & _
            Left(Date, 2) & "-" & Mid(Date, 4, 2) & "_Статистика(" & имя_файла & ").xlsx", FileFormat:=xlExcel51
    Application.DisplayAlerts = True
    Application.Dialogs(xlDialogSendMail).Show
End Sub
[/vba]
Выдает ошибку 1004


"Учиться, учиться и еще раз учиться!"
WM: R399923528092
 
Ответить
Сообщение
не в xlsb, а в xlsx
Чувствую идея правильная. Но, пока не могу реализовать. Убрал удалялку, пишу:
[vba]
Код
Sub Выбор()
    имя_файла = Range("A1")
    Application.DisplayAlerts = False
        'Delete_VBA
        ActiveWorkbook.SaveAs "D:\ППАА\Еженедельное обновление\" & _
            Left(Date, 2) & "-" & Mid(Date, 4, 2) & "_Статистика(" & имя_файла & ").xlsx", FileFormat:=xlExcel51
    Application.DisplayAlerts = True
    Application.Dialogs(xlDialogSendMail).Show
End Sub
[/vba]
Выдает ошибку 1004

Автор - pabchek
Дата добавления - 16.05.2016 в 12:16
pabchek Дата: Понедельник, 16.05.2016, 12:57 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 645
Репутация: 145 ±
Замечаний: 0% ±

Excel 2007
Вроде получилось. Вместо
[vba]
Код
FileFormat:=xlExcel51
[/vba]
написал
[vba]
Код
FileFormat:=xlOpenXMLWorkbook
[/vba]


"Учиться, учиться и еще раз учиться!"
WM: R399923528092
 
Ответить
СообщениеВроде получилось. Вместо
[vba]
Код
FileFormat:=xlExcel51
[/vba]
написал
[vba]
Код
FileFormat:=xlOpenXMLWorkbook
[/vba]

Автор - pabchek
Дата добавления - 16.05.2016 в 12:57
_Boroda_ Дата: Понедельник, 16.05.2016, 12:58 | Сообщение № 5
Группа: Модераторы
Ранг: Экселист
Сообщений: 9375
Репутация: 3948 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Да, вот только хотел написать


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеДа, вот только хотел написать

Автор - _Boroda_
Дата добавления - 16.05.2016 в 12:58
pabchek Дата: Понедельник, 16.05.2016, 13:00 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 645
Репутация: 145 ±
Замечаний: 0% ±

Excel 2007
А почему
Цитата
FileFormat:=xlExcel51
не работает? Вроде стандартная процедура


"Учиться, учиться и еще раз учиться!"
WM: R399923528092


Сообщение отредактировал pabchek - Понедельник, 16.05.2016, 13:00
 
Ответить
СообщениеА почему
Цитата
FileFormat:=xlExcel51
не работает? Вроде стандартная процедура

Автор - pabchek
Дата добавления - 16.05.2016 в 13:00
Manyasha Дата: Понедельник, 16.05.2016, 14:15 | Сообщение № 7
Группа: Модераторы
Ранг: Старожил
Сообщений: 1589
Репутация: 669 ±
Замечаний: 0% ±

Excel 2007, 2010
Виктор, такой константы нет :)
Проверить можно так: в редакторе VBA View - object browser - в окошко для поиска ввести xlExcel51. Ничего не будет найдено.
А чтобы посмотреть все форматы, можно ввести XlFileFormat

51 - это числовое значение константы xlOpenXMLWorkbook, Вы наверное хотели так написать:
[vba]
Код
FileFormat:=51
[/vba]


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеВиктор, такой константы нет :)
Проверить можно так: в редакторе VBA View - object browser - в окошко для поиска ввести xlExcel51. Ничего не будет найдено.
А чтобы посмотреть все форматы, можно ввести XlFileFormat

51 - это числовое значение константы xlOpenXMLWorkbook, Вы наверное хотели так написать:
[vba]
Код
FileFormat:=51
[/vba]

Автор - Manyasha
Дата добавления - 16.05.2016 в 14:15
pabchek Дата: Понедельник, 16.05.2016, 14:20 | Сообщение № 8
Группа: Проверенные
Ранг: Ветеран
Сообщений: 645
Репутация: 145 ±
Замечаний: 0% ±

Excel 2007
Вы наверное хотели так написать
Наверно хотел, потому, что работает.
[offtop]Как в том анекдоте: ... хочу ли я? могу ли я? ... :)[/offtop]


"Учиться, учиться и еще раз учиться!"
WM: R399923528092
 
Ответить
Сообщение
Вы наверное хотели так написать
Наверно хотел, потому, что работает.
[offtop]Как в том анекдоте: ... хочу ли я? могу ли я? ... :)[/offtop]

Автор - pabchek
Дата добавления - 16.05.2016 в 14:20
_Boroda_ Дата: Понедельник, 16.05.2016, 14:21 | Сообщение № 9
Группа: Модераторы
Ранг: Экселист
Сообщений: 9375
Репутация: 3948 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
[vba]
Код
FileFormat:=51
[/vba] :D

Опять не успел %)
Вот ссылка на номера
https://msdn.microsoft.com/en-us/library/office/ff198017.aspx


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение[vba]
Код
FileFormat:=51
[/vba] :D

Опять не успел %)
Вот ссылка на номера
https://msdn.microsoft.com/en-us/library/office/ff198017.aspx

Автор - _Boroda_
Дата добавления - 16.05.2016 в 14:21
pabchek Дата: Понедельник, 16.05.2016, 14:27 | Сообщение № 10
Группа: Проверенные
Ранг: Ветеран
Сообщений: 645
Репутация: 145 ±
Замечаний: 0% ±

Excel 2007
ссылка на номера
Спасибо! А я не смог найти такой полной ссылки
все форматы, можно ввести XlFileFormat

ну а это вообще всегда "под рукой"))) [offtop]Учиться, учиться и учиться![/offtop]


"Учиться, учиться и еще раз учиться!"
WM: R399923528092


Сообщение отредактировал pabchek - Понедельник, 16.05.2016, 14:41
 
Ответить
Сообщение
ссылка на номера
Спасибо! А я не смог найти такой полной ссылки
все форматы, можно ввести XlFileFormat

ну а это вообще всегда "под рукой"))) [offtop]Учиться, учиться и учиться![/offtop]

Автор - pabchek
Дата добавления - 16.05.2016 в 14:27
_Boroda_ Дата: Среда, 18.05.2016, 11:48 | Сообщение № 11
Группа: Модераторы
Ранг: Экселист
Сообщений: 9375
Репутация: 3948 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Забыл дописать позавчера
А я не смог найти такой полной ссылки

Там все просто - вот в коде макроса есть строка
[vba]
Код
ActiveWorkbook.SaveAs "D:\ППАА\Еженедельное обновление\" & _
[/vba], в ней встаешь мышой вовнутрь слова SaveAs (или даблклик на него - оно выделится) и жмешь F1. Вылетаешь в объяснялку по SaveAs, вот сюда https://msdn.microsoft.com/en-us....5).aspx
Там есть табличка с параметрами и пояснениями к ним. В пояснении к параметру FileFormat есть ссылка, топаешь на нее и попадаешь в объяснялку по FileFormat.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЗабыл дописать позавчера
А я не смог найти такой полной ссылки

Там все просто - вот в коде макроса есть строка
[vba]
Код
ActiveWorkbook.SaveAs "D:\ППАА\Еженедельное обновление\" & _
[/vba], в ней встаешь мышой вовнутрь слова SaveAs (или даблклик на него - оно выделится) и жмешь F1. Вылетаешь в объяснялку по SaveAs, вот сюда https://msdn.microsoft.com/en-us....5).aspx
Там есть табличка с параметрами и пояснениями к ним. В пояснении к параметру FileFormat есть ссылка, топаешь на нее и попадаешь в объяснялку по FileFormat.

Автор - _Boroda_
Дата добавления - 18.05.2016 в 11:48
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Удалить макросы макросом и отправить "пустой" файл (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2016 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!