Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
надстройка на VSTO язык vb.net, регистрация пользовательских функций
 
Добрый день пытаюсь сделать свою надстройку на  VSTO язык vb.net  команды различные работаю, но с функциями проблемы, причем в тестах на VSTO  функции работаю идеально, но в обычном режиме эксель не видит этих функций их нет в списке.  При компиляции никаких ошибок нет ? регистрацию делаю через regasm.exe. в чем может быть причина ?
Внешние ссылки, Удаление внешних ссылок из пользовательских функций
 
Добрый день, подскажите что нужно сделать что бы при копировании файла в моих функциях не появлялись внешние ссылки? Я сделал себе надстройку эксель с расширением xlam, написал функции и в этих функциях появляются такие ссылки "'C:\Users\******\Desktop\НАДСТРОЙКА_ПЕВ\Надстройка.xlam'!ПРОСМОТРИСКЛ" тоесть это путь к моей надстройке.
Сразу хотелось бы уточнить если надстройка будет с расширением COM, эти ссылки тоже будут ?
Перемещение строки, Перемещение строки вниз под нажатию кнопки
 
Здравствуйте, у меня есть макрос который выделенную строку (код определяет по выделенной ячейке) перемещает вверх, но теперь нужно что бы было тоже самое, но перемещал строку вниз, но у меня не получается, помогите пожалуйста подправить код.
Скрытый текст
Изменено: Sanja - 29.07.2024 04:41:17 (Длинный код можно скрывать под спойлер. Тэг SP)
Макросы в надстройке, Переименовывание листов через надстройку
 
Здравствуйте, у меня есть макрос который переименовывает текущие листы на заданные имена, на листе в одном столбце текущие имена листов на втором новые имена и макросу нужно указать эти столбцы и он переименует эти листы, проблема в том что макрос работает в обычной книге, а я хочу запускать через надстройку, и тут он не работает, могли бы подсказать как исправить ?
Код
Sub RenameSheetsBasedOnSelectedColumns()
    Dim ws As Worksheet
    Dim newName As String
    Dim i As Long
    Dim oldNameColumn As Long, newNameColumn As Long
    Dim lastRow As Long
    Dim rng As Range, cell As Range
    
    On Error Resume Next ' Включаем обработку ошибок
    
    ' Запрос у пользователя на выбор столбцов с текущими и новыми именами листов
    oldNameColumn = Application.InputBox("Выберите столбец с текущими именами листов:", Type:=8).Column
    If oldNameColumn = 0 Then
        MsgBox "Выбор столбца с текущими именами отменен или выполнен некорректно."
        Exit Sub
    End If
    
    newNameColumn = Application.InputBox("Выберите столбец с новыми именами листов:", Type:=8).Column
    If newNameColumn = 0 Then
        MsgBox "Выбор столбца с новыми именами отменен или выполнен некорректно."
        Exit Sub
    End If
    
    On Error GoTo 0 ' Выключаем обработку ошибок
    
    ' Определяем последнюю заполненную строку в выбранном столбце с текущими именами
    Set rng = Columns(oldNameColumn).SpecialCells(xlCellTypeConstants)
    If rng Is Nothing Then
        MsgBox "Столбец с текущими именами листов не содержит заполненных ячеек."
        Exit Sub
    End If
    lastRow = rng.Cells(rng.Cells.Count).Row
    
    Application.ScreenUpdating = False ' Отключаем обновление экрана для улучшения производительности
    
    ' Цикл по каждой строке с данными
    For Each cell In rng
        i = cell.Row
        
        ' Получаем текущее и новое имя
        oldName = Trim(Cells(i, oldNameColumn).Value) ' Убираем пробелы в начале и конце строки
        newName = Cells(i, newNameColumn).Value
        
        ' Проверяем, существует ли лист с текущим именем
        On Error Resume Next
        Set ws = ThisWorkbook.Sheets(oldName)
        On Error GoTo 0
        
        If Not ws Is Nothing Then
            ' Если лист существует, переименовываем его
            ws.Name = newName
        Else
            ' Если лист не существует, выводим сообщение об ошибке
            MsgBox "Лист с именем '" & oldName & "' не найден."
        End If
    Next cell
    
    Application.ScreenUpdating = True ' Включаем обновление экрана обратно
    
    MsgBox "Процесс переименования завершен."
End Sub

Своя надстройка, Вставка свей иконки
 
Здравствуйте, подскажите как правильно экспортировать свое изображение для кнопки в RibbonXMLEdito. Скачиваю в формате png, вставляю, но в тесте ничего не видно. Скачивал формат png, размеры пробовал разные. Если можно подскажите сайты с которых можно скачивать, (https://www.spreadsheet1.com/office-excel-ribbon-imagemso-icons-gallery-page-01.html   этот сайт смотрел.)
Добавление строк, Добавление пустых строк после повторяющихся данных в ячейках с добавлением формулы сумирования
 
Здравствуйте,  может кто подсказать как сделать добавление пустых строк после повторяющихся данных в ячейках с добавлением формулы суммирования.
Код
Sub InsBeforeNewName()
  Dim r&: r = 10
  Do While Not IsEmpty(Cells(r, 5))
    If Cells(r, 5) <> Cells(r - 1, 5) Then Rows(r).Insert: r = r + 2 Else r = r + 1
  Loop
End Sub
я нашел макрос который добавляет строки как мне нужно, но еще нужно суммировать диапазоны  размеры которого будут меняться. суммировать именно формулой.
Пример прилагаю
Сумvирование в PQ, суммирование в PQ на языке М
 
Здравствуйте, подскажите пожалуйста как просуммировать значения в сгруппированной таблице.
примерно как у Павлова https://www.planetaexcel.ru/techniques/7/205/ , но мне из такой же таблицы нужно просуммировать значения. не могу правильно задать синтаксис .
я накидал такое : = List.Sum([Количество],"Пользовательский")  
Количество - таблица
Пользовательский - имя столбца этой таблицы.
Объединение ячеек по дублирующимся значениям., Объединение ячеек по повторяющимся значениям в заданных столбцах
 
Здравствуйте, не могу подправить готовый макрос суть в том что нужно объединить повторяющиеся значения, но только в тех столбах которые задаются мной, столбцы могут быть разные.
Макрос прилагаю (взят отсюда) )

на скрине пример показан что нужно задать макросу обработать столбец "Е" и "G"; остальное не трогать даже если там будут дубликаты.
Код
Sub dsd()
Dim i As Long
Dim n As Long
Dim lr As Long

Application.ScreenUpdating = False
Application.DisplayAlerts = False

lr = Cells(Rows.Count, 1).End(xlUp).Row
For i = lr To 6 Step -1
    If Cells(i, 1) = Cells(i - 1, 1) Then
        k = k + 1
    Else
        For n = 1 To 1
        Range(Cells(i, n), Cells(i + k, n)).Merge
        Next n
        k = 0
    End If
Next i

Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Изменено: Евген1788 - 16.12.2023 09:12:46 (орфография)
как через Node.js сохранять книги эксель?
 
Здравствуйте, может кто подсказать как через Node.js делать сохранение имеющейся книги эксель?
искал тут  npm | build amazing things (npmjs.com) , но не смог найти как правильно.
проблема в том что использую софт (BrowserAutomationStudio) он читает ячейку вносит изменения и читаемая ячейка меняет значение, он должен считать это новое значение, но софт видит последнее значение после открытия файла, нужен код в софт что бы он просто делал каждый раз действие сохранить
[ Закрыто] ошибка в формуле, ошибка в формуле
 
Здравствуйте, произошла не понятная ошибка, вчера сделал формулу все работало, сегодня делаю точно так же выдает ошибку, в чем может быть причина, эксель 2019
Изменено: Евген1788 - 23.08.2020 12:58:55
Макрос для деления на строки выдает ошибку, если в ячейке нет переноса строки
 
Здравствуйте, нашел макрос Н. Павлова

https://www.planetaexcel.ru/techniques/7/7615/

Столкнулся с такой проблемой например имеется 5 ячеек с данными. в первых двух имеется перенос, в третьей нету переноса в 4 и 5 снова перенос. При выделении всех 5 ячеек макрос выдает ошибку и делает работу до 3 ячейки. Тоесть он прерывается если нету переноса.  можно это как то обойти ?
Код
Sub Split_By_Rows()   
 Dim cell As Range, n As Integer
     Set cell = ActiveCell
     For i = 1 To Selection.Rows.Count
        ar = Split(cell, Chr(10))         'делим текст по переносам в массив
        n = UBound(ar)                    'определяем кол-во фрагментов
        cell.Offset(1, 0).Resize(n, 1).EntireRow.Insert             'вставляем пустые строки ниже
        cell.Resize(n + 1, 1) = WorksheetFunction.Transpose(ar)     'вводим в них данные из массива
        Set cell = cell.Offset(n + 1, 0)                            'сдвигаемся на следующую ячейку
    Next i
End Sub
Изменено: Евген1788 - 23.08.2020 13:06:13
Подсчет колличества объектов в эксель, Подсчет колличества объектов в эксель
 
Здравствуйте, подскажите как на листе эксель, можно узнать количество объектов (в частности интересует колличество изображений), есть ли стандартные инструменты, или макросы ?
Вставить изображение в ячейку эксель програмно, Вставить изображение в ячейку эксель програмно
 

Здравствуйте, нашел отличный макрос у Дмитрия Щербакова (не знаю можно ли на другой сайт оставлять ссылку)

Помогите пожайлуста добавить следующее (что возможно из списка ниже):

1.       Размеры картинки подгонялись под размеры ячейки (по вертикали и горизонтали), сейчас макрос делает только по вертикали

2.       можно было задать разрешение

3.       Поиск фото по нескольким папкам (например есть папка «Товар» внутри этой папки картинки по категориям «Категория1» Категория2» итд, в макросе указать путь к папке «Товар» и он по категориям просматривал и вставлял нужное фото)

4.       Можно было вставлять изображение  по имени, или по гиперссылке.

Код
Sub InsertPictureByVal()
    Dim sPicsPath As String
    Dim sPicName As String, sPFName As String, sSpName As String
    Dim llastr As Long, lr As Long
    Dim oShp As Shape
    Dim zoom As Double
    
    'выбираем путь к папке с картинками
   
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Выбрать папку с картинками"       'заголовок окна диалога
        .ButtonName = "Выбрать папку"
        .Filters.Clear                              'очищаем установленные ранее типы файлов
        .InitialFileName = ThisWorkbook.Path        'назначаем первую папку отображения
        .InitialView = msoFileDialogViewLargeIcons  'вид диалогового окна
        If .Show = 0 Then Exit Sub               'показываем диалог
        sPicsPath = .SelectedItems(1) 'считываем путь к папке
    End With
    '   если путь надо указать статичный - вместо диалога прописываем одну строку
    '   sPicsPath = "C:\images\"
    
    
    'проверяем, есть ли слеш после пути к папке
    'если нет - добавляем, иначе путь к картинке будет неверный
    If Right(sPicsPath, 1) <> Application.PathSeparator Then
        sPicsPath = sPicsPath & Application.PathSeparator
    End If
    'определяем последнюю ячейку по столбцу с именами картинок
    llastr = Cells(Rows.Count, 2).End(xlUp).Row
    'если кроме шапки в столбце с именами картинок ничего нет
    If llastr < 2 Then
        Exit Sub
    End If
    'цикл по столбцу с именами картинок
    For lr = 2 To llastr
        sPicName = Cells(lr, 2).Value
        'проверяем наличие картинки в папке
        sPFName = sPicsPath & sPicName
        If Dir(sPFName, 16) <> "" And sPicName <> "" Then
            'в эту ячейку вставляем картинку
            With Cells(lr, 3)
                
                'задаем картинке уникальный адрес,
                'привязанный к адресу ячейки
                sSpName = "_" & .Address(0, 0) & "_autopaste"
                'если картинка уже есть - удаляем её
                Set oShp = Nothing
                On Error Resume Next
                Set oShp = ActiveSheet.Shapes(sSpName)
                If Not oShp Is Nothing Then
                    oShp.Delete
                End If
                On Error GoTo 0
                'вставляем выбранную картинку
                Set oShp = ActiveSheet.Shapes.AddPicture(sPFName, False, True, .Left + 1, .Top + 1, -1, -1)
                'определяем размеры картинки в зависимости от размера ячейки
                zoom = Application.Min(.Width / oShp.Width, .Height / oShp.Height)
                oShp.Height = oShp.Height * zoom - 2
                'переименовываем вставленную картинку(чтобы потом можно было заменить)
                oShp.Name = sSpName
            End With
        End If
    Next
End Sub
Изменено: Евген1788 - 15.08.2020 23:46:56
Вставить изображение в ячейку эксель, Вставить изображение в ячейку эксель
 
Здравствуйте, нашел макрос автор (AAF)
Код
Sub InsertPic(Optional ByVal rngPic As Range, Optional pathPic As String, Optional ByVal namePic As String)
If rngPic Is Nothing Then Set rngPic = ActiveCell
If pathPic = "" Then pathPic = rngPic.Value
On Error Resume Next
With rngPic.Parent.Pictures.Insert(pathPic)
  If namePic <> "" Then .Name = namePic
  .Top = rngPic.Top
  .Height = rngPic.Height
End With
On Error GoTo 0
End Sub

Sub InsertPictures()
InsertPic
End Sub

Можно ли как то сделать что бы выделить диапозон ячеек с сылками и вставлялось несколько картинок в эти ссылки, данный макрос работает с одной ссылкой
Импорт из Ворд в ячейку эксель
 

Здравствуйте, помогите пожалуйста доработать  немного макрос, (Автор DANIKOLA), все работает отлично, но немного нужно докрутить.
Данный макрос переходит по ссылке открывает ворд и копирует данные, но если структура ворда табличная он копирует только первую ячейку таблицы,  если ворд без таблиц копирует и вставляет в эксель все, (все примеры в приложеном файле), также если в начале идет фото, то ничего не копирует.
Можно ли как то докрутить что бы он копировал все подряд без разбору и вставлял в ячейку в эксель без форматирования просто обычные данные.?
И еще момент, ворд доков может быть много и возможно будут поврежденные, можно ли заложить что если не открывается пропускать его и код работает дальше?

Импорт данных из ворда в Эксель, Импорт данных из ворда в Эксель
 
Здравствуйте, имеется множество в ворде анкет, необходимо их импортировать в эксель, в одну ячейку одна анкета.
в экселе имеется гиперссылка на документ, нужно по этой ссылке открыть ворд, все выделить, скопировать и все вставить в одну ячейку, и так пройтись по всему списку.
Кто знает как это можно автоматизировать
в приложенном файле показано как нужно вставлять данные
Добавление пустых строк по условию, Добавление пустых строк по условию
 
Здравствуйте, нашел тут на форуме замечательный макрос,
Скрытый текст
который добавляет строки по значению из столбца, то есть если значение 1 добавит +1 строку,  знач 2 добавит +2, итд  но мне нужно что бы при значении 1 ничего не добавил, при значении 2 добавил +1 строку и тд, помогите пожалуйста, что нужно исправить.
Изменено: Евген1788 - 06.07.2020 20:12:23
Парсинг сайта в Гугл таблицу, не работает функция IMPORTXML,
 
Здравствуйте, наткнулся как можно делать не сложный парсинг в гугл таблицу, но столкнулся с проблемой. не работает функция IMPORTXML
сайт с которого беру инфу : https://www.fl.ru/projects/  заголовки я смог вытащить, не могу вытащить описание, я нашел что строка отвечающая за описание это : <div class="b-post__txt "> до 7 дней,  отрисовать заданный лого (пример внизу в файле на коричневом фоне) и разработать написание (пример шрифта внизу в файле как  – ABEILLE ROYAL)  –  для салона... </div> , (хотя могу и ошибаться со строкой, я это делал первый раз) я пробовал  задать следующим образом:
//div[@ class='b-post__txt' ] выдает ошибку, подскажите что не так делаю.
Делал следующим способом
в ячейке А1 = https://www.fl.ru/projects/
              А2 = //div[@ class='b-post__txt' ]
              А3  =IMPORTXML($A$1;A2)
Разделение таблицы по разным листам (разделениея по менеджерам)
 
Здравствуйте, нашел здесь на форуме макрос (сам в ВБА я ноль), который таблицу по заданному диапазону делит на листы. Когда задаю делить по столбцу А1:А  работает отлично, сейчас в примере делает не правильно (в примере показано как он делит сейчас), хочу на листе "Итог" разнести по менеджерам столбец Е, помогите пожалуйста какую строчку надо править еще что бы в дальнейшем я мог назначать любой столбец, если у кого есть лучше макрос буду рад ))
[ Закрыто] Подправить макрос, исправить готовый макрос
 
Здравствуйте, нашел здесь на форуме макрос (сам в ВБА я ноль), который таблицу по заданному диапазону делит на листы. Когда задаю делить по столбцу А1:А  работает отлично, сейчас в примере делает не правильно (в примере показано как он делит сейчас), хочу на листе "Итог" разнести по менеджерам столбец Е, помогите пожалуйста какую строчку надо править еще что бы в дальнейшем я мог назначать любой столбец, если у кого есть лучше макрос буду рад ))
[ Закрыто] Разбить данные диапозона по листам, Добрый день, нужно найти макрос который будет выполнять задачу как надстройка PLEX
 
 По выбранному диапазону разнести данные на листы, имена листов брать из диапазона (или что бы можно в макросе например задать нумерацию)
Страницы: 1
Наверх