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

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

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

Восстановить пароль

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 06.11.2008, 23:06   #11
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от КаМММ Посмотреть сообщение
Ну если положить файл на рабочий стол.
1. Все работает, НО, есть минус, макрос сохраняет два файла, новый и старый, старый не нужен, может макросом, мона как то его удалять?
2. А как быть с путем к файлу, ну не занимать же весь Рабочий стол папками месяцев, я на р. стол вывожу только ярлык и каждый месяц его меняю

Последний раз редактировалось valerij; 07.11.2008 в 00:04.
valerij вне форума
Старый 07.11.2008, 06:36   #12
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Посмотрите один из возможных вариантов решения.
При каждом открытии-закрытии книги, имя родительской папки файла станет таким же (если они не совпадали) как имя файла, и на рабочем столе будет создан (или заменен) соответствующий ярлык.
Обратите внимание, что после переименования файла вручную, необходимо хотя бы открыть и закрыть файл.
Для решения задачи таким способом во-первых, используется ячейка листа (в примере это "IV65536") для хранения имени файла до переименования, чтобы определить путь к уже существующему ярлыку, во-вторых, используется папка для временного хранения файла (в примере это папка документов пользователя) в момент переименования родительской папки.
Если устроит, то Ваш макрос очистки нужно будет запускать только после определения факта переименования файла, опять же используя ячейку, хранящую предыдущее имя файла.
Вложения
Тип файла: rar Октябрь.rar (9.1 Кб, 20 просмотров)
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 07.11.2008 в 07:56.
SAS888 вне форума
Старый 07.11.2008, 10:41   #13
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Посмотрите один из возможных вариантов решения.
SAS!
К сожалению, нет времени, вечером разберусь, отпишусь, надеюсь в субботу загляните.
КаМММ!
А Ваш макрос, можно изменить с учетом моих пожеланий?
valerij вне форума
Старый 07.11.2008, 21:08   #14
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

SAS!
Да, работает, немножко не удобно, что сам файл нужно переименовывать, а не папку, ну с этим можно смирится, в принципе, какая разница, что переименовывать!!
НО, не получается, у меня, вставить Ваш код в мой, ошибка выскакивает.

Последний раз редактировалось valerij; 08.11.2008 в 03:18.
valerij вне форума
Старый 09.11.2008, 00:13   #15
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

КаМММ!
В Вашем макросе добавил в строке:
If ActiveWorkbook.Name <> Имя & ".xls" Then ActiveWorkbook.SaveAs Filename:=Путь _
& Application.PathSeparator & Имя & ".xls": Kill Путь & Application.PathSeparator & ИмяСтар: Run "Очистка"
Теперь, старый файл, удаляется, очищается, все ОК.
(Не знаю, правильно, не правильно??)
valerij вне форума
Старый 10.11.2008, 08:06   #16
КаМММ
Почти "Чайник"
Форумчанин
 
Аватар для КаМММ
 
Регистрация: 09.06.2008
Сообщений: 134
По умолчанию

Да всё правильно
Был уверен что это вы можете сами дорисовать по тому и не стал сначала заморачиватся.
А вот проверка соответствия названия папки - месяцу

Код:
ввв:
 Select Case Имя
        Case "Январь"
        GoTo ссс
        Case "Февраль"
         GoTo ссс
        Case "Март"
         GoTo ссс
        Case "Апрель"
         GoTo ссс
        Case "Май"
         GoTo ссс
        Case "Июнь"
         GoTo ссс
        Case "Июль"
         GoTo ссс
        Case "Август"
         GoTo ссс
        Case "Сентябрь"
         GoTo ссс
        Case "Октябрь"
         GoTo ссс
        Case "Ноябрь"
         GoTo ссс
        Case "Декабрь"
Case Else:
 MsgBox "Название каталога не есть месяц"
 Exit Sub
