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

Страницы: 1
Как использовать "Google Code Prettifier" для макроса VBA в Microsoft Excel ?, Как прикрутить к Примечанию?
 
Кросс-пост - видать разраб в отпуску!

У меня есть макрос VBA для "Вставки Примечания" в Microsoft Excel. Я хочу прикрутить Google code prettifier к моему макросу для создания заметки с подсветкой, возможно ли это (заинтересован в подсветке как это реализованно на этом данном или StackOverflow)? На ютаре просмотрел видео 1, 2, - но тут инструкция для сайта (кста, подобных видео очень много).


Код
Sub Note_FillColor_White()
Dim myComm As Comment
  If Not ActiveCell.Comment Is Nothing Then
    If MsgBox("Ячейка уже содержит примечание, удалить?", 4) - 7 Then
      ActiveCell.Comment.Delete
    Else: Exit Sub
    End If
  End If

Set myComm = ActiveCell.AddComment
    With myComm.Shape
      .Height = 110
      .Width = 200
      .Top = 55
      .AutoShapeType = 1             'форма
      .Fill.ForeColor.SchemeColor = 1 'заливка » Белый
      .Line.ForeColor.RGB = RGB(255, 0, 0)
      .DrawingObject.Font.Name = "Consolas"
      .DrawingObject.Font.FontStyle = "normal"
      .DrawingObject.Font.Size = 8
     End With
      'Эмулируем выбор пункта "Изменить `Заметку`"
       SendKeys "+{F2}"
End Sub

Вот например для ··· MS WORD такое есть хочу подобное для MS EXCEL.

Если не бегаешь, пока здоров, придется побегать, когда заболеешь.
Undo/Redo или CTRL+Z – CTRL+Y »» не работает для личных макросов, Есть способ прикрутить программно?
 
Есть макросы по теме ··· заливка; цвет текста; вставить примечание. Для них не работает Undo/Redo (которые расположены на QAT) ни CTRL+Z – CTRL+Y.
Нашёл вот такие ссылки wellsr.com и jkp-ads.com там есть инфа, правда не понятно как это всё скомбинировать с моими всеми макросами!?

1. Пример XML+VBA реализация книги тут (макрос заливка цвета).
Один юзер предложил рабочий вариант! Вот только досадно то что у меня заливок для цвета много скажем 30-40. Как это всё адаптировать, мож переменную какую то вставить на место xSelection.Interior.Color :

Заметьте что это готовый рабочий вариант Undo/Redo! ↴↴↴ ↴↴↴ ↴↴↴
Код
Sub CellColor()
Call CellColor_Do(0)
End Sub
 
Private Sub CellColor_Do(Undo As Integer)
Static xBook As Workbook, xSheet As Worksheet, xSelection As Range, xColor As Long
Const sName As String = "CellColor"
Const sUndo As String = "Undo Color in "
Const sRedo As String = "Redo Color in "
If Undo = 0 Then
    Set xBook = ActiveWorkbook
    Set xSheet = ActiveSheet
    Set xSelection = Selection
    xColor = Selection.Cells(1).Interior.Color
    xSelection.Show
    xSelection.Interior.Color = RGB(227, 38, 54)
    Application.OnUndo (sUndo + xSelection.Address(False, False)), (ThisWorkbook.Name + "!" + sName + "_Undo")
ElseIf xSelection Is Nothing Then
    Beep
Else
    xBook.Activate
    xSheet.Activate
    xSelection.Select
    xSelection.Show
    If Undo < 0 Then
        xSelection.Interior.Color = xColor
        Application.OnRepeat (sRedo + xSelection.Address(False, False)), (ThisWorkbook.Name + "!" + sName + "_Redo")
    Else
        xSelection.Interior.Color = RGB(227, 38, 54)
        Set xSelection = Nothing
    End If
End If
End Sub
 
Private Sub CellColor_Undo()
    Call CellColor_Do(-1)
End Sub
 
