Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA openoffice помогите с макросом пожалуйста / 2 сообщений из 2, страница 1 из 1
14.06.2020, 05:47
    #39968929
foxyra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA openoffice помогите с макросом пожалуйста
Доброго времени суток.
есть задача делать скриншот экрана в vba (openoffice)и сохранять его в определенную папку на hdd.
Нашел код который сохраняет в буфер.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
REM  *****  BASIC  *****
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 PrintScreen()
    keybd_event VK_SNAPSHOT, 1, 0, 0
End Sub



Модератор: Учимся использовать тэги оформления кода - FAQ
как сохранить в файл из буфера , разницы нет bmp ,jpeg.

за ранее спасибо...
...
Рейтинг: 0 / 0
14.06.2020, 12:28
    #39968976
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA openoffice помогите с макросом пожалуйста
foxyra,

отсюда https://www.access-programmers.co.uk/forums/threads/out-of-memory-error-while-working-with-clipboard.192171/
в принципе "рабочий" вариант
Но у меня он, почему-то, срабатывает только со второго запуска (и дальше остается "рабочим") :)

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
Option Compare Database
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal _
bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
 
Private Declare Function GetClipboardData Lib "user32" (ByVal wFormat As Long) As Long
Private Declare Function CloseClipboard Lib "user32" () As Long
Private Declare Function OpenClipboard Lib "user32" (ByVal Hwnd As Long) As Long
Private Declare Function EmptyClipboard Lib "user32" () As Long
Private Declare Function OleCreatePictureIndirect Lib "olepro32.dll" (PicDesc As PicBmp, _
RefIID As Guid, ByVal fPictureOwnsHandle As Long, IPic As IPicture) As Long
Private Const VK_MENU = &H12
Private Const VK_SNAPSHOT = &H2C
Private Const KEYEVENTF_KEYUP = &H2
Private Const CF_BITMAP = 2
Private Type PicBmp
Size As Long
Type As Long
hBmp As Long
hPal As Long
Reserved As Long
End Type
Private Type Guid
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(0 To 7) As Byte
End Type
Public strFormName As String

Public Function SaveBitmap()
Dim Pic As PicBmp, IPic As IPicture, IID_IDispatch As Guid, strFileName As String
Dim theCnt As Integer, theMsg As String
theCnt = 0
strFileName = "C:\Test.bmp" ' Set the filename variable.
startOver:
theCnt = theCnt + 1
keybd_event VK_MENU, 0, 0, 0                    'press Alt
keybd_event VK_SNAPSHOT, 0, 0, 0                'press PrintScrn
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0  'release it
keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0      'release it
DoEvents
With IID_IDispatch
    .Data1 = &H20400
    .Data4(0) = &HC0
    .Data4(7) = &H46
End With
With Pic
Call OpenClipboard(0&)
    .Size = Len(Pic)
    .Type = 1
    .hBmp = GetClipboardData(CF_BITMAP)
End With
OleCreatePictureIndirect Pic, IID_IDispatch, 1, IPic ' Create the picture object
If theCnt = 1 Then
'    theMsg = MsgBox("Click ok to save the file.", vbOKOnly + vbInformation)
    DoEvents
'    If theMsg = 1 Then GoTo startOver
End If
On Error GoTo errorEncountered
stdole.SavePicture IPic, strFileName ' Save the file
errorEncountered:
If Err.Number <> 0 Then
MsgBox " Error# " & Err & " " & """" & Err.Description & """"
End If
Call EmptyClipboard ' Empty the clipboard
Call CloseClipboard ' Close the clipboard
End Function
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA openoffice помогите с макросом пожалуйста / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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