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

Страницы: 1 2 3 4 5 6 След.
Ошибка при создании скриншота
 
Вроде бы получилось:
Код
Sub Range_to_Picture()
    Dim sName As String, wsTmpSh As Worksheet, sPath As String, sFileName As String, Rng As Range
    Dim startCell As String, endCell As String
    Dim width As Double, height As Double

    ' Get the Excel file path
    sPath = ThisWorkbook.Path & Application.PathSeparator

    ' Get the start and end cell addresses from the "Указатели" sheet
    With ThisWorkbook.Sheets("Указатели")
        startCell = .Range("A2").Value
        endCell = .Range("B2").Value
    End With

    ' Get the Excel file name without extension
    sFileName = Left(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".", -1, vbTextCompare) - 1)

    ' Define the range based on the start and end cells
    With ThisWorkbook.Sheets("Данные")
        Set Rng = .Range(startCell & ":" & endCell)
    End With

    ' Calculate the width and height based on the range size
    width = (Rng.Columns.Count * 92.44) ' Adjust multiplier as needed
    height = (Rng.Rows.Count * 33.58) ' Adjust multiplier as needed

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

    Set wsTmpSh = ThisWorkbook.Sheets.Add

    With wsTmpSh.ChartObjects.Add(0, 0, width:=width, height:=height).Chart
        .ChartArea.Border.LineStyle = 0
        .Parent.Select
        Rng.CopyPicture
        .Paste
        .Export fileName:=sPath & sFileName & ".jpg", FilterName:="jpg"
        .Parent.Delete
    End With

    wsTmpSh.Delete
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True

    MsgBox "Картинка сохранена!" & vbNewLine & sPath & sFileName & ".jpg", vbInformation, "Конец"

End Sub
Ошибка при создании скриншота
 
Дмитрий(The_Prist) Щербаков, уже пробовал так. Вот результат:
Ошибка при создании скриншота
 
Тимофеев, Скриншот через PDF работает, а вот другой макрос нет - выдает ошибку method or data member not found в строке oldZoom = wsДанные.Zoom . Сейчас попробую сам устранить ошибку.
Ошибка при создании скриншота
 
Цитата
написал:
и Вы думаете, что это можно исправить на уровне VBA
Да. Можно. Вот я нашел пример макроса, где данный заранее в макрос вбиваются (просто мне этот вариант не подходит):
Код
Sub Range_to_Picture()
    Dim sName As String, wsTmpSh As Worksheet, sPath As String, sFileName As String, Rng As Range
     
    sPath = "e:\2" 'путь для сохранения файла
    If Right(sPath, 1) <> Application.PathSeparator Then sPath = sPath & Application.PathSeparator
     
    'проверяем наличии папки для сохранения, если её нет, то создаём её
    If Dir(sPath, vbDirectory) = "" Then MkDir (sPath)
 
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    With Sheets("Данные")
        Set Rng = .Range("B2:FO73") 'диапазон ячеек
        sFileName = .Range("A1") 'имя файла из ячейки А1
        Rng.CopyPicture
        Set wsTmpSh = ThisWorkbook.Sheets.Add
        With wsTmpSh.ChartObjects.Add(0, 0, width:=15714, height:=2451).Chart
            .ChartArea.Border.LineStyle = 0
            .Parent.Select
            .Paste
            .Export fileName:=sPath & sFileName & ".jpg", FilterName:="jpg"
            .Parent.Delete
        End With
    End With
    wsTmpSh.Delete
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    MsgBox "Картинка сохранена!" & vbNewLine & sPath & sFileName & ".jpg", vbInformation, "Конец"
End Sub
Ошибка при создании скриншота
 
