Большое спасибо за ваши ответы! Несмотря на то, что сделал криво, через 80 коротких простых кодов, ваши ответы натолкнули меня на понимание, что надо освоить еще один пласт.
Что-то то типа 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 - это я для примера написал, этот код не корректен.
Спасибо. Но мне нужно дать общую команду. У меня этих лэйблов штук 80, я хочу одну команду для любой кнопки, а не для каждой конкретной, чтобы не ковыряться в каждом макросе.
Имя нажатой кнопки можно получить например через n=ActiveControl.Name Есть ли возможность получить имя для Label, на которую наведена мышь? При задании такой же команды выдает ошибку object variable or With block variable not set
то он при создании объекта создает какие-то книги, котjрые потом нигде кроме VBA редактора не видны, так как имеют свойство ActiveWindow.Visible = false
Команда ActiveSheet.Shapes.Count может оказаться крайне полезной.
AndreTM - Ваш вариант (собственно его я и имел в виду строкой выше) выглядит для моих целей наверное самым верным, но я его еще не тестировал, поэтому буду пробовать.
Кстати обратил внимание, что в свойствах объекта можно задать Left и Top, но тогда он размещает его не в ячейке, а на соответствующем смещении от верхнего левого угла файла, то есть в районе ячейки A1.
Всем спасибо, по-моему вопрос нашел свое решение, далее буду крутить циклы когда надо будет вставить в ячейку несколько объектов по определенным признакам (например когда название файлов содержит соответствующий номер строки), но это уже другая история.
Не работает конечно же, потому что он не понимает, имя чего я у него спрашиваю Надо запрашивать именно имя объекта (shape, oleobject и т.д.). Вот я и пытаюсь понять как это сделать.
Сейчас попробую Вот код, который записал за мной vba (русские символы не вставились, но думаю для примера это не принципиально).
Камень преткновения сейчас для меня - строка ActiveSheet.Shapes("Object 606").IncrementLeft 42.8570866142
Вот в ней я хочу видеть имя активного (или выделенного) значка, потому что оператор with selection прекрасно работает (пробовал отдельно от этой проблемной строки, но в этот оператор я IncrementLeft вставить не могу - выдает ошибку).
Не совсем то. Попробовал для трех ячеек (в одной ничего, в двух других вставлены иконки с разными файлами). Для всех трех случаев выдает значение "Button418"
Попробовал для одной из ячеек сделать ...Shapes(2)... - выдает "Button489"
Получается, что неважно какая ячейка стоит в Вашем примере (Cells(5,5) или что-то другое), он возвращает имя именно для Spapes(1), Shapes(2).... А мне надо найти имя того Shape (или тех Shapes), который выделен в данный момент (ну или на худой конец прикреплен к выделенной ячейке).
Вставляю в ячейку файл - oleobject (не важно чем - диалоговым окном Вставка/объект или макросом). Теперь мне надо получить имя образованной иконки, чтобы ее форматировать (размещение ячейки, свойства и т.д.). К примеру чтобы задать ему координаты требуется строки типа
Немного дописал формулу (у меня например некорректно работала двссыл() из-за того, что сцепить() воспринимала дату как число и не могла сформировать правильный текст для задания диапазона):
Доброе утро! А вообще бы - макрос сделать, который удалял дубликаты и сортировал по алфавиту, из него строить выпадающий список, было бы на порядок удобнее. Судя по файлу там можно и код дописать и кнопку сделать. Ну либо руками - выделить весь список товаров, скопировать на отдельный лист, удалить дубликаты, отсортировать. Далее - полученному диапазону присвоить имя и на это имя ссылаться при формировании выпадающего списка.
Нужно макросом в эксель взять файл 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