2016-09-27 7 views
0

Я использую макрос для автоматического сжатия изображений в 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 
+0

Если это так (вы уже пробовали предупреждения отображения и т. д.), нам нужно увидеть код для элемента управления, о котором идет речь. – User632716

+0

@tompreston, я обновил ответ ^^ – Tatchay

ответ

0

Если вы просто хотите, чтобы скрыть эффект мерцания, используйте:

Sub compression() 
Application.ScreenUpdating = False 
Application.SendKeys "%w~" Application.CommandBars.ExecuteMso "PicturesCompress" 
Application.ScreenUpdating = True 
End Sub 
+0

Извините, я пропустил публикацию темы, но я уже пробовал ее, и она не работает, d ialog все еще появляется. – Tatchay

+0

@Tatchay no biggy, whats код для контроля? – User632716

 Смежные вопросы

  • Нет связанных вопросов^_^