Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/100: Рейтинг темы: голосов - 100, средняя оценка - 4.77
 Аватар для Devil_FoX
168 / 142 / 1
Регистрация: 01.04.2010
Сообщений: 474

Макрос на создание копии файла

29.03.2012, 13:54. Показов 18711. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день всем.

Помогите с макросом.
Есть файл Excel. При сохранении файла, необходимо чтобы создавалась копия данного файла по определённому пути, но уже без макроса внутри.
Я написал макрос, но при срабатывании этого макроса выбивается ошибка и запрос восстановления файла (созданной копии).

Так же как в копии сделать так чтобы макрос тоже не копировался?

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    shara = "d:\"
    fname = Format(Date, "dd-MM-yyyy") & "_" & ThisWorkbook.Name
    For x = 1 To 1000
        fname1 = Mid(fname, x, 1)
        If fname1 = "." Then
            fname2 = Mid(fname, 1, x - 1)
            GoTo dalshe
        End If
    Next
    fname = fname2 & ".xlsx"
dalshe:
    ThisWorkbook.SaveAs shara & fname
End Sub
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.03.2012, 13:54
Ответы с готовыми решениями:

Защита листа Excel и создание резервной копии файла
Имеется: Книга защищена паролем "123". На форме входа уже есть две кнопки: "Пользователь" и "Гость". При входе гостя...

Создание копии файла
Добрый день! Хочу создать исполнительный файл который создает копию файла при запуске и складывает ее в определенную папку. А название...

Создание копии файла
создать копию файла

7
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
29.03.2012, 14:56
Если в книге нет макросов в модулях листов (т.е. макросы есть только в обычных модулях, модуле книги и в формах), то можно скопировать все листы в новую книгу и сохранить ее.

И откройте для себя функцию InstrRev
Visual Basic
1
2
3
4
5
6
7
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    shara = "c:\temp\"
    fname = Format(Date, "dd-MM-yyyy") & "_" & ThisWorkbook.Name
    fname = Left(fname, InStrRev(fname, ".")) & "xlsx"
    Sheets.Copy
    ActiveWorkbook.Close True, shara & fname
End Sub
1
 Аватар для Devil_FoX
168 / 142 / 1
Регистрация: 01.04.2010
Сообщений: 474
29.03.2012, 17:22  [ТС]
Скрипт работает. спасибо большое.
А как можно сохранять копию файла, чтобы при сохранении выделенный лист был активный и после сохранения?
А то в копии активный лист на автомате становится самый первый лист

Не по теме:

Цитата Сообщение от Казанский Посмотреть сообщение
И откройте для себя функцию InstrRev
Я очень плохо знаю VB. считай методом научного тыка по примерам чужих пытаюсь понять как работает и создавать для себя. Книг, где всё доходно описано ещё не встречал.

0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
29.03.2012, 21:36
Добавить 1 строку
Visual Basic
1
2
3
4
5
6
7
8
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    shara = "c:\temp\"
    fname = Format(Date, "dd-MM-yyyy") & "_" & ThisWorkbook.Name
    fname = Left(fname, InStrRev(fname, ".")) & "xlsx"
    Sheets.Copy
    ActiveWorkbook.Sheets(Me.ActiveSheet.Index).Activate
    ActiveWorkbook.Close True, shara & fname
End Sub
1
 Аватар для Devil_FoX
168 / 142 / 1
Регистрация: 01.04.2010
Сообщений: 474
30.03.2012, 12:14  [ТС]
ммм. есть опять проблемы

Во первых: графики отсоединяются от сводных таблиц и стают статичными.
Втрое: Список полей сводной таблицы в оригинале закрыт, а в копии открыт.
0
 Аватар для Devil_FoX
168 / 142 / 1
Регистрация: 01.04.2010
Сообщений: 474
02.04.2012, 11:04  [ТС]
А есть макрос "Сохранить как" ?
можно сохранить данный файл в xlsx - все настройки и связки сохранятся в файле как в оригинале, а макросы в этом формате не поддерживаются.
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
03.04.2012, 14:01
Тут нужно "сохранить копию как" и потом работать с этой копией:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Const SHARA = "c:\temp\"
Dim fName$, tmpName$
On Error Resume Next
Application.EnableEvents = False
Application.DisplayAlerts = False
tmpName = SHARA & Me.Name & ".tmp"
Me.SaveCopyAs tmpName
With Workbooks.Open(tmpName)
    fName = Format(Date, "dd-MM-yyyy") & "_" & Me.Name
    fName = SHARA & Left(fName, InStrRev(fName, ".")) & "xlsx"
    .SaveAs fName, xlOpenXMLWorkbook, CreateBackup:=False
    .Close 0
End With
Kill tmpName
Application.DisplayAlerts = True
Application.EnableEvents = True
End Sub
1
 Аватар для Devil_FoX
168 / 142 / 1
Регистрация: 01.04.2010
Сообщений: 474
04.04.2012, 18:26  [ТС]
Спасибо. всё очень хорошо работает. сводные и графики не слетают.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.04.2012, 18:26
Помогаю со студенческими работами здесь

Создание резервной копии файла
Написать функцию для создания страховочной копии файла .Первым знаком расширения страховочного файла должен быть знак "-". В...

Создание копии текстового файла
Всем привет :) Мне нужно написать программу, которая создаёт копию содержимого текстового файла «test1.txt». Имя выходного файла ввести с...

Создание Thumb - маленькой копии файла изображения
Вообщем нужен механизм, создающий маленькие копии из файлов больших изображений (фиксированного размера) по средствам C#. На какие классы...

Создание резервной копии файла и восстановление из неё
Здравствуйте! Исходные данные: есть программа на Windows Forms(.NET Framework 4.5). В одной директории с программой(для простоты)...

Чтение бинарного файла в поток std::ifstream и вывод в другой бинарный файл std::ofstream (создание копии)
Проверил работу программы на маленькой картинке(744 байт). Все работает. С несколько бОльшими файлами(512КБ) нет. Суть задачи в том,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru