Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 07.11.2008, 08:33   #1
XPAiN
Форумчанин
 
Аватар для XPAiN
 
Регистрация: 31.10.2007
Сообщений: 108
По умолчанию Создание скриншота в файл

Доброго времени суток всем!

Есть такая проблема. Нужно создать скриншот с друго приложения из VBA и сохранить его в файл. Каким образом это можно сделать?
delphi is my world
XPAiN вне форума
Старый 07.11.2008, 08:44   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Здесь есть пример работы из VB со скриншотами.

Вам потребуется лишь получить hwnd и hDC окна того приложения, скриншот которого Вам нужен.

Здесь тоже обсуждалась подобная тема.

Последний раз редактировалось EducatedFool; 07.11.2008 в 08:50.
EducatedFool вне форума
Старый 07.11.2008, 10:16   #3
XPAiN
Форумчанин
 
Аватар для XPAiN
 
Регистрация: 31.10.2007
Сообщений: 108
По умолчанию

Посмотрел ссылки. Не работает Ругается на Clipboard.GetData. Видимо VB и VBA отличаются. Чувствую, что нужно его объявить. Скриншот он делает, можно его например в paint вставить ручками.

Поиск как объявить Clipboard ничего не дал
delphi is my world
XPAiN вне форума
Старый 07.11.2008, 10:40   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Цитата:
Ругается на Clipboard.GetData. Видимо VB и VBA отличаются.
В VBA нет объекта Clipboard, но это не проблема.

Для работы с буфером обмена из VBA можете воспользоваться следующим кодом:

Код:
' ============= работа с буфером обмена
Public Sub SetClipboard(Obj As Variant)
    Dim MyDataObj As New DataObject
    MyDataObj.SetText Format(Obj)
    MyDataObj.PutInClipboard
End Sub

Public Function GetClipboard() As Variant
    GetClipboard = "": On Error Resume Next
    Dim MyDataObj As New DataObject
    MyDataObj.GetFromClipboard: GetClipboard = MyDataObj.GetText()
End Function

Public Sub ClearClipboard()
    Dim MyDataObj As New DataObject
    MyDataObj.SetText "": MyDataObj.PutInClipboard
End Sub
Для работы этого кода необходимо подключить библиотеку Microsoft Forms 2.0 Object Library
Чтобы её поключить, Откройте окно редактора VBA (нажатием Alt + F11)
Далее - меню Tools - References...
Поставьте галочку напротив строки Microsoft Forms 2.0 Object Library и нажмите OK.


Вообще-то, в примерах кода для работы с буфером обмена используются API - функции (можете использовать их вместо вышеприведённых процедур):

Код:
Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long 
Private Declare Function EmptyClipboard Lib "user32" () As Long 
Private Declare Function SetClipboardData Lib "user32" (ByVal wFormat As Long, ByVal hMem As Long) As Long 
Private Declare Function CloseClipboard Lib "user32" () As Long
EducatedFool вне форума
Старый 07.11.2008, 11:31   #5
XPAiN
Форумчанин
 
Аватар для XPAiN
 
Регистрация: 31.10.2007
Сообщений: 108
По умолчанию

Код:
Public Function GetClipboard() As Variant
    GetClipboard = "": On Error Resume Next
    Dim MyDataObj As New DataObject
    MyDataObj.GetFromClipboard: GetClipboard = MyDataObj.GetText()
End Function
Отлично работает, но только с текстом. У DataObject нет подходящего метода для того чтобы получить картинку.
delphi is my world
XPAiN вне форума
Старый 11.11.2008, 08:59   #6
SerArtur
Пользователь
 
Аватар для SerArtur
 
Регистрация: 08.11.2008
Сообщений: 10
По умолчанию

А знаете трюк в Excel Выделим область А1:К10 Удерживая кнопку SHIFT входим в меню Edit > Copy Picture и вот тебе малЭнкий скриншотик
SerArtur вне форума
Старый 11.11.2008, 12:05   #7
XPAiN
Форумчанин
 
Аватар для XPAiN
 
Регистрация: 31.10.2007
Сообщений: 108
По умолчанию

Цитата:
Сообщение от SerArtur Посмотреть сообщение
А знаете трюк в Excel Выделим область А1:К10 Удерживая кнопку SHIFT входим в меню Edit > Copy Picture и вот тебе малЭнкий скриншотик
Уважаемый SerArtur вы походу не в тему влезли...читайте посты внимательнее!
delphi is my world
XPAiN вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как записать файл в файл программы? Хамяг Общие вопросы Delphi 2 02.11.2008 16:01
Как с поиощью hiew вставить в файл строчку, "раздвинуть" файл и вставить туда строчку? barand Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 28.06.2008 10:58
Снятие скриншота в МСДОС Black_Ak24 Свободное общение 4 17.06.2008 19:03
Создание класса Манжосов Денис :) Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 31.05.2008 11:54
Передача скриншота Terran Работа с сетью в Delphi 1 17.12.2007 21:41