Sanja, Хорошо, если так проще, то вот:  
Код
Sub ОбъединенныйМакрос()

    Dim wsУказатели As Worksheet
    Dim wsДанные As Worksheet
    Dim wsВременный As Worksheet
    Dim начЯчейка As String
    Dim конЯчейка As String
    Dim rngКопировать As Range
    Dim рисунок As Picture
    Dim sName As String
    Dim wsTmpSh As Worksheet

    ' Установим ссылки на нужные листы
    Set wsУказатели = ThisWorkbook.Sheets("Указатели")
    Set wsДанные = ThisWorkbook.Sheets("Данные")

    ' Получим адреса начала и конца диапазона
    начЯчейка = wsУказатели.Range("A2").Value
    конЯчейка = wsУказатели.Range("B2").Value

    ' Определим диапазон на листе "Данные"
    Set rngКопировать = wsДанные.Range(начЯчейка & ":" & конЯчейка)

    ' Создадим временный лист
    On Error Resume Next
    Application.DisplayAlerts = False
    ThisWorkbook.Sheets("ВременныйЛист").Delete
    Application.DisplayAlerts = True
    On Error GoTo 0

    Set wsВременный = ThisWorkbook.Sheets.Add
    wsВременный.Name = "ВременныйЛист"

  Dim i As Long
    Dim j As Long
    Dim начCol As Long, конCol As Long
    Dim начRow As Long, конRow As Long

    начCol = wsДанные.Range(начЯчейка).Column
    конCol = wsДанные.Range(конЯчейка).Column
    начRow = wsДанные.Range(начЯчейка).Row
    конRow = wsДанные.Range(конЯчейка).Row

    ' Копируем ширину столбцов
    For i = начCol To конCol
        wsВременный.Columns(i).ColumnWidth = wsДанные.Columns(i).ColumnWidth
    Next i

    ' Копируем высоту строк
    For j = начRow To конRow
        wsВременный.Rows(j).RowHeight = wsДанные.Rows(j).RowHeight
    Next j

    ' Скопируем диапазон как рисунок на временный лист
    rngКопировать.CopyPicture Appearance:=xlScreen, Format:=xlPicture
    wsВременный.Range(начЯчейка).Select
    wsВременный.Paste

    ' Выделим диапазон на временном листе
    wsВременный.Range(начЯчейка & ":" & конЯчейка).Select

    ' Сохраним диапазон как PNG
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    With wsВременный.Range(начЯчейка & ":" & конЯчейка)
        .CopyPicture
        Set wsTmpSh = ThisWorkbook.Sheets.Add
        sName = ActiveWorkbook.FullName & "_" & ActiveSheet.Name & "_Range"
        With wsTmpSh.ChartObjects.Add(0, 0, .Width, .Height).Chart
            .ChartArea.Border.LineStyle = 0
            .Parent.Select
            .Paste
            .Export Filename:=sName & ".png", FilterName:="PNG"
            .Parent.Delete
        End With
    End With
    wsTmpSh.Delete
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True

    ' Удалим временный лист
    On Error Resume Next
    Application.DisplayAlerts = False
    ThisWorkbook.Sheets("ВременныйЛист").Delete
    Application.DisplayAlerts = True
    On Error GoTo 0

End Sub
Ошибка при создании скриншота
 
В чем суть? На листе "Указатели" в ячейке A2 указана ячейка с листа "Данные", откуда начинается диапазон, а в ячейке B2 указана ячейка с листа "Данные", где заканчивается диапазон. Необходимо сделать скриншот всего диапазона с листа "Данные".

Дело в том, что есть скрытые данные (раздел ячейки "Примечание"), что создает дополнительную проблему. Я нашел выход: создать временный лист, скопировать диапазон на временный лист как рисунок, сохранить диапазон как картинку в формате png, удалить временный лист. Тогда на картинке будут видны скрытые данные.

Но вот выявилась новая проблема: при слишком большом диапазоне качество картинки отвратительное. Текст нечитабелен. Например при диапазоне B2-HG247. Исправить не получается
Псевдо AI Image Renamer
 
Тимофеев, слушай, а ты свой код вообще проверял? Я уже 10 раз пытался запустить, каждый раз вылетала новая ошибка, я ее исправлял, и при повторном запуске находило еще одну ошибку. Я не могу проверить твой код, потому что он абсолютно не рабочий
Псевдо AI Image Renamer
 
Тимофеев, Тимофеев, Спасибо, завтра буду дома - попробую
Псевдо AI Image Renamer
 