Private Sub CellColor_Redo()
    Call CellColor_Do(1)
End Sub

2. Есть ещё макрос к которому тоже хочу прикрутить:

Код
Sub Note_FillColor_White()
Dim myComm As Comment
  If Not ActiveCell.Comment Is Nothing Then
    If MsgBox("Ячейка уже содержит примечание, удалить?", 4) - 7 Then
      ActiveCell.Comment.Delete
    Else: Exit Sub
    End If
  End If
 
Set myComm = ActiveCell.AddComment
    With myComm.Shape
      .Height = 110
      .Width = 200
      .Top = 55
      .AutoShapeType = 1             'форма
      .Fill.ForeColor.SchemeColor = 1 'заливка » Белый
      .Line.ForeColor.RGB = RGB(255, 0, 0)
      .DrawingObject.Font.Name = "Consolas"
      .DrawingObject.Font.FontStyle = "normal"
      .DrawingObject.Font.Size = 8
     End With
      'Эмулируем выбор пункта "Изменить `Заметку`"
       SendKeys "+{F2}"
End Sub

3. Ещё макрос (нужна прикрутка):

Код
Sub CoverCommentIndicator(control As IRibbonControl)
    'www.contextures.com/xlcomments03.html
    Dim ws As Worksheet
    Dim cmt As Comment
    Dim lCmt As Long
    Dim rngCmt As Range
    Dim shpCmt As Shape
    Dim shpW As Double 'ширина формы
    Dim shpH As Double 'высота формы
    
    Set ws = ActiveSheet
    shpW = 8
    shpH = 6
    lCmt = 1
    
    For Each cmt In ws.Comments
      Set rngCmt = cmt.Parent
      With rngCmt
        Set shpCmt = ws.Shapes.AddShape(msoShapeRectangle, _
          rngCmt.Offset(0, 1).Left - shpW, .Top, shpW, shpH)
      End With
      With shpCmt
        .Name = "CmtNum" & .Name
        With .Fill
          .ForeColor.SchemeColor = 9 'Цвет заливки
          .Visible = msoTrue
          .Solid
        End With
        With .Line
          .Visible = msoTrue
          .ForeColor.SchemeColor = 64 'Цвет обводки, задаётся автоматически для всех индикаторов!
          .Weight = 0.25 'Толщина обводки, задаётся автоматически для всех индикаторов!
        End With
        With .TextFrame
          .Characters.Text = lCmt
          .Characters.Font.Size = 5 'Размер текста
          .Characters.Font.ColorIndex = xlAutomatic
          .MarginLeft = 0#
          .MarginRight = 0#
          .MarginTop = 0#
          .MarginBottom = 0#
          .HorizontalAlignment = xlCenter 'Расположение текста (в данном случае в центре).
        End With
        .Top = .Top + 0.001 'Расположение рамки (в данном случае справа).
      End With
      lCmt = lCmt + 1
    Next cmt
End Sub

На самом деле макросов то у меня много (возможно если понять как прикрутить Undo/Redo к этим макросам - то можно будет понять формулу и в дальнейшем самому адаптировать).
Если не бегаешь, пока здоров, придется побегать, когда заболеешь.
Как забэкапить настройки Microsoft Office которые находятся в ветках реестра?, microsoft office, реестр, резервное копирование
 
CloneApp - это софт который позволяет копировать/бэкапить нужные ветки реестра.

Хочу понять как из реестра
Цитата
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\
забэкапить то что мне нужно (просто я не в курсе где искать, там много чего написано)?

