Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.08.2015, 15:33   #1
who
Пользователь
 
Регистрация: 11.09.2014
Сообщений: 44
По умолчанию Макрос "Сохранить как..."

в моей книге-расчёте есть кнопка
на неё повешен макрос:
Код:
Private Sub CommandButton35_Click()
Dim wb As Workbook, wbName, wbPath, today As String
 Set wb = Excel.Application.ActiveWorkbook
 wbName = Sheets(1).Cells(2, 2)
 today = Date
 ttime = Format(Time, "hh-mm")
 wbPath = wb.Path
 Sheets(1).Cells(3, 1) = wbPath & "\" & wbName & "_" & today & "_" & ttime & ".xlsm"
If Not Application.Dialogs(xlDialogSaveAs).Show(wbName & "_" & today & ".xlsm") Then
MsgBox "Сохранение отменено!", vbExclamation
End If
End Sub
раньше был комп win7 x32 и там всё отлично работало:
выдавалось диалоговое окно "Сохранить как..." и в случае нажатия "Отмена" выдавалось сообщение "Сохранение отменено!"
теперь комп поменяли стоит win8.1 x64 и данный макрос просто выдаёт сообщение "Сохранение отменено!" и ничего не сохраняется
может нужно куда подключить какие-нибудь дополнительные библиотеки?

PS: офис был и остался тот же MS Office 2007 из того же самого дистрибутива.
who вне форума Ответить с цитированием
Старый 27.08.2015, 01:34   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

вот в этом проблема:
Код:
today = Date
в переменную today запишется дата в том формате, который настроен в Windows

раньше был, например, формат даты в настройках windows такой: dd.mm.yyyy
и имя файла получалось корректное

а сейчас формат даты, например, такой (на новой винде): dd/mm/yyyy
имя файла получается некорректное (слеши недопустимы в имени файла) - потому и ошибка

попробуйте так:
Код:
Private Sub CommandButton35_Click()
    Dim wbName$, today$
    wbName = Sheets(1).Cells(2, 2)
    today = Format(Now, "dd.mm.yyyy_hh-nn") ' дата + время (кстати, минуты - это nn, а не mm)
    
    Sheets(1).Cells(3, 1) = ActiveWorkbook.Path & "\" & wbName & "_" & today & ".xlsm"
    
    If Not Application.Dialogs(xlDialogSaveAs).Show(wbName & "_" & today & ".xlsm") Then
        MsgBox "Сохранение отменено!", vbExclamation
    End If
End Sub
но вообще непонятно, зачем нужно диалоговое окно
может, надо просто сохранить копию файла с указанием даты и времени?
тогда это проще делается:

Код:
Private Sub CommandButton35_Click()
    ' создаем копию книги, с указанием даты и времени в имени файла
    ThisWorkbook.SaveCopyAs Replace(ThisWorkbook.FullName, ".xlsm", Format(Now, "_dd.mm.yyyy_hh-nn-ss") & ".xlsm")
End Sub

Последний раз редактировалось EducatedFool; 27.08.2015 в 01:40.
EducatedFool вне форума Ответить с цитированием
Старый 27.08.2015, 08:44   #3
who
Пользователь
 
Регистрация: 11.09.2014
Сообщений: 44
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
вот в этом проблема:
Код:
today = Date
в переменную today запишется дата в том формате, который настроен в Windows

раньше был, например, формат даты в настройках windows такой: dd.mm.yyyy
и имя файла получалось корректное

а сейчас формат даты, например, такой (на новой винде): dd/mm/yyyy
имя файла получается некорректное (слеши недопустимы в имени файла) - потому и ошибка
формат даты времени такой же
если ввести промежуточную переменную
Код:
sa = wbPath & "\" & wbName & "_" & today & "_" & ttime & ".xlsm"
то получается вполне себе нормальное имя с нормальным путём без запрещённых символов, ("hh-mm" работает корректно):

"E:\заказы\2015\2015_08\19.08_15_Пи сково\19_1944.87_15 Писково_27.08.2015_08-10.xlsm"

При пошаговом выполнении пропускается именно выдача диалогового окна без всякой ругани на ошибки, причём даже если опустить в строке:

Код:
If Not Application.Dialogs(xlDialogSaveAs).Show(wbName & "_" & today & ".xlsm") Then
Код:
(wbName & "_" & today & ".xlsm")
не работает именно
Код:
If Not Application.Dialogs(xlDialogSaveAs).Show
who вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать активной кнопку "сохранить" в Word? Festy Общие вопросы Delphi 0 14.03.2013 22:25
Аналог функции "Сохранить как->Веб-страница, полностью" beemoto Работа с сетью в Delphi 1 23.11.2009 17:12
Аналог функции "Сохранить как->Веб-страница, полностью" Magister Yoda Работа с сетью в Delphi 16 22.09.2009 12:53
сделать окно "открыть","сохранить как" blackstersl Общие вопросы Delphi 1 24.08.2008 10:31