В чем суть: нужно автоматически переименовать картинки по принципу похожих картинок. Я взял 10 папок с картинками, по 70-80 картинок в каждой папке. Внутри каждой папки, визуально, одинаковые картинки, а при помощи уже существующих программ (не ИИ) удалось выяснить, что их сходство составляет от 5 до 95 % .

Есть новые 29 картинок (каждая из которых имеет сходства с картинками из какой-нибудь из 10 папок).

На лист "Список" в столбец A вносим адреса и названия всех картинок, которые новые. В столбец B вносим адреса и названия всех картинок, которые старые. Включаем макрос "ЗапуститьОбщийАнализ". У меня обработка всех картинок занимает около 6 минут.

Далее используем макрос "СравнитьИНазватьИзСписка". Формируется папка "Готовые" и туда сбрасываются все новые картинки, попутно меняя название.


Без реального ИИ и Python такое реализовать нормально не получится. Да и я за python не шарю. Но я попытался все сделать исключительно средствами Excel, и, на данный момент, я смог доработать код до того, что из 29 картинок он правильно назвал 9. Я уже не знаю, что можно добавить, чтобы увеличить число.
Изменение в режиме реального времени
 
Цитата
написал:
Посмотрите файл. Что то сделал, сам не знаю что, но как то работает.
Прямо я. Если заработало - это удача. Спасибо, да, всё работает. То, что нужно
Изменение в режиме реального времени
 
Цитата
написал:
как вариант использовать вместо ячейки, элемент ActiveX TextBox
Хоть это и не совсем то, но всё равно спасибо
Изменение в режиме реального времени
 
В столбце A находится список. В ячейке F1 пользователь начинает вводить текст. В столбце B должны выводиться варианты, которые частично или полностью совпадают с тем, что ввел пользователь. Только вот получилось только так: варианты отобразятся только тогда, когда закончить ввод текста в ячейке F1 и нажать Enter. А необходимо в режиме реального времени (хороший пример: гугл/яндекс поисковая строка). Можно ли как-то это сделать средствами Excel?
Сравнение изображений по средствам VBA
 
В чем суть? Нужно переименовать изображения по принципу "похожих картинок" (т.е. ищем похожую картинку, выбираем правильный вариант, нажимаем синюю кнопку). Я знаю, что для этого лучше использовать Python или ИИ, и оба варианта крайне сложны. Я попытался применить сравнение по стандартному хэш-сравнению. Но результаты выдает так себе. Есть ли способ лишь при помощи VBA сделать сравнение куда точнее?
Изменено: Ranker Dark - 24.09.2025 18:13:52
Код VBA неправильно считает данные
 
tutochkin, Я уже разобрался. Буквально пять минут назад нашел решение
Код VBA неправильно считает данные
 
Aлeкceй, Да. Попробуйте воспроизвести макрос и сравните результат с моим ручным подсчетом на Листе 2 и поймете, в чем дело. При выполнении кода VBA должен получиться именно такой результат, как при ручной подсчете
Код VBA неправильно считает данные
 
nilske, Нет. Лист 2 для примера, что должно получится. В итоговой версии его не будет.
Код VBA неправильно считает данные
 
Есть список группировок, которые делятся на разделы. Нужно дать номер группы каждому разделу так, чтобы группировки и разделы не пересекались датами. Но возникает проблема... Код VBA неправильно определяет номер группы. На "листе 2" указаны правильные номера групп. Что я не так сделал? Где в коде ошибка?
Определить номер строки
 
Цитата
написал:
Не все так просто как кажется
Просто логику не могу построить. А так было бы просто
Определить номер строки
 
Sanja, Ну я попытался вот такую формулу использовать, но почему-то неправильно рассчитывает: =СУММПРОИЗВ(--(B5>=B$2:B$78); --(B5<=C$2:C$78))
Определить номер строки
 
Цитата
написал:
Покажите в файле желаемый результат
Хорошо. На листе "Заполненное" пример. А на листе "Microsoft Project" пример того, как это можно выполнить визуально
Определить номер строки
 
Есть список задач, которые нужно добавить на временную шкалу в стиле диаграммы Ганта. Отличие от стандартной диаграммы Ганта в том, что тут новая задача добавляется не новую строку, а на свободную (если такая есть), где одна из предыдущих задач закончилась.