1. Настройки ContextMenuCell, ContextMenuPly, ContextMenuShapes (для некоторых кнопок установил я visible=false, чтоб после переноса были также скрыты).
2. Шрифты, Размер Шрифта, Цвет Шрифта, Размер/Zoom рабочего Листа.
3. Quick Access Toolbar - кнопки которые там есть.
4. Вкладка Разработчик:
- Надстройки Excel, Word, Outlook и т.д.
- Надстройки COM
5. Файл > Параметры (бэкап всех настроек).
6. Настройки в Visual Basic.
Изменено: rediffusion - 07.08.2019 20:59:18 (Забыл дописать ещё не мало важный пункт!)
Если не бегаешь, пока здоров, придется побегать, когда заболеешь.
Как подогнать размер `Примечания` после его открытия?, VBA макрос уже имеется (нужны координаты).
 
Итак вот макрос:
Код
Private Sub NoteZoom3()
    With ActiveWindow.VisibleRange
         NoteChangeSize .Width, .Height, True
    End With
End Sub
 
Private Sub NoteChangeSize(w!, h!, Optional scr As Boolean)
    With ActiveCell.Comment.Shape
         .Width = w: .Height = h
         If scr Then .Top = 0: .Left = 0: .Visible = msoTrue
    End With
End Sub
Как оно работает... переходим на ячейку в которой содержится `Примечание` > Выполняем макрос.
`Примечание` подгоняется под размер окна Листа (то есть получается <Full Screen>).
Это все плохо работает если мы например находимся где то на столбце (AB) или строке 60. `Примечание` то открывается в <Full Screen> но оно зафиксировано в топе там где ячейка (A) и нужно скроллить вверх чтобы посмотреть.

Мне бы хотелось чтоб подгонялось под размер Листа и открывалось именно там где находится `Примечание` (чтоб каждый раз не подыматься вверх).
Если не бегаешь, пока здоров, придется побегать, когда заболеешь.
`RightClickMenu` ··· перенести кнопку., Встроенная кнопка Mso - возможно ли перенести?
 
Как я могу переместить кнопку "Сохранить ширину столбцов оригинала" из 'Специальная вставка...' в "Параметры вставки" ?
Просто мне так удобно когда нужная кнопка на виду.
Изменено: rediffusion - 08.08.2019 10:46:41
Если не бегаешь, пока здоров, придется побегать, когда заболеешь.
Как стягивать данные с Листа для создания Context Menu?, скомбинировать два VBA кода в один
 
Вот есть Add-in от Ron de Bruin там всё это дело реализовано данные стягиваются с Листа.
Вот есть русифицированный мной этот Add-in (книгу прикрепил).
Дело в том что потихоньку кнопок становится больше и с этим возиться сложно. По этому понравился вариант Ron de Bruin (там всё наглядно).

Всё это дело я хочу нацепить на курсор (контекстное меню будет вызываться после клика на Ctrl+N). У меня уже имеется полноценный рабочий VBA код (он исключительно для `Примечаний`, всплывает при наличии в ячейке оного). Проблема в том что я не знаю как скомбинировать (целый день провозился ничего не получается)?
!! Помогите вот отсюда перенести нужные строки кода в Add-in от Ron de Bruin (чтоб свои иконки тоже можно было ставить).
Код
Private Sub Workbook_Open()
    Application.OnKey "^{n}", CodeName & ".ContextMenu"
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.OnKey "^{n}"
End Sub

Private Sub ContextMenu()
    If ActiveCell Is Nothing Then Exit Sub
    If ActiveCell.Comment Is Nothing Then Exit Sub
    
    On Error Resume Next 'Можно и без оного, но тогда с перебором(циклом) CommandBars.
    Dim cb As CommandBar
    Set cb = Application.CommandBars("vbaPopup")
    If cb Is Nothing Then CreateContextMenu
    
    Application.CommandBars("vbaPopup").ShowPopup
End Sub

