powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как сохранить printScreen в файл
3 сообщений из 3, страница 1 из 1
Как сохранить printScreen в файл
    #36664342
Alex9682
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется макрос который работает длительное время. Программа запускается на работе. необходимо вставить в макрос код который будет через определенное время делать снимок экрана и отсылать этот снимок по почте, что бы даже сидя дома можно было видеть на каком этапе происходит обработка.
В связи с этим Первй вопрос - Как сделать снимок экрана и сохранить его в файл?
нашел следующее, но почему то вылетает ошибка:

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal _
bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Private Const VK_SNAPSHOT = &H2C

Sub Command1_Click()
Dim image1 As Variant
keybd_event VK_SNAPSHOT, 1, 0, 0
image1.Picture = Clipboard.GetData(vbCFBitmap) ' на этой строчке возникает ошибка
SavePicture image1.Picture, "D:\ps.bmp"

End Sub

Как быть?
...
Рейтинг: 0 / 0
Как сохранить printScreen в файл
    #36664701
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex9682,

Ошибка возникает потому что VBA не имеет объекта clipboard и Вы нигде не декларируете что-либо на него похожее.

Реализовывать лучше через API типа GetClipBoard и т.п. гугл надеюсь не "зобанеле" :)
...
Рейтинг: 0 / 0
Как сохранить printScreen в файл
    #36666062
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex9682,

Clipboard - Это для VB.
Для VBA можно воспользоваться другим, более длинным, но более перспективным кодом. Он тоже для VB, поэтому придётся "доработать напильником".
1) Открываете статью How To Capture and Print the Screen, a Form, or Any Window .
2) Создаёте в проекте VBA обычный модуль, копируете в него код из пункта 6 статьи до функции CaptureScreen включительно.
3) Убеждаетесь, что в References подключена библиотека типов OLE Automation.
4) В начало модуля, например, после Option Base 0, вставляете
Код: plaintext
1.
2.
3.
4.
5.
      #If VBA6 Then
         Private Const vbPicTypeBitmap As Long =  1 
         Private Const vbSrcCopy As Long = &HCC0020
         Private Const HORZRES As Long =  8 
         Private Const VERTRES As Long =  10 
      #End If
5) Вокруг функции CaptureScreen вставляете:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
   #If VBA6 Then
      Public Function CaptureScreen() As IPictureDisp
         Dim hWndScreen As Long
         Dim hDCScreen As Long
         Dim nWidth As Long, nHeight As Long
         hWndScreen = GetDesktopWindow()
         hDCScreen = GetWindowDC(hWndScreen)
         nWidth = GetDeviceCaps(hDCScreen, HORZRES)
         nHeight = GetDeviceCaps(hDCScreen, VERTRES)
         ReleaseDC hWndScreen, hDCScreen
         Set CaptureScreen = CaptureWindow(hWndScreen, False,  0 ,  0 , _
            nWidth, nHeight)
      End Function
   
   #Else
       сюда переместить уже существующую функцию CaptureScreen
   #End If
5)Нажимаете Ctrl+H и заменяете в модуле все описания As Picture на As IPictureDisp.

В итоге имеете функцию CaptureScreen, которой можно воспользоваться, например, для сохранения скриншота в .bmp-файл:
Код: plaintext
SavePicture CaptureScreen, "C:\Temp\Screenshot.bmp"
Или, воспользовавшись поиском по форуму, в JPEG (например).
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как сохранить printScreen в файл
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]