Я использую макрос для автоматического сжатия изображений в Excel 2010, макрос открывает диалоговое окно и кнопки отправки, а конечные пользователи могут видеть его (на полсекунды), я хочу скрыть. Пожалуйста помоги !Скрыть диалоговое окно сжатия изображений в VBA (Excel 2010)
Это мой макрос:
Sub compression()
Application.SendKeys "%w~"
Application.CommandBars.ExecuteMso "PicturesCompress"
End Sub
Я уже пробовал:
Application.DisplayAlerts = False
Application.EnableEvents = False
Application.ScreenUpdating = False
Но они, кажется, не работают.
@TomPreston Вот мой весь код, я хочу, чтобы пользователи дважды кликали по типам ячеек, чтобы вставлять фотографии в комментарии, но картинки должны быть сжаты, чтобы сохранить файл в соответствии!
У меня также есть проблемы с SendKeys и замком NUM, если кто-то может помочь мне в этом (см):
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, [v:v]) Is Nothing Then
Application.ScreenUpdating = False
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.InitialFileName = CurDir
.Filters.Clear
.Filters.Add Description:="Images", Extensions:="*.png;*.jpg;*.jpeg;*.gif", Position:=1
.Title = "Choose image"
If .Show = -1 Then TheFile = .SelectedItems(1) Else TheFile = 0
End With
If TheFile = 0 Then
MsgBox ("No image selected")
Exit Sub
End If
ActiveCell.ClearComments
Selection.AddComment
PreviousCell = ActiveCell.Address
ActiveCell.Comment.Shape.Fill.UserPicture TheFile
NumLockState = GetKeyState(VK_NUMLOCK)
Application.SendKeys "%a~"
Application.CommandBars.ExecuteMso "PicturesCompress"
If NumLockState <> GetKeyState(VK_NUMLOCK) Then
Application.SendKeys ("%{Numlock}"), True
End If
ActiveCell.Comment.Visible = True
CommentAdded = True
Application.ScreenUpdating = True
End If
End Sub
Пользователи могут изменить де размера изображения и после изменения выбора, комментарий скрытый.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If CommentAdded = True Then
Range(PreviousCell).Comment.Visible = False
PreviousCell = ""
CommentAdded = False
End If
End Sub
И эти переменные:
Public CommentAdded As Boolean
Public PreviousCell As String
Public Const VK_NUMLOCK = &H90
Public Declare Function GetKeyState Lib "user32" _
(ByVal nVirtKey As Long) As Long
Если это так (вы уже пробовали предупреждения отображения и т. д.), нам нужно увидеть код для элемента управления, о котором идет речь. – User632716
@tompreston, я обновил ответ ^^ – Tatchay