Для этого в Excel производится расчет, дабы определить номер строки. Пробовал разные вариации формул, но ничего не получилось.
Рандом по нескольким условиям
 
В файле-примере три листа.

На каждом листе содержится таблица с колонками "Фамилия", "Количество", "Да/Нет". Рядом с таблицей, рядом с определенной фамилией содержится надпись "new!", если человек не появлялся на предыдущих листах.

В колонке "Да/Нет" производится рандом. Количество "ДА" должно составлять ровно 12 штук. В первую очередь рандомный выбор производится между теми, напротив чьей фамилии стоит надпись "new!". Во вторую очередь рандомный выбор производится между теми, у кого в столбце "количество" стоит 0.

Столбец "Количество" проверяет, сколько "ДА" было у определенного человека на всех предыдущих листах.

И в третью очередь рандомный выбор производится между между остальными.

Как сделать рандом я знаю и как проверить количество на предыдущих листах тоже. Проблема встряла на этапе создание очередей на проверку...
Ошибка в формуле для подстановки и замены части текста
 
Павел \Ʌ/, проверил, но там почти тоже самое, как у вас. Необходимо несколько раз прогонять формулу для нескольких результатов. А в тексте может быть от 0 до 20 штук замен.
Ошибка в формуле для подстановки и замены части текста
 
Павел \Ʌ/, а если как-то так?:

=ЗАМЕНИТЬ(ЗАМЕНИТЬ( [@Текст]; НАЙТИ(Таблица1[English]; [@Текст]); Таблица1[Русский]); НАЙТИ(Таблица1[English]; [@Текст]); Таблица1[Русский])
Ошибка в формуле для подстановки и замены части текста
 
Павел \Ʌ/, т.е. нужно построить через несколько формул в нескольких ячейках?
Ошибка в формуле для подстановки и замены части текста
 
БМВ, т.е., если в глоссарии будет более одной строки, а в тексте более одного совпадения, красное просто убрать, правильно?
Надстройка Excel для проверки падежей
 
Решил на всякий случай тут спросить.

Существует ли надстройка для Excel, которая проверяет правильность падежей и ошибок при использовании рода и меняет на правильный?

Например:

"Мужчина вышла из подъезда" меняет на "Мужчина вышел из подъезда"
"Девушка нашла кот и забрала домой" меняет на "Девушка нашла кота и забрала домой"  
Ошибка в формуле для подстановки и замены части текста
 
Хочу создать свой глоссарий для использования в Excel.
Смысл в чем: есть два листа. На первом глоссарий, на втором текст, который будут переводить. Нужно заменить только часть текста, а нетронутая часть должна остаться с переведенной.

Но видимо, что-то не правильно прописал в формуле.

=ЕСЛИОШИБКА(ПОДСТАВИТЬ(A2;ИНДЕКС(Глоссарий!A:A;ПОИСКПОЗ(A2;Глоссарий!B:B;0));ИНДЕКС(Глоссарий!B:B;ПОИСКПОЗ(A2;Глоссарий!A:A;0)));A2)

По итогу, выдает тот же текст, что и в начале. Где ошибка в формуле?
Excel в сайт
 
БМВ, Простите. Плохо объяснил. В книге есть два листа. Оба листа состоят из области (как область для печати), представляющим визуально страницу html. Между листами есть ссылки, при нажатии на которые переходишь на другой лист.

Необходимо сохранить так, чтобы каждый лист был как отдельный файл, и ссылки между файлами работали. Такое реализуемо?
[ Закрыто] "Особый" фильтр
 
Есть таблица. Содержит колонки "Название", "Дата" и "Доп информация".

Каждый из пунктов принадлежит одному или нескольким отделам. Название пункта может соответствовать названию отдела, а может и нет, поэтому добавлена еще одна колонка "Отдел", где помечено, к какому отделу принадлежит пункт.

На отдельном листе есть список отделов. Можно выбрать как один, так и несколько отделов и показать данные, которые соответствуют выбранным вариантам. Это, в принципе, так же, как и фильтр для таблиц, где можно выбрать один или несколько вариантов, только вынесено отдельно от меню.
Страницы: 1 2 3 4 5 6 След.
Наверх