Подскажите, пожалуйста, неопытному юзеру, как правильно сделать следующее.
Есть макрос:
[vba]
Код
Sub Update_() Path_1 = "F:\STALE_APP_REPORT.xls" iFileDateTime_1 = FileDateTime(Path_1) Cells(27, 11) = iFileDateTime_1 ActiveWorkbook.UpdateLink Name:= _ "F:\STALE_APP_REPORT.xls", Type:=xlExcelLinks Dim R As Range Dim rngX As Range Dim X As Integer
Set R = Sheets(7).Rows(2).Find(Sheets(7).[B1].Text, , xlValues, xlWhole) Set rngX = Sheets(7).[B3:B140]
If Not R Is Nothing Then Sheets(7).Select rngX.Copy R.Offset(1).PasteSpecial Paste:=xlPasteValues Set rngX = Selection For X = 1 To rngX.Columns.Count rngX.Cells(1, X).Offset(141 - rngX.Cells(1, X).Row).Value = Now Next X End If Sheets(1).Select End Sub
[/vba]Вставляет в ячейку K27 дату и время последнего обновления файла-исходника под названием "STALE_APP_REPORT.xls" Как правильно и в какую часть макроса вставить название файла и номер листа куда должна идти вставка? (Лист1, название файла: "File123.xlsm")
Просто, периодически возникает проблема, когда вышеупомянутый макрос вставляет дату и время обновления файла STALE_APP_REPORT в ячейу К27 но на другом листе, либо вообще в другую книгу.
Доброе утро, уважаемые гуру!
Подскажите, пожалуйста, неопытному юзеру, как правильно сделать следующее.
Есть макрос:
[vba]
Код
Sub Update_() Path_1 = "F:\STALE_APP_REPORT.xls" iFileDateTime_1 = FileDateTime(Path_1) Cells(27, 11) = iFileDateTime_1 ActiveWorkbook.UpdateLink Name:= _ "F:\STALE_APP_REPORT.xls", Type:=xlExcelLinks Dim R As Range Dim rngX As Range Dim X As Integer
Set R = Sheets(7).Rows(2).Find(Sheets(7).[B1].Text, , xlValues, xlWhole) Set rngX = Sheets(7).[B3:B140]
If Not R Is Nothing Then Sheets(7).Select rngX.Copy R.Offset(1).PasteSpecial Paste:=xlPasteValues Set rngX = Selection For X = 1 To rngX.Columns.Count rngX.Cells(1, X).Offset(141 - rngX.Cells(1, X).Row).Value = Now Next X End If Sheets(1).Select End Sub
[/vba]Вставляет в ячейку K27 дату и время последнего обновления файла-исходника под названием "STALE_APP_REPORT.xls" Как правильно и в какую часть макроса вставить название файла и номер листа куда должна идти вставка? (Лист1, название файла: "File123.xlsm")
Просто, периодически возникает проблема, когда вышеупомянутый макрос вставляет дату и время обновления файла STALE_APP_REPORT в ячейу К27 но на другом листе, либо вообще в другую книгу.ArkaIIIa
Сообщение отредактировал ArkaIIIa - Среда, 11.06.2014, 07:50
Скажите, пожалуйста, а вышеобозначенная проблема (макрос срабатывал на другие книги), связана именно с тем, что в макросе не было четко прописано, в какую книгу он должен вставлять информацию?
anvg Благодарю!
Скажите, пожалуйста, а вышеобозначенная проблема (макрос срабатывал на другие книги), связана именно с тем, что в макросе не было четко прописано, в какую книгу он должен вставлять информацию?ArkaIIIa
Просто обращение Cells(27, 11) подразумевает активный лист активной книги. А ведь это может быть и не требуемый лист необходимой книги, не так ли? Более того, может привести к ошибке, если активный лист - это диаграмма.
Цитата
(макрос срабатывал на другие книги)
Просто обращение Cells(27, 11) подразумевает активный лист активной книги. А ведь это может быть и не требуемый лист необходимой книги, не так ли? Более того, может привести к ошибке, если активный лист - это диаграмма.anvg
В контексте вышеобозначенного вопроса, хотелось бы поинтересоваться (если эта другая тема - дайте знать, создам другой топик)...
Я постарался модифицировать макрос, прописав везде отсылку к нужной книге и нужным листам на ней. Получилось следующее:
[vba]
Код
Sub Update_() Path_1 = "F:\STALE_APP_REPORT.xls" iFileDateTime_1 = FileDateTime(Path_1) Workbooks("Q1.5.xlsm").Worksheets("РМ").Cells(27, 11) = iFileDateTime_1 ActiveWorkbook.UpdateLink Name:= _ "F:\STALE_APP_REPORT.xls", Type:=xlExcelLinks Dim R As Range Dim rngX As Range Dim X As Integer
Set R = Workbooks("Q1.5.xlsm").Worksheets("Статистика").Rows(2).Find(Worksheets("Статистика").[B1].Text, , xlValues, xlWhole) Set rngX = Workbooks("Q1.5.xlsm").Worksheets("Статистика").[B3:B140]
If Not R Is Nothing Then Workbooks("Q1.5.xlsm").Worksheets("Статистика").Select rngX.Copy R.Offset(1).PasteSpecial Paste:=xlPasteValues Set rngX = Selection For X = 1 To rngX.Columns.Count rngX.Cells(1, X).Offset(141 - rngX.Cells(1, X).Row).Value = Now Next X End If Workbooks("Q1.5.xlsm").Worksheets("РМ").Select End Sub
[/vba]
Задача: чтобы макрос выполнялся корректно, даже если открыты другие книги и/или учетная запись заблокирована.
Вопрос 1: Возможно ли это (особенно в части выполнения при заблокированной уз)? В другом топике интересовался - сказали, что возможно. Вопрос 2: Если ответ на вопрос 1 - возможно, то чего я не учел? Видимо где-то не поставил отсылку к нужной книге? При тестировании выдает ошибку: Run-time error 1004: Method UpdateLink of object _Workbook failed. Не совсем понимаю, на что именно он ругается.
В контексте вышеобозначенного вопроса, хотелось бы поинтересоваться (если эта другая тема - дайте знать, создам другой топик)...
Я постарался модифицировать макрос, прописав везде отсылку к нужной книге и нужным листам на ней. Получилось следующее:
[vba]
Код
Sub Update_() Path_1 = "F:\STALE_APP_REPORT.xls" iFileDateTime_1 = FileDateTime(Path_1) Workbooks("Q1.5.xlsm").Worksheets("РМ").Cells(27, 11) = iFileDateTime_1 ActiveWorkbook.UpdateLink Name:= _ "F:\STALE_APP_REPORT.xls", Type:=xlExcelLinks Dim R As Range Dim rngX As Range Dim X As Integer
Set R = Workbooks("Q1.5.xlsm").Worksheets("Статистика").Rows(2).Find(Worksheets("Статистика").[B1].Text, , xlValues, xlWhole) Set rngX = Workbooks("Q1.5.xlsm").Worksheets("Статистика").[B3:B140]
If Not R Is Nothing Then Workbooks("Q1.5.xlsm").Worksheets("Статистика").Select rngX.Copy R.Offset(1).PasteSpecial Paste:=xlPasteValues Set rngX = Selection For X = 1 To rngX.Columns.Count rngX.Cells(1, X).Offset(141 - rngX.Cells(1, X).Row).Value = Now Next X End If Workbooks("Q1.5.xlsm").Worksheets("РМ").Select End Sub
[/vba]
Задача: чтобы макрос выполнялся корректно, даже если открыты другие книги и/или учетная запись заблокирована.
Вопрос 1: Возможно ли это (особенно в части выполнения при заблокированной уз)? В другом топике интересовался - сказали, что возможно. Вопрос 2: Если ответ на вопрос 1 - возможно, то чего я не учел? Видимо где-то не поставил отсылку к нужной книге? При тестировании выдает ошибку: Run-time error 1004: Method UpdateLink of object _Workbook failed. Не совсем понимаю, на что именно он ругается.ArkaIIIa
_Boroda_ Я бы и рад выложить файл. Сам понимаю, что так было бы намного проще для всех, но его очень-очень долго чистить от конфиденциальной инфы. Вопросы по сути не сложные. Для Вас, наверное, покажутся глупыми. Попробую максимально просто объяснить, что есть, и что нужно.
Есть макрос: [vba]
Код
Sub Update_() Path_1 = "F:\STALE_APP_REPORT.xls" iFileDateTime_1 = FileDateTime(Path_1) Workbooks("Q1.5.xlsm").Worksheets("РМ").Cells(27, 11) = iFileDateTime_1 ActiveWorkbook.UpdateLink Name:= _ "F:\STALE_APP_REPORT.xls", Type:=xlExcelLinks Dim R As Range Dim rngX As Range Dim X As Integer
Set R = Workbooks("Q1.5.xlsm").Worksheets("Статистика").Rows(2).Find(Worksheets("Статистика").[B1].Text, , xlValues, xlWhole) Set rngX = Workbooks("Q1.5.xlsm").Worksheets("Статистика").[B3:B140]
If Not R Is Nothing Then Workbooks("Q1.5.xlsm").Worksheets("Статистика").Select rngX.Copy R.Offset(1).PasteSpecial Paste:=xlPasteValues Set rngX = Selection For X = 1 To rngX.Columns.Count rngX.Cells(1, X).Offset(141 - rngX.Cells(1, X).Row).Value = Now Next X End If Workbooks("Q1.5.xlsm").Worksheets("РМ").Select End Sub
[/vba]
Лежит в Модуле1. Выполняет записанные в нем функции.
[/vba] Выполняет первый макрос в заданное время. Лежит в "ЭтаКнига".
Куда правильно поместить макрос 2? а) Оставить в "ЭтаКнига" б) Положить в Модуль1 к первому в) Положить в Модуль2
Мне то нужно, по сути, чтобы оба макроса работали автономно, в какой бы книге я не находился. Т.е. я работаю с другим файлом-excel, а первый файл (в котором записаны вышеуказанные макросы) сам-собой обновляется в указанное время.
_Boroda_ Я бы и рад выложить файл. Сам понимаю, что так было бы намного проще для всех, но его очень-очень долго чистить от конфиденциальной инфы. Вопросы по сути не сложные. Для Вас, наверное, покажутся глупыми. Попробую максимально просто объяснить, что есть, и что нужно.
Есть макрос: [vba]
Код
Sub Update_() Path_1 = "F:\STALE_APP_REPORT.xls" iFileDateTime_1 = FileDateTime(Path_1) Workbooks("Q1.5.xlsm").Worksheets("РМ").Cells(27, 11) = iFileDateTime_1 ActiveWorkbook.UpdateLink Name:= _ "F:\STALE_APP_REPORT.xls", Type:=xlExcelLinks Dim R As Range Dim rngX As Range Dim X As Integer
Set R = Workbooks("Q1.5.xlsm").Worksheets("Статистика").Rows(2).Find(Worksheets("Статистика").[B1].Text, , xlValues, xlWhole) Set rngX = Workbooks("Q1.5.xlsm").Worksheets("Статистика").[B3:B140]
If Not R Is Nothing Then Workbooks("Q1.5.xlsm").Worksheets("Статистика").Select rngX.Copy R.Offset(1).PasteSpecial Paste:=xlPasteValues Set rngX = Selection For X = 1 To rngX.Columns.Count rngX.Cells(1, X).Offset(141 - rngX.Cells(1, X).Row).Value = Now Next X End If Workbooks("Q1.5.xlsm").Worksheets("РМ").Select End Sub
[/vba]
Лежит в Модуле1. Выполняет записанные в нем функции.
[/vba] Выполняет первый макрос в заданное время. Лежит в "ЭтаКнига".
Куда правильно поместить макрос 2? а) Оставить в "ЭтаКнига" б) Положить в Модуль1 к первому в) Положить в Модуль2
Мне то нужно, по сути, чтобы оба макроса работали автономно, в какой бы книге я не находился. Т.е. я работаю с другим файлом-excel, а первый файл (в котором записаны вышеуказанные макросы) сам-собой обновляется в указанное время.ArkaIIIa
Сообщение отредактировал ArkaIIIa - Среда, 11.06.2014, 12:48
Hugo "Update_" лежит в модуле. "Application.OnTime" лежит в "ЭтаКнига".
Проблема. Если я в момент срабатывания "Application.OnTime" сижу в другой книге, возникает сообщение "Run-time error 1004: Method UpdateLink of object _Workbook failed."
Hugo "Update_" лежит в модуле. "Application.OnTime" лежит в "ЭтаКнига".
Проблема. Если я в момент срабатывания "Application.OnTime" сижу в другой книге, возникает сообщение "Run-time error 1004: Method UpdateLink of object _Workbook failed."ArkaIIIa
Само название "Private Sub Workbook_Open()" говорит о том, что только а) Оставить в "ЭтаКнига"
Все, теперь понятно.Должно быть не Апдейт, а Книга("ооо").Модуль("ааа").Апдейт Или кладите Апдейт в модуль той книги, в которой работаете в момент срабатывания макроса
Само название "Private Sub Workbook_Open()" говорит о том, что только а) Оставить в "ЭтаКнига"
Все, теперь понятно.Должно быть не Апдейт, а Книга("ооо").Модуль("ааа").Апдейт Или кладите Апдейт в модуль той книги, в которой работаете в момент срабатывания макроса_Boroda_
1.Второй макрос может быть только в одном месте - где сейчас срабатывает. 2.Зачем сразу задавать так много времён? После первого срабатывания задавайте время на полчаса позже. Или до срабатывания, первой строкой. И не ошибётесь в временах, как сейчас. 3.Что за "Q1.5.xlsm"? Всегда точно открыта?
1.Второй макрос может быть только в одном месте - где сейчас срабатывает. 2.Зачем сразу задавать так много времён? После первого срабатывания задавайте время на полчаса позже. Или до срабатывания, первой строкой. И не ошибётесь в временах, как сейчас. 3.Что за "Q1.5.xlsm"? Всегда точно открыта?Hugo
Hugo Бог с ним, с указанным многократно временем) Мне бы решить, как сделать так, чтобы макросы выполнялись, когда я сижу в другой книге (естественно, первая при этом открыта)..)
Hugo Бог с ним, с указанным многократно временем) Мне бы решить, как сделать так, чтобы макросы выполнялись, когда я сижу в другой книге (естественно, первая при этом открыта)..)ArkaIIIa
Так они ведь выполняются - ошибка ведь появляется! Потому что ActiveWorkbook.UpdateLink - а в активной нет таких линков вероятно. Я ведь уже сказал. Вы же сами активировали другую книгу!
Так они ведь выполняются - ошибка ведь появляется! Потому что ActiveWorkbook.UpdateLink - а в активной нет таких линков вероятно. Я ведь уже сказал. Вы же сами активировали другую книгу!Hugo
Hugo Уважаемый Hugo, ну, представьте, что общаетесь с обезьяной) Как мне модифицировать макрос, чтобы он в итоге срабатывал (без ошибок)?) Я заменил ActiveWorkbook.UpdateLink на Workbooks("Q1.5.xlsm").UpdateLink, ничего умнее придумать не смог, в этом случае пишет Subscritp out of range.
Hugo Уважаемый Hugo, ну, представьте, что общаетесь с обезьяной) Как мне модифицировать макрос, чтобы он в итоге срабатывал (без ошибок)?) Я заменил ActiveWorkbook.UpdateLink на Workbooks("Q1.5.xlsm").UpdateLink, ничего умнее придумать не смог, в этом случае пишет Subscritp out of range.ArkaIIIa
Сообщение отредактировал ArkaIIIa - Среда, 11.06.2014, 13:31