Здравствуйте. Помогите, пожалуйста, создать макрос, который создавал бы примечание в нужной ячейке с определенными параметрами. 1. Размер примечания -- 8см на 8см. 2. Удалял подпись владельца компьютера из тела примечания (текста примечания не будет, будет только картинка в фоне, чтобы при наведении курсора, она показывалась бы. 3. Открывал папку, из которой я выбирал бы рисунок для фона примечания.
В результате должно получиться что-то похожее на пример из вложения.
Здравствуйте. Помогите, пожалуйста, создать макрос, который создавал бы примечание в нужной ячейке с определенными параметрами. 1. Размер примечания -- 8см на 8см. 2. Удалял подпись владельца компьютера из тела примечания (текста примечания не будет, будет только картинка в фоне, чтобы при наведении курсора, она показывалась бы. 3. Открывал папку, из которой я выбирал бы рисунок для фона примечания.
В результате должно получиться что-то похожее на пример из вложения.pavelselected
Апострофф, Нет, это не очень важно. Тем более, что если у меня будет тело макроса, то я смогу в редакторе уже подправить нужные параметры. Или не смогу?) Я пытался записать макрос, но он, почему-то не записывает мои нажатия в параметрах примечания.
Апострофф, Нет, это не очень важно. Тем более, что если у меня будет тело макроса, то я смогу в редакторе уже подправить нужные параметры. Или не смогу?) Я пытался записать макрос, но он, почему-то не записывает мои нажатия в параметрах примечания.pavelselected
Dim rng As Range, Shp As Shape Set rng = Range("a1") Set com = rng.AddComment(" ") Set Shp = com.Shape Shp.Width = 200 Shp.Height = 200 Shp.Fill.UserPicture "C:\Users\Сергей\Downloads\PB-#1.gif"
[/vba]
Для тела годится?[vba]
Код
Dim rng As Range, Shp As Shape Set rng = Range("a1") Set com = rng.AddComment(" ") Set Shp = com.Shape Shp.Width = 200 Shp.Height = 200 Shp.Fill.UserPicture "C:\Users\Сергей\Downloads\PB-#1.gif"
Почти. Там на каждую ячейку будет своя картинка. Возможно это сделать так, чтобы он предлагал выбрать картинку из папки вручную? Или как-то прописать в теле макроса, чтобы он в формате "2-200.png" Первую двойку брал из значения в столбце A, а 200 -- это значение из строки 4. Т.е. если активная ячейка D10, то в ячейке А10 будет значение "2", а в ячейке D4 - "200", и в нашей активной D10, после срабатывания макроса, появится примечание с фоном от картинки с именем "2-200.png"
Как-то так должно работать. Нужно будет сделать для нескольких сотен расчетов визуализацию для запоминания, но кажется, что много времени уходит на ручное форматирование примечаний.
Почти. Там на каждую ячейку будет своя картинка. Возможно это сделать так, чтобы он предлагал выбрать картинку из папки вручную? Или как-то прописать в теле макроса, чтобы он в формате "2-200.png" Первую двойку брал из значения в столбце A, а 200 -- это значение из строки 4. Т.е. если активная ячейка D10, то в ячейке А10 будет значение "2", а в ячейке D4 - "200", и в нашей активной D10, после срабатывания макроса, появится примечание с фоном от картинки с именем "2-200.png"
Как-то так должно работать. Нужно будет сделать для нескольких сотен расчетов визуализацию для запоминания, но кажется, что много времени уходит на ручное форматирование примечаний.pavelselected
Пока кажется, что это можно сделать через цикл, если заранее насохранять картинки с именем ячейки. Наверняка, VBA умеет подставлять в имя файла значение переменной.
Или перед запуском макроса как-то предложить указать картинку вручную?
Подскажите, пожалуйста, возможно создать в макросе диалоговое окно с возможностью выбора файла для картинки?
Пока кажется, что это можно сделать через цикл, если заранее насохранять картинки с именем ячейки. Наверняка, VBA умеет подставлять в имя файла значение переменной.
Или перед запуском макроса как-то предложить указать картинку вручную?
Подскажите, пожалуйста, возможно создать в макросе диалоговое окно с возможностью выбора файла для картинки?pavelselected
Dim rng As Range, Shp As Shape, com Dim FilePath FilePath = Application.GetOpenFilename _ (FileFilter:="Image Files (*.jpg;*.png;*.gif), *.jpg;*.png;*.gif", _ MultiSelect:=False, Title:="File for comment")
If FilePath <> False Then Set rng = Range("a1") rng.ClearComments Set com = rng.AddComment(" ") Set Shp = com.Shape Shp.Width = 200 Shp.Height = 200 Shp.Fill.UserPicture FilePath End If
Dim rng As Range, Shp As Shape, com Dim FilePath FilePath = Application.GetOpenFilename _ (FileFilter:="Image Files (*.jpg;*.png;*.gif), *.jpg;*.png;*.gif", _ MultiSelect:=False, Title:="File for comment")
If FilePath <> False Then Set rng = Range("a1") rng.ClearComments Set com = rng.AddComment(" ") Set Shp = com.Shape Shp.Width = 200 Shp.Height = 200 Shp.Fill.UserPicture FilePath End If
Здравствуйте. Помогите, пожалуйста, доработать макрос для моих странных целей. Есть такой, из сообщений выше:
Цитата
[vba]
Код
Sub Макрос1() ' Dim rng As Range, Shp As Shape, com Dim FilePath FilePath = Application.GetOpenFilename _ (FileFilter:="Image Files (*.jpg;*.png;*.gif), *.jpg;*.png;*.gif", _ MultiSelect:=False, Title:="File for comment")
If FilePath <> False Then Set rng = ActiveCell rng.ClearComments Set com = rng.AddComment(" ") Set Shp = com.Shape Shp.Width = 200 Shp.Height = 200 Shp.Fill.UserPicture FilePath End If End Sub
[/vba]
Он прекрасно работает, но желание автоматизировать полностью зудит.
Как можно сделать так, чтобы вместо активной ячейки, я выделял прямоугольный диапазон ячеек (D4-W17, в примере), и макрос автоматически подставлял нужные картинки в каждую ячейку. Формат картинок "Х-У.png", где Х-значение в столбце, слева от выделенного диапазона от 2 до 30, например. А У- значение в строке, сверху выделенного диапазона от 50 до 1000, с шагом 50, как в примере во вложении. То есть - я указываю папку со скриншотами в редакторе макроса, и он автоматически расставляет все имеющиеся картинки, удовлетворяющие условиям, в нужные ячейки выделенного диапазона.
Готов угостить кофе (или пивом) за работающий вариант.
Здравствуйте. Помогите, пожалуйста, доработать макрос для моих странных целей. Есть такой, из сообщений выше:
Цитата
[vba]
Код
Sub Макрос1() ' Dim rng As Range, Shp As Shape, com Dim FilePath FilePath = Application.GetOpenFilename _ (FileFilter:="Image Files (*.jpg;*.png;*.gif), *.jpg;*.png;*.gif", _ MultiSelect:=False, Title:="File for comment")
If FilePath <> False Then Set rng = ActiveCell rng.ClearComments Set com = rng.AddComment(" ") Set Shp = com.Shape Shp.Width = 200 Shp.Height = 200 Shp.Fill.UserPicture FilePath End If End Sub
[/vba]
Он прекрасно работает, но желание автоматизировать полностью зудит.
Как можно сделать так, чтобы вместо активной ячейки, я выделял прямоугольный диапазон ячеек (D4-W17, в примере), и макрос автоматически подставлял нужные картинки в каждую ячейку. Формат картинок "Х-У.png", где Х-значение в столбце, слева от выделенного диапазона от 2 до 30, например. А У- значение в строке, сверху выделенного диапазона от 50 до 1000, с шагом 50, как в примере во вложении. То есть - я указываю папку со скриншотами в редакторе макроса, и он автоматически расставляет все имеющиеся картинки, удовлетворяющие условиям, в нужные ячейки выделенного диапазона.
Готов угостить кофе (или пивом) за работающий вариант.pavelselected
Sub для_моих_странных_целей() Dim Sh As Worksheet, RangeX, RangeY, Rng As Range, cel As Range Set Sh = ActiveSheet Folder = "C:\mmm" RangeY = Sh.Range("A3:W3") RangeX = Sh.Range("C1:C17") Set Rng = Application.InputBox(Prompt:="выбираем диапазон внутри координат ", _ Title:="Выбор диапазона", Type:=8) With CreateObject("Scripting.FileSystemObject") For Each cel In Rng.Cells If cel.Row <= UBound(RangeX) And cel.Column <= UBound(RangeY, 2) Then X = RangeX(cel.Row, 1) Y = RangeY(1, cel.Column) Filename = X & "-" & Y & ".png" FilePath = .BuildPath(Folder, Filename) If .FileExists(FilePath) Then cel.ClearComments Set com = cel.AddComment(" ") Set Shp = com.Shape Shp.Width = 200 Shp.Height = 200 Shp.Fill.UserPicture FilePath End If End If Next End With End Sub
[/vba]
И я немного странный, очень люблю джин [vba]
Код
Sub для_моих_странных_целей() Dim Sh As Worksheet, RangeX, RangeY, Rng As Range, cel As Range Set Sh = ActiveSheet Folder = "C:\mmm" RangeY = Sh.Range("A3:W3") RangeX = Sh.Range("C1:C17") Set Rng = Application.InputBox(Prompt:="выбираем диапазон внутри координат ", _ Title:="Выбор диапазона", Type:=8) With CreateObject("Scripting.FileSystemObject") For Each cel In Rng.Cells If cel.Row <= UBound(RangeX) And cel.Column <= UBound(RangeY, 2) Then X = RangeX(cel.Row, 1) Y = RangeY(1, cel.Column) Filename = X & "-" & Y & ".png" FilePath = .BuildPath(Folder, Filename) If .FileExists(FilePath) Then cel.ClearComments Set com = cel.AddComment(" ") Set Shp = com.Shape Shp.Width = 200 Shp.Height = 200 Shp.Fill.UserPicture FilePath End If End If Next End With End Sub
doober, я правильно понимаю, что если таблица будет ниже, то я указываю RangeY как, например A26:W26, а RangeX С1:С40, ну, с такими вводными макрос сработал на таблице, которая была ниже на несколько ячеек. А макрос будет работать если таблица будет ниже и сдвинута относительно столбца C? Или если таблица будет правее, и в строке будут другие данные вначале? То есть, вопрос в том, какие данные мне ввести в макрос в значения Range, если активные таблицы будут разбросаны в случайном порядке по большому листу?
И напишите, куда угощение отправить, киви там, или ymoney, или еще как-нибудь)
doober, я правильно понимаю, что если таблица будет ниже, то я указываю RangeY как, например A26:W26, а RangeX С1:С40, ну, с такими вводными макрос сработал на таблице, которая была ниже на несколько ячеек. А макрос будет работать если таблица будет ниже и сдвинута относительно столбца C? Или если таблица будет правее, и в строке будут другие данные вначале? То есть, вопрос в том, какие данные мне ввести в макрос в значения Range, если активные таблицы будут разбросаны в случайном порядке по большому листу?
И напишите, куда угощение отправить, киви там, или ymoney, или еще как-нибудь)pavelselected
Сообщение отредактировал pavelselected - Пятница, 19.03.2021, 00:45
Диапазон прописывается любой. Условия вертикаль обязательно с первой строки, горизонталь с первого столбца в макросе RangeY = Sh.Range("A строка:буква столбца строка") RangeX = Sh.Range("буква столбца 1:буква столбца строка") Рабочая область не обязательно начинается с первой ячейки, так как в файле.Макрос проверяет , что обе координаты не пусты и находятся внутри области. Макрос проверяет наличие файла в папке, если его нет, то и выводить не будет. На нескольких диапазонах макрос не работает.В конкретном примере работает внутри оранжевой подсветки
Диапазон прописывается любой. Условия вертикаль обязательно с первой строки, горизонталь с первого столбца в макросе RangeY = Sh.Range("A строка:буква столбца строка") RangeX = Sh.Range("буква столбца 1:буква столбца строка") Рабочая область не обязательно начинается с первой ячейки, так как в файле.Макрос проверяет , что обе координаты не пусты и находятся внутри области. Макрос проверяет наличие файла в папке, если его нет, то и выводить не будет. На нескольких диапазонах макрос не работает.В конкретном примере работает внутри оранжевой подсветкиdoober
Сообщение отредактировал doober - Пятница, 19.03.2021, 10:50