Как получить имя для Label, на который наведена мышь
Пользователь
Сообщений: Регистрация: 17.12.2015
29.11.2017 12:00:06
Большое спасибо за ваши ответы! Несмотря на то, что сделал криво, через 80 коротких простых кодов, ваши ответы натолкнули меня на понимание, что надо освоить еще один пласт.
Как получить имя для Label, на который наведена мышь
Пользователь
Сообщений: Регистрация: 17.12.2015
26.11.2017 17:12:22
Спасибо, теперь понятно почему давал ошибку. А можно поподробней насчет модуля класса?
Как получить имя для Label, на который наведена мышь
Пользователь
Сообщений: Регистрация: 17.12.2015
26.11.2017 17:01:27
Что-то то типа n=Me.Name, только для того Label, на который сейчас наведена мышь. Допустим у меня есть код (работает):
Код
Private Sub W11D1_mousemove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
W11D1.BackColor = &H808080
End Sub
Вот как сделать так, чтобы вместо W11D1 подставить переменную (допустим n), а n определить как-то так: n=activelabel.name? n=activelabel.name - это я для примера написал, этот код не корректен.
Изменено: - 26.11.2017 17:02:16
Как получить имя для Label, на который наведена мышь
Пользователь
Сообщений: Регистрация: 17.12.2015
26.11.2017 16:53:39
Спасибо. Но мне нужно дать общую команду. У меня этих лэйблов штук 80, я хочу одну команду для любой кнопки, а не для каждой конкретной, чтобы не ковыряться в каждом макросе.
Как получить имя для Label, на который наведена мышь
Пользователь
Сообщений: Регистрация: 17.12.2015
26.11.2017 16:46:44
Добрый день!
Имя нажатой кнопки можно получить например через n=ActiveControl.Name Есть ли возможность получить имя для Label, на которую наведена мышь? При задании такой же команды выдает ошибку object variable or With block variable not set
Как макросом получить имя выделенного объекта, Для иконки вставленного в Excel ole объекта
Пользователь
Сообщений: Регистрация: 17.12.2015
20.07.2017 14:27:23
- да, вариант, предложенный , оказался работающим.
- спасибо.
Вот в каком виде это работает у меня в тестовом файле:
Код
Sub Макрос2()
Dim myObject As OLEObject
Range("O505").Select
Workbooks.Open Filename:= _
"Z:\65_Sales\65_15_Sales_Support\01 BPO\Одно окно\ИНФОРМАЦИОННОЕ ПИСЬМО_реестр\Приложения\089_0501_Опрос магазинов 2.xlsx"
ActiveWindow.Visible = True
Set myObject = ActiveSheet.OLEObjects.Add(Filename:= _
"Z:\65_Sales\65_15_Sales_Support\01 BPO\Одно окно\ИНФОРМАЦИОННОЕ ПИСЬМО_реестр\Приложения\089_0501_Опрос магазинов 2.xlsx" _
, Link:=False, DisplayAsIcon:=True, IconFileName:= _
"C:\Windows\Installer\{90140000-0012-0000-0000-0000000FF1CE}\xlicons.exe", _
IconIndex:=0, IconLabel:= _
"Z:\65_Sales\65_15_Sales_Support\01 BPO\Одно окно\ИНФОРМАЦИОННОЕ ПИСЬМО_реестр\Приложения\089_0501_Опрос магазинов 2.xlsx" _
)
s = myObject.Name
myObject.Select
With Selection
.Placement = xlMoveAndSize
.PrintObject = True
End With
Range("P505").Select
ActiveSheet.Shapes(s).IncrementLeft 20
ActiveSheet.Shapes(s).IncrementTop 60
Workbooks("089_0501_Опрос магазинов 2.xlsx").Close
End Sub
то он при создании объекта создает какие-то книги, котjрые потом нигде кроме VBA редактора не видны, так как имеют свойство ActiveWindow.Visible = false
Команда ActiveSheet.Shapes.Count может оказаться крайне полезной.
- Ваш вариант (собственно его я и имел в виду строкой выше) выглядит для моих целей наверное самым верным, но я его еще не тестировал, поэтому буду пробовать.
Кстати обратил внимание, что в свойствах объекта можно задать Left и Top, но тогда он размещает его не в ячейке, а на соответствующем смещении от верхнего левого угла файла, то есть в районе ячейки A1.
Всем спасибо, по-моему вопрос нашел свое решение, далее буду крутить циклы когда надо будет вставить в ячейку несколько объектов по определенным признакам (например когда название файлов содержит соответствующий номер строки), но это уже другая история.
Как макросом получить имя выделенного объекта, Для иконки вставленного в Excel ole объекта
Пользователь
Сообщений: Регистрация: 17.12.2015
20.07.2017 10:26:36
Ну вот например.
Как макросом получить имя выделенного объекта, Для иконки вставленного в Excel ole объекта
Пользователь
Сообщений: Регистрация: 17.12.2015
20.07.2017 10:12:05
Не работает конечно же, потому что он не понимает, имя чего я у него спрашиваю Надо запрашивать именно имя объекта (shape, oleobject и т.д.). Вот я и пытаюсь понять как это сделать.
Как макросом получить имя выделенного объекта, Для иконки вставленного в Excel ole объекта
Пользователь
Сообщений: Регистрация: 17.12.2015
20.07.2017 10:01:27
Сейчас попробую Вот код, который записал за мной vba (русские символы не вставились, но думаю для примера это не принципиально).
Камень преткновения сейчас для меня - строка ActiveSheet.Shapes("Object 606").IncrementLeft 42.8570866142
Вот в ней я хочу видеть имя активного (или выделенного) значка, потому что оператор with selection прекрасно работает (пробовал отдельно от этой проблемной строки, но в этот оператор я IncrementLeft вставить не могу - выдает ошибку).
Не совсем то. Попробовал для трех ячеек (в одной ничего, в двух других вставлены иконки с разными файлами). Для всех трех случаев выдает значение "Button418"
Попробовал для одной из ячеек сделать ...Shapes(2)... - выдает "Button489"
Получается, что неважно какая ячейка стоит в Вашем примере (Cells(5,5) или что-то другое), он возвращает имя именно для Spapes(1), Shapes(2).... А мне надо найти имя того Shape (или тех Shapes), который выделен в данный момент (ну или на худой конец прикреплен к выделенной ячейке).
Изменено: - 20.07.2017 09:54:50
Как макросом получить имя выделенного объекта, Для иконки вставленного в Excel ole объекта
Пользователь
Сообщений: Регистрация: 17.12.2015
20.07.2017 09:32:50
Добрый день!
Вставляю в ячейку файл - oleobject (не важно чем - диалоговым окном Вставка/объект или макросом). Теперь мне надо получить имя образованной иконки, чтобы ее форматировать (размещение ячейки, свойства и т.д.). К примеру чтобы задать ему координаты требуется строки типа
Но имя его я не знаю и потому не могу к нему обратиться программно. Как макросом получить это имя?
Пробовал строки типа SelectedObject.Name, ActiveObject.Name и т.д. - не работает, выдает ошибку.
С уважением, Алексей
Изменено: - 20.07.2017 13:26:38
Выбор столбца форматированной таблицы в формуле
Пользователь
Сообщений: Регистрация: 17.12.2015
18.12.2015 10:36:15
Немного дописал формулу (у меня например некорректно работала двссыл() из-за того, что сцепить() воспринимала дату как число и не могла сформировать правильный текст для задания диапазона):
Доброе утро! А вообще бы - макрос сделать, который удалял дубликаты и сортировал по алфавиту, из него строить выпадающий список, было бы на порядок удобнее. Судя по файлу там можно и код дописать и кнопку сделать. Ну либо руками - выделить весь список товаров, скопировать на отдельный лист, удалить дубликаты, отсортировать. Далее - полученному диапазону присвоить имя и на это имя ссылаться при формировании выпадающего списка.
=счетесли(смещ(индекс(первая строка в таблице с датами;поискпоз(дата;диапазон дат в таблице с датами;0):индекс());ячейка с номером группы)
Не дописал там окончание массива в смещ индекс:индекс, но принцип такой.
Изменено: - 17.12.2015 18:27:30
Макросом эксель взять word doc и сохранить как .pdf
Пользователь
Сообщений: Регистрация: 17.12.2015
17.12.2015 18:15:24
Казанский, спасибо за наводку, покопаюсь завтра. Правда не очень понял, что есть значение константы, но попробую разобраться.
С уважением, Алексей
Изменено: - 17.12.2015 18:16:04
Макросом эксель взять word doc и сохранить как .pdf
Пользователь
Сообщений: Регистрация: 17.12.2015
17.12.2015 17:50:28
Доброго времени суток!
Нужно макросом в эксель взять файл word doc и сохранить его в формате pdf
Вымучил код, который позволяет макросом экселя открывать требуемый word файл, вставлять инфу из экселя в закладки и сохранять как файл/ файлы word. Но хочется, чтобы это был не ворд, а pdf. Это вообще возможно?
Вот сам код (упростил все что мог, чтобы не перегружать лишним): а вот такая кнопка для оформления кода - <...>
Код
Set wa = CreateObject("Word.Application")
wa.Visible = True
Company = Cells(2, 1).Value
Set wd = wa.documents.Open("C:\Файл1.docx")
'Вставляем название компании из экселя в место, на которое ссылается заранее сделанная закаладка "Название_компании"
wd.Bookmarks("Название_компании").Range.Text = Company
'Это сохраняет файл как ворд под другим именем в ту же папку, это работает:
wd.SaveAs Filename:="C:\Файл2.docx"
'Это я взял из вордовского макроса, это в экселе не работает:
'wd.ChangeFileOpenDirectory "C:\"
'wd.ActiveDocument.ExportAsFixedFormat OutputFileName:= _
"C:\Файл2.pdf", _
ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
Item:=wdExportDocumentContent, IncludeDocProps:=False, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=False, _
BitmapMissingFonts:=True, UseISO19005_1:=False
'Это я пробовал варианты кода, это в экселе тоже не работает:
'wd.ExportAsFixedFormat OutputFileName:="C:\Файл2.pdf", _
ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
Item:=wdExportDocumentContent, IncludeDocProps:=False, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=False, _
BitmapMissingFonts:=True, UseISO19005_1:=False
'Это вариация, которую я тоже попробовал, и которая тоже не работает:
wd.ExportAsFixedFormat OutputFileName:="C:\Файл2.pdf", ExportFormat:=wdExportFormatPDF
wd.Close True
wa.Quit
Set wa = Nothing