Private Sub CreateContextMenu()
    Dim a1_icon, a1_file, a2, a3, i&, m$, p$, f$: m = CodeName & ".": p = Path & "\Image\"
    a1_icon = Array(76, 72, 178, 53)
    a1_file = Array("NoteZoom_200x110.jpg", "NoteZoom_600x400.jpg", "Full Screen.jpg", "NoteZoom_InputBox.jpg", "Copy Text.jpg")
    a2 = Array("NoteZoom 200x110", "NoteZoom 600x400", "Note <Full Screen>", "NoteZoom InputBox", "Скопировать текст примечания")
    a3 = Array("NoteZoom1", "NoteZoom2", "NoteZoom3", "NoteZoom_InputBox", "NoteTextToClipboard")
    
    With Application.CommandBars.Add("vbaPopup", msoBarPopup, , True) 'Можно и НЕ делать контекстное меню временным.
         For i = 0 To UBound(a1_file) 'Ubound(a1_ico)
             With .Controls.Add
                  f = p & a1_file(i)
                  If Len(Dir(f)) Then
                     .Picture = LoadPicture(f)
                  Else
                     .FaceId = a1_icon(i) 'Если файл не найден, то иконка (но это необязательно).
                  End If
                  .Caption = a2(i)
                  .OnAction = m & a3(i)
             End With
         Next
    End With
End Sub

Sub -ы запускаемые для .OnAction убрал думаю для комбинирование не понадобится к тому же в надстройке от Ron de Bruin есть макросы для примера.
Изменено: rediffusion - 06.08.2019 22:47:24 (Нашёл ошибки в слове.)
Если не бегаешь, пока здоров, придется побегать, когда заболеешь.
`Insert Note` ··· Clipboard.GetImage - как привести в рабочее состояние?
 
Кросс-пост как вы уже догадались тут!

У меня есть хороший код для вставки изображения в "Примечание" из "File Dialog" :
Код
Sub FillPictureInNote(control As IRibbonControl)
    Dim img As FileDialog
    Dim i_add As String
    Dim myComm As Comment

    Set img = Application.FileDialog(msoFileDialogFilePicker)
        img.AllowMultiSelect = False
        img.Title = "Select the Image!"
        img.Show

    If img.SelectedItems.Count < 1 Then
    Exit Sub

    Else
        i_add = img.SelectedItems(1)
    End If

'If the cell contains a `Note` delete!
    If Not ActiveCell.Comment Is Nothing Then
        ActiveCell.Comment.Delete
    End If

    On Error GoTo nexterr
    ActiveCell.ClearComments

    Set myComm = ActiveCell.AddComment
        With myComm.Shape
          .Height = 110
          .Width = 200
          .AutoShapeType = 1             'form
'          .Fill.UserTextured
          .Fill.UserPicture i_add
          .Line.ForeColor.RGB = RGB(255, 0, 0)
          .DrawingObject.Font.Name = "Consolas"
          .DrawingObject.Font.FontStyle = "normal"
          .DrawingObject.Font.Size = 8
          'emulate the choice of "Change note".
           SendKeys "+{F2}"
          Exit Sub

nexterr:
        MsgBox "You can only select images!", vbCritical, "Error"
        ActiveCell.ClearComments
        End With
End Sub

Я хочу сделать код для вставки изображения в "Примечание" из моего буфера обмена. Как переписать код, чтобы привести его в рабочее состояние? Я нашел это в интернете:
Код
Dim ImaFile$
ImaFile = Clipboard.GetImage() 
Пожалуйста, помогите объединить/состыковать!
Изменено: rediffusion - 06.08.2019 12:40:06 (Исправил ошибки в тексте!)
Если не бегаешь, пока здоров, придется побегать, когда заболеешь.
Как добавить "подменю" (Ron de Bruin)?, Application.CommandBars(“vbaPopup”).ShowPopup
 
Кросс-пост!
Добавить `Submenu` в уже имеющееся `Menu`.

P.S. ··· смотреть на том форуме тут что то не публикуется аналогичный контент...
Изменено: rediffusion - 05.08.2019 14:20:10 (Внёс поправки в предложения. Возникли непонятки по поводу публикации похожего контента на другом форуме.)
Если не бегаешь, пока здоров, придется побегать, когда заболеешь.
Создание `PopUp Menu` используя "CommandBarPopup" а какие ещё есть?, RightClickMenu.
 
