Просмотр сообщений
|
Страниц: [1] 2
|
3
|
Основные форумы / Вопросы по Excel и VBA / Как в колонтитуле макросом прибавить к страницы значение из ячейки
|
: 02.10.2021, 11:07:58
|
Здравствуйте, нужна помощь, как в колонтитуле макросом прибавить к страницы значение из ячейки нужно к этому страница &P" прибавить ячейку из листа "Титульник" ячейка "V1". Вот макрос: Sub Колонтитулы_Протокол() Application.ScreenUpdating = False Sheets("Протокол").Select Range("V1").Select ActiveCell.FormulaR1C1 = "=страниц_на_листе_ПРОТ" Range("V1").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False With ActiveSheet.PageSetup .LeftFooter = [Q1] & ". Общее количество страниц " & [T1] & ", страница &P" End With Sheets("Титульник").Select Range("V1").Select ActiveCell.FormulaR1C1 = "=страниц_на_листе_ТИТ" Range("V1").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False With ActiveSheet.PageSetup .LeftFooter = [Q1] & ". Общее количество страниц " & [T1] & ", страница &P" End With Application.ScreenUpdating = True End Sub
Помогите пожалуйста.
|
|
|
5
|
Основные форумы / Вопросы по Excel и VBA / Как скопировать данные из-за крытой книги вместе с формулами и форматами. в ниже
|
: 28.01.2021, 02:27:55
|
Помогите в следующем вопросе. Как скопировать данные из-за крытой книги вместе с формулами и форматами. в ниже приведенном коде? Sub Get_Value_From_Close_Book() Dim sShName As String, sAddress As String, vData 'Отключаем обновление экрана Application.ScreenUpdating = False Workbooks.Open "C:\Documents and Settings\Книга1.xls" '" sAddress = "A1:C100" 'или одна ячейка - "A1" 'получаем значение vData = Sheets("Лист1").Range(sAddress).Value ActiveWorkbook.Close False 'Записываем данные на активный лист книги, 'с которой запустили макрос If IsArray(vData) Then [A1].Resize(UBound(vData, 1), UBound(vData, 2)).Value = vData Else [A1] = vData End If 'если надо копировать ячейки с форматами, 'то можно использовать стандартные методы копирования вставки 'objCloseBook.Sheets("Лист1").Range(sAddress).Copy '[A1].PasteSpecial xlPasteValues 'вставляем значения '[A1].PasteSpecial xlPasteFormats 'вставляем форматы 'Включаем обновление экрана Application.ScreenUpdating = True End Sub
|
|
|
8
|
Основные форумы / Вопросы по Excel и VBA / Re:КАК ПОЛУЧИТЬ СПИСОК УНИКАЛЬНЫХ(НЕ ПОВТОРЯЮЩИХСЯ) ЗНАЧЕНИЙ?
|
: 21.07.2020, 14:46:30
|
Sub Extract_Unique() Dim x, avArr, li As Long Dim avVals Dim rVals As Range, rResultCell As Range On Error Resume Next 'запрашиваем адрес ячеек для выбора уникальных значений Set rVals = Application.InputBox("Укажите диапазон ячеек для выборки уникальных значений", "Запрос данных", "C2:C51", Type:=8) If rVals Is Nothing Then 'если нажата кнопка Отмена Exit Sub End If 'если указана только одна ячейка - нет смысла выбирать If rVals.Count = 1 Then MsgBox "Для отбора уникальных значений требуется указать более одной ячейки", vbInformation, "www.excel-vba.ru" Exit Sub End If 'отсекаем пустые строки и столбцы вне рабочего диапазона Set rVals = Intersect(rVals, rVals.Parent.UsedRange) 'если указаны только пустые ячейки вне рабочего диапазона If rVals Is Nothing Then MsgBox "Недостаточно данных для выбора значений", vbInformation, "www.excel-vba.ru" Exit Sub End If avVals = rVals.Value 'запрашиваем ячейку для вывода результата Set rResultCell = Application.InputBox("Укажите ячейку для вставки отобранных уникальных значений", "Запрос данных", "A2", Type:=8) If rResultCell Is Nothing Then 'если нажата кнопка Отмена Exit Sub End If 'определяем максимально возможную размерность массива для результата ReDim avArr(1 To Rows.Count, 1 To 1) 'при помощи объекта Коллекции(Collection) 'отбираем только уникальные записи, 'т.к. Коллекции не могут содержать повторяющиеся значения With New Collection On Error Resume Next For Each x In avVals If Len(CStr(x)) Then 'пропускаем пустые ячейки .Add x, CStr(x) 'если добавляемый элемент уже есть в Коллекции - возникнет ошибка 'если же ошибки нет - такое значение еще не внесено, 'добавляем в результирующий массив If Err = 0 Then li = li + 1 avArr(li, 1) = x Else 'обязательно очищаем объект Ошибки Err.Clear End If End If Next End With 'записываем результат на лист, начиная с указанной ячейки If li Then rResultCell.Cells(1, 1).Resize(li).Value = avArr End Sub
|
|
|
9
|
Основные форумы / Вопросы по Excel и VBA / КАК ПОЛУЧИТЬ СПИСОК УНИКАЛЬНЫХ(НЕ ПОВТОРЯЮЩИХСЯ) ЗНАЧЕНИЙ?
|
: 21.07.2020, 13:11:25
|
Здравствуйте, пытаюсь применить для себя Ваш макрос изменив "A2:A51" на "C2:C51", но почему то при запросе данных выдает диапазон "$A:$AY"?, а если другие столбцы то работает. Что делаю не так? Sub Extract_Unique() Dim x, avArr, li As Long Dim avVals Dim rVals As Range, rResultCell As Range On Error Resume Next 'запрашиваем адрес ячеек для выбора уникальных значений Set rVals = Application.InputBox("Укажите диапазон ячеек для выборки уникальных значений", "Запрос данных", "A2:A51", Type:=8) If rVals Is Nothing Then 'если нажата кнопка Отмена Exit Sub End If 'если указана только одна ячейка - нет смысла выбирать If rVals.Count = 1 Then MsgBox "Для отбора уникальных значений требуется указать более одной ячейки", vbInformation, "www.excel-vba.ru" Exit Sub End If 'отсекаем пустые строки и столбцы вне рабочего диапазона Set rVals = Intersect(rVals, rVals.Parent.UsedRange) 'если указаны только пустые ячейки вне рабочего диапазона If rVals Is Nothing Then MsgBox "Недостаточно данных для выбора значений", vbInformation, "www.excel-vba.ru" Exit Sub End If avVals = rVals.Value 'запрашиваем ячейку для вывода результата Set rResultCell = Application.InputBox("Укажите ячейку для вставки отобранных уникальных значений", "Запрос данных", "E2", Type:=8) If rResultCell Is Nothing Then 'если нажата кнопка Отмена Exit Sub End If 'определяем максимально возможную размерность массива для результата ReDim avArr(1 To Rows.Count, 1 To 1) 'при помощи объекта Коллекции(Collection) 'отбираем только уникальные записи, 'т.к. Коллекции не могут содержать повторяющиеся значения With New Collection On Error Resume Next For Each x In avVals If Len(CStr(x)) Then 'пропускаем пустые ячейки .Add x, CStr(x) 'если добавляемый элемент уже есть в Коллекции - возникнет ошибка 'если же ошибки нет - такое значение еще не внесено, 'добавляем в результирующий массив If Err = 0 Then li = li + 1 avArr(li, 1) = x Else 'обязательно очищаем объект Ошибки Err.Clear End If End If Next End With 'записываем результат на лист, начиная с указанной ячейки If li Then rResultCell.Cells(1, 1).Resize(li).Value = avArr End Sub
|
|
|
10
|
Основные форумы / Вопросы по работе в Google-таблицах / Скрипт найти данные в определенной таблице из активного листа, и перенести в опр
|
: 26.02.2020, 20:17:55
|
Здравствуйте, помогите решить проблему. У меня есть Таблица "База данных" в которой хранится информация, и есть таблица "Отправка" в которую я вношу информацию, чтобы отправить ее в таблицу "База данных", но вот, что нужно. Например: 1. В таблице "Отправка" , лист "Инф", я выделяю строку "197". Это может быть любая строка; 2. Вызываю скрипт; 3. Скрипт должен взять данные из ячейки "A197". Так как я выделил строку "197"; 4. Найти их в таблице "База данных", лист "договора", столбец "A:A". Пускай, это будет ячейка "A1203", это может быть любая найденная ячейка столбца "A:A"; 5. И если нашел. То должен скопировать из таблице "Отправка" , лист "Инф", строку "197", с ЗАМЕНОЙ в таблицу "База данных" строку "1203".
|
|
|
11
|
Основные форумы / Вопросы по работе в Google-таблицах / Re:Гугл таблица, как скриптом запустить триггер
|
: 15.02.2020, 19:54:56
|
Ни совсем понял вопрос. Для сотрудника никак не делаю "запрет доступа к Таблице3", да и нет такой функции запрет к таблице. Есть функция кому дать доступ к таблице. В моем случае сотрудник не знает про нее вообще. Единственное можно узнать, это зайти в скрипты "таблицы2" и там по ковыряться и найти, но опять же доступ он к ней не получит, даже если скопирует ссылку, ведь я не давал ему доступ.
|
|
|
12
|
Основные форумы / Вопросы по работе в Google-таблицах / Re:Гугл таблица, как скриптом запустить триггер
|
: 15.02.2020, 19:08:22
|
Вот так: function Copyrrrr() { var sss = SpreadsheetApp.openById('указывае_адресс_с_какой_таблицы_копировать'); var ss = sss.getSheetByName('указывае_имя_с_какого_листа_копировать'); var from = ss; var fromValues = from.getDataRange().getValues(); var fromData = fromValues
var tss = SpreadsheetApp.openById('указывае_адресс_в_какую_таблицу_копировать'); var ts = tss.getSheetByName('указывае_имя_в_какой_лист_копировать'); ts.getRange(ts.getLastRow() + 1, 1, fromData.length, fromData[0].length) .setValues(fromData); }
|
|
|
13
|
Основные форумы / Вопросы по работе в Google-таблицах / Re:Гугл таблица, как скриптом запустить триггер
|
: 15.02.2020, 16:10:13
|
Если нет - то и триггер не сможет, т.к. ему так же будут переданы привилегии вызывающего пользователя. А если да - то и триггер не нужен и заносить можно напрямую скриптом(открыть им нужную таблицу, внести данные и закрыть)
. Вы очень сильно ошибаетесь триггер сможет занести данные из "таблицы2" в "таблицы3", даже если у сотрудника не будет доступа и разрешения к ней. А чтобы скриптом занести данные из "таблицы2" в "таблицы3, нужен доступ к ней и разрешения к ней. Я бы не запаривался, тогда с "таблицы3". На практике проверил.
|
|
|
15
|
Основные форумы / Вопросы по работе в Google-таблицах / Re:Гугл таблица, как скриптом запустить триггер
|
: 13.02.2020, 11:56:04
|
У меня "таблица2" связующая с "таблицой3". Смысл в том, что сотруднику нужно отправить информацию из "таблица1" в "таблица3", но доступ к "таблица3" у него нет, чтобы он не смог увидеть все данные в ней. Поэтому у него есть доступ к "таблица2", а там уже работает триггер. Получается так с "таблица1" скриптом в "таблица2" триггером в "таблица3". А вот здесь можно по подробнее может ко мне подойдет "Можно попробовать идти от обратного: зачем Вам запускать триггер скриптом, если можно в скрипте все тоже самое и прописать?".
|
|
|
|
|