Здравствуйте Подскажите какой нибудь макрос для Exel10 чтобы как только заполнялись строки скажем 30 автоматически сохранялся фаил с датой . (Желательно чтобы можно было выставлять число 10,11,12 и т.д. на какой строке сохранять ). Зарание благодарен. [moder]Причем здесь сводные таблицы? И нужен файл-пример и более конкретное описание процесса.
Здравствуйте Подскажите какой нибудь макрос для Exel10 чтобы как только заполнялись строки скажем 30 автоматически сохранялся фаил с датой . (Желательно чтобы можно было выставлять число 10,11,12 и т.д. на какой строке сохранять ). Зарание благодарен. [moder]Причем здесь сводные таблицы? И нужен файл-пример и более конкретное описание процесса.DenisR
Сообщение отредактировал _Boroda_ - Четверг, 07.01.2016, 15:14
Проявлю свои экстрасенсорные способности, а вы скажите "попал в цель" или нет. Файл во вложении. Макрос можете посмотреть в коде самой книги. Я ориентируюсь на событие Workbook_SheetChange.
Вот код для интересующихся: [vba]
Код
Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range)
Dim LastRow As Long
'указывает кратность строки Dim rwNum As Long
'операция производиться при заполнении каждой 15 строк rwNum = 15
If sh.Name = "Лист1" Then LastRow = sh.UsedRange.Row + sh.UsedRange.Rows.Count - 1 LastChangedRow = Target.Row 'изменена последняя ячейка? If LastChangedRow >= LastRow Then 'изменена новая ячейка (ниже последней), проверим требуется ли сохранение If LastRow Mod rwNum = 0 Then Application.DisplayAlerts = False ThisWorkbook.SaveCopyAs (ThisWorkbook.Path & "\" & rwNum & "_" & ThisWorkbook.Name) Application.DisplayAlerts = True End If End If End If End Sub
[/vba] Плюс в репу приветствуется [moder]Прочтение Правил форума приветствуется также. 3-е замечание.
Проявлю свои экстрасенсорные способности, а вы скажите "попал в цель" или нет. Файл во вложении. Макрос можете посмотреть в коде самой книги. Я ориентируюсь на событие Workbook_SheetChange.
Вот код для интересующихся: [vba]
Код
Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range)
Dim LastRow As Long
'указывает кратность строки Dim rwNum As Long
'операция производиться при заполнении каждой 15 строк rwNum = 15
If sh.Name = "Лист1" Then LastRow = sh.UsedRange.Row + sh.UsedRange.Rows.Count - 1 LastChangedRow = Target.Row 'изменена последняя ячейка? If LastChangedRow >= LastRow Then 'изменена новая ячейка (ниже последней), проверим требуется ли сохранение If LastRow Mod rwNum = 0 Then Application.DisplayAlerts = False ThisWorkbook.SaveCopyAs (ThisWorkbook.Path & "\" & rwNum & "_" & ThisWorkbook.Name) Application.DisplayAlerts = True End If End If End If End Sub
[/vba] Плюс в репу приветствуется [moder]Прочтение Правил форума приветствуется также. 3-е замечание.mathiax90
Значит условия такие с контроллера летят данные в EXCEL с переодичностью (какую я могу сделать каждую минуту каждый час неделю и т.д.) данные выстраиваются в колонку номер 2 и только заполняют строки так вот когда достигнет скажем 30 строчки должно быть авто сохранение с числом месяцем ну и годом если можно.
Значит условия такие с контроллера летят данные в EXCEL с переодичностью (какую я могу сделать каждую минуту каждый час неделю и т.д.) данные выстраиваются в колонку номер 2 и только заполняют строки так вот когда достигнет скажем 30 строчки должно быть авто сохранение с числом месяцем ну и годом если можно.DenisR
mathiax90 Спасибо что попробовали и думаю вы не плохой экстрасенс просто я наверное не очень хороший пользователь EXCELа я не понял где ложатся сохранения если не сложно то просто сделайте чтоб скажем на диск С: в корень.
mathiax90 Спасибо что попробовали и думаю вы не плохой экстрасенс просто я наверное не очень хороший пользователь EXCELа я не понял где ложатся сохранения если не сложно то просто сделайте чтоб скажем на диск С: в корень.DenisR
Но этот вариант работает только при ручном изменении файла. Если при работе вашего контроллера события вызываются (т.е. контроллер "эмулирует" ручную работу в файле эксель), то макрос будет работать. Иначе - нет.
Но этот вариант работает только при ручном изменении файла. Если при работе вашего контроллера события вызываются (т.е. контроллер "эмулирует" ручную работу в файле эксель), то макрос будет работать. Иначе - нет.mathiax90
mathiax90[/b] Все хорошо только есть один нюанс после того как прошли скажем 15 строк она сохраняет все окей , но если снова начать с 1 строки то она сохраняет в тот же фаил . Я бы хотел чтобы напечатал 15 строк он сохранил со временем (время день месяц ) затем я сам все убераю все 15 строк и начинаю с первой печатать и как только дохожу до 15 он опять сохраняет в другой фаил. А так мне пока нравится. Большое спасибо. Сделайте дополнения если не сложно.
mathiax90[/b] Все хорошо только есть один нюанс после того как прошли скажем 15 строк она сохраняет все окей , но если снова начать с 1 строки то она сохраняет в тот же фаил . Я бы хотел чтобы напечатал 15 строк он сохранил со временем (время день месяц ) затем я сам все убераю все 15 строк и начинаю с первой печатать и как только дохожу до 15 он опять сохраняет в другой фаил. А так мне пока нравится. Большое спасибо. Сделайте дополнения если не сложно. DenisR
Большое спасибо все кто ответил особенно mathiax90 возникла другая проблема похоже с контроллера как то непонятно работает очистка страницы. Объясняю как только строки заполняются данными до 15 ваш макрос сохраняет один раз затем у меня летит команда с контроллера очистить столбцы они очищаются я это вижу а похоже макрос это не видит и следующее заполнение строк он не сохраняет. Просьба такая можно ли сделать чтобы макрос скажем на 15 сохранял и сразу очищал строки так должно я думаю получится. Заранее большое спасибо.
Большое спасибо все кто ответил особенно mathiax90 возникла другая проблема похоже с контроллера как то непонятно работает очистка страницы. Объясняю как только строки заполняются данными до 15 ваш макрос сохраняет один раз затем у меня летит команда с контроллера очистить столбцы они очищаются я это вижу а похоже макрос это не видит и следующее заполнение строк он не сохраняет. Просьба такая можно ли сделать чтобы макрос скажем на 15 сохранял и сразу очищал строки так должно я думаю получится. Заранее большое спасибо.DenisR
RANБольшое спасибо все работает только в нормальных условиях Excela доходит до нужной строки сохраняет потом все очищает вобщем работает как надо. Но с моим контроллером не хочет похоже программа мешает . Наверное надо было сразу с нее начинать . В общем работает так запускаем программу Plx-daq она как макрос включаем контроллер и начинают идти данные в строчки . Я посмотрел в Visual Basic как она выглядит: [vba]
Код
Private Sub Workbook_Open() frmStampDAQ.Show End Sub
[/vba] Так как я не черта не понимаю в программировании то спрашиваю а можно ли сюда добавить фаил который сделал mathiax90 [moder]Код макроса нужно заворачивать в специальный тег - кнопка #. Об этом в Правилах форума есть. На первый раз попровил Вам.
RANБольшое спасибо все работает только в нормальных условиях Excela доходит до нужной строки сохраняет потом все очищает вобщем работает как надо. Но с моим контроллером не хочет похоже программа мешает . Наверное надо было сразу с нее начинать . В общем работает так запускаем программу Plx-daq она как макрос включаем контроллер и начинают идти данные в строчки . Я посмотрел в Visual Basic как она выглядит: [vba]
Код
Private Sub Workbook_Open() frmStampDAQ.Show End Sub
[/vba] Так как я не черта не понимаю в программировании то спрашиваю а можно ли сюда добавить фаил который сделал mathiax90 [moder]Код макроса нужно заворачивать в специальный тег - кнопка #. Об этом в Правилах форума есть. На первый раз попровил Вам.DenisR
Хотя вы и не соображаете в программировании, могли бы догадаться, что у нас ваш файл работать не будет. Попробуйте в форме заменить код очистки на этот [vba]
Код
Private Sub clearSheet() Worksheets(1).UsedRange.Offset(1).Clear txtStatus2.Caption = "Cells cleared" Row = 1 End Sub
[/vba]
Хотя вы и не соображаете в программировании, могли бы догадаться, что у нас ваш файл работать не будет. Попробуйте в форме заменить код очистки на этот [vba]
Код
Private Sub clearSheet() Worksheets(1).UsedRange.Offset(1).Clear txtStatus2.Caption = "Cells cleared" Row = 1 End Sub
RAN Много уважаемый RAN Вы наверное гуру в программировании , а я простой пользователь так что сильно не пинайте не соизволите ли вставить код в фаил вам будет сподручнее и поправте время Вы говорили что так будет лучше (mathiax90, aa = Format(Now, "yyyy-mm-dd hh-nn")
RAN Много уважаемый RAN Вы наверное гуру в программировании , а я простой пользователь так что сильно не пинайте не соизволите ли вставить код в фаил вам будет сподручнее и поправте время Вы говорили что так будет лучше (mathiax90, aa = Format(Now, "yyyy-mm-dd hh-nn")DenisR
Нет. Я уже писал, что у меня ваш файл не работает. Исходя из №8, вы и сами вставить с усами. В коде mathiax90 замените Format(Date,...) & Format(Time,....) на Format(Now...) Найдите в коде вашей формы [vba]
Нет. Я уже писал, что у меня ваш файл не работает. Исходя из №8, вы и сами вставить с усами. В коде mathiax90 замените Format(Date,...) & Format(Time,....) на Format(Now...) Найдите в коде вашей формы [vba]
Долго сидел изучал и пришел к такому выводу я думал что у меня программа которая принимает данные с контроллера сама по себе и не в макросах не Visual Basice посмотреть код не получается Найдите в коде вашей формы Private Sub clearSheet() Заметил такое макрос написанный mathiax90 работает один раз сохранил и все просьба такая как в фаил ниже вставить код запуска снова макроса заново после как он сделает сохранение.
Долго сидел изучал и пришел к такому выводу я думал что у меня программа которая принимает данные с контроллера сама по себе и не в макросах не Visual Basice посмотреть код не получается Найдите в коде вашей формы Private Sub clearSheet() Заметил такое макрос написанный mathiax90 работает один раз сохранил и все просьба такая как в фаил ниже вставить код запуска снова макроса заново после как он сделает сохранение.DenisR