End Select
ссс:
If ActiveWorkbook.Name <> Имя & ".xls" Then......
Уверен что всё это можно сделать и с меньшим количеством строчек, но это первое что пришло в голову
Извиняюсь что в выходные не ответил. (некогда было)
КаМММ вне форума
Старый 10.11.2008, 08:08   #17
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
не удобно, что сам файл нужно переименовывать, а не папку
Можно сделать и так. Только какая разница? Пока файл не открыть (закрыть), имена файла и папки не сравняются.
Цитата:
не получается, у меня, вставить Ваш код в мой, ошибка выскакивает.
А что Вы от меня хотите?
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 10.11.2008, 22:29   #18
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
А что Вы от меня хотите?
SAS
Что бы Вы "вставили", ведь так классно все делает....
Как связать мой и Ваш Private Sub Workbook_Open()???
Куда, Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) вставить? У меня же есть Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Excel.Range), а вместе они ошибку выдают.
valerij вне форума
Старый 11.11.2008, 00:14   #19
КаМММ
Почти "Чайник"
Форумчанин
 
Аватар для КаМММ
 
Регистрация: 09.06.2008
Сообщений: 134
По умолчанию

Цитата:
SAS
Что бы Вы "вставили", ведь так классно все делает....
Как связать мой и Ваш....
Чтобы связать надо слегка его макрос "раздербанить"
(Кстати мне всегда нравились его решения по крайней мере я для себя всегда в них чего-нибудь находил полезное)
В данном случае у меня осталось следующее:

Код:
Private Sub Workbook_Open()
Путь = ThisWorkbook.Path
ИмяСтар = ThisWorkbook.Name
For S = Len(Путь) To 1 Step -1 ' Цикл отсчета с конца
If Mid(Путь, S, 1) = Application.PathSeparator Then GoTo ввв ' Проверяет значек разделитель
ммм = Mid(Путь, S, 1) & ммм ' Добавляет по значку
Имя = ммм
Next S
ввв:
If ActiveWorkbook.Name = Имя & ".xls" Then Exit Sub
 Select Case Имя
        Case "Январь"
        GoTo ссс
        Case "Февраль"
         GoTo ссс
        Case "Март"
         GoTo ссс
        Case "Апрель"
         GoTo ссс
        Case "Май"
         GoTo ссс
        Case "Июнь"
         GoTo ссс
        Case "Июль"
         GoTo ссс
        Case "Август"
         GoTo ссс
        Case "Сентябрь"
         GoTo ссс
        Case "Октябрь"
         GoTo ссс
        Case "Ноябрь"
         GoTo ссс
        Case "Декабрь"
Case Else:
 MsgBox "Название каталога не есть месяц"
 Exit Sub
End Select
ссс:
ActiveWorkbook.SaveAs Filename:=Путь & Application.PathSeparator & Имя & ".xls"
Kill Путь & Application.PathSeparator & ИмяСтар
Call Очистка
    MyPath = ThisWorkbook.Path & "\" & ThisWorkbook.Name
    Set WSHShell = CreateObject("WScript.Shell")
    strDesktop = WSHShell.SpecialFolders("Desktop")
    Set objShortCut = WSHShell.CreateShortcut(strDesktop & "\" & Имя & ".lnk")
        objShortCut.TargetPath = MyPath
        objShortCut.IconLocation = "Moricons.dll, 40"
        objShortCut.Save
MsgBox "Название обновлено"
End Sub
Переменные как обычно не объявил (такая у меня дурацкая привычка)
ЗЫ SAS прошу прощения за плагтат. (тем более такой некорректный)
КаМММ вне форума
Старый 11.11.2008, 00:46   #20
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от КаМММ Посмотреть сообщение

Код:
 Select Case Имя
        Case "Январь"
        GoTo ссс
        Case "Февраль"
         GoTo ссс
        Case "Март"
         GoTo ссс
        Case "Апрель"
         GoTo ссс
        Case "Май"
         GoTo ссс
        Case "Июнь"
         GoTo ссс
        Case "Июль"
         GoTo ссс
        Case "Август"
         GoTo ссс
        Case "Сентябрь"
         GoTo ссс
        Case "Октябрь"
         GoTo ссс
        Case "Ноябрь"
         GoTo ссс
        Case "Декабрь"
КаМММ!
А зачем нужно это, у меня и без этого все ОК!
valerij вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переименовать файл из директории Алексей_C Общие вопросы Delphi 4 30.10.2008 10:48
Можно ли программно переименовать папку Rusl92 Общие вопросы Delphi 3 13.09.2008 12:52
Как сохранить файл заранее указывая папку? highklass Общие вопросы Delphi 2 09.06.2008 10:58
Под скажите как переименовать файл? snaem Общие вопросы .NET 4 23.04.2008 23:15
как переименовать samosval Общие вопросы .NET 1 19.12.2007 21:40