:excl:  Кросс пост тут если чё.

Наткнулся на такой метод добавления `PopUp Menu` от Ron de Bruin (который кста на данном форуме в "ССЫЛКИ" он есть). Там описан способ добавления "Menu" а есть ли код для добавления скажем "Gallery" (меня больше галерея интересует), "ToggleButton" или "SplitButton" ?
Если не бегаешь, пока здоров, придется побегать, когда заболеешь.
`Вставить Примечание` - заливка картинки., Как в уже имеющийся макрос прикрутить “msoFileDialogFilePicker” ?
 
Имеем это:
Код
Sub Special_Note2_FillPicture(control As IRibbonControl)
    Dim myComm As Comment
      If Not ActiveCell.Comment Is Nothing Then
        If MsgBox("Ячейка уже содержит примечание, удалить?", 4) - 7 Then
          ActiveCell.Comment.Delete
        Else: Exit Sub
        End If
      End If

    Set myComm = ActiveCell.AddComment
        With myComm.Shape 'выставляем требуемый формат
          .Height = 110
          .Width = 200
          .AutoShapeType = 1             'форма
'          .Fill.UserTextured
          .Fill.UserPicture "C:\Users\Admin\Downloads\TEST.jpg" 'Вставить картинку
          .Line.ForeColor.RGB = RGB(255, 0, 0) 'цвет линии
          .DrawingObject.Font.Name = "Consolas" 'шрифт
          .DrawingObject.Font.FontStyle = "обычный"
          .DrawingObject.Font.Size = 8    'размер шрифта
        End With
          'эмулируем выбор пункта "Изменить примечание"
           SendKeys "+{F2}"
End Sub

Хочу на место этого:

Код
.Fill.UserPicture "C:\Users\Admin\Downloads\TEST.jpg" 'Вставить картинку

Прикрутить открытие окна с выбором картинки которая на ПК:

Код
Application.FileDialog(msoFileDialogFilePicker)

С уважением!

Если не бегаешь, пока здоров, придется побегать, когда заболеешь.
Как увеличить/уменьшить примечание к ячейке без растягивания вручную?
 
Например как сделать во весь Лист "Excel" или установить размер 600px.
Думаю макрос подошёл бы! Например:
1) Наводим на ячейку.
2) Запускаем VBA макрос в котором появляется форма.
3) В форму вводим нужный размер в пикселах.

ещё...
1) Наводим на ячейку.
2) Запускаем VBA макрос.
3) Ну и примечание на весь Лист.

...Выручайте ребят!  :)  
Изменено: rediffusion - 31.07.2019 22:29:11
Если не бегаешь, пока здоров, придется побегать, когда заболеешь.
`Вставить Примечание` как заставить работать CTRL+A ?, Выделение текста не робит!
 
Имеем в ячейке примечание в нём текст, много текста. “CTRL+A” - не работает? Мож макрос есть какой удобный?
Если не бегаешь, пока здоров, придется побегать, когда заболеешь.
Открытие вкладки на ленте, на которой остался после закрытия книги
 
 Ну... например остался на вкладке "Разработчик", закрыл книгу, запустил и чтоб нужная вкладка была открыта! Есть такое?
Если не бегаешь, пока здоров, придется побегать, когда заболеешь.
`ContextMenuShape` или `Shapes`., Не робит или не знаю как добавить!?
 
 У меня `Microsoft Office 365 2019`
Как я могу добавить button или menu или gallery сюда ?


Этот XML код не робит! (если в конце дописать так Shapes то тоже не робит!). Для добавления XML использовал Ribbon XML Editor.
Код
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
    <contextMenus>
        <contextMenu idMso="ContextMenuShape">
            <button idMso="About" />
        </contextMenu>
    </contextMenus>
</customUI>
Если не бегаешь, пока здоров, придется побегать, когда заболеешь.
Страницы: 1
Наверх