Буфер обмена

Программирование на Visual Basic for Applications
Matroskin
Новичок
Новичок
 
Сообщения: 25
Зарегистрирован: 03.08.2002 (Сб) 7:57
Откуда: Russia

Буфер обмена

Сообщение Matroskin » 02.02.2004 (Пн) 13:28

Есть простой вопрос:
Как макросе Ворда текстовой переменной присвоить содержание буфера обмена (тоже текст)? :roll:
Я весь инет перерыл.... а ответа не нашёл :cry:

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 02.02.2004 (Пн) 14:30

буфер обмена насколько я знаю содержится в selection значит делаем так
Код: Выделить всё
Dim s As String
    Selection.MoveLeft Unit:=wdCharacter, Count:=18, Extend:=wdExtend
    Selection.Copy
    s = Selection
    MsgBox s

вот и все :roll:
Ничто так не ограничивает полёт мысли программиста, как компилятор

Matroskin
Новичок
Новичок
 
Сообщения: 25
Зарегистрирован: 03.08.2002 (Сб) 7:57
Откуда: Russia

Сообщение Matroskin » 03.02.2004 (Вт) 9:10

Йоу!
Как всё просто :roll:
А тут пример огромадный нашёл.... :shock: Тоже работает, но у тебя проще... Приведу его для сравнения: :P
Код: Выделить всё
Declare Function OpenClipboard Lib "user32" (ByVal hWnd As Long) As Long
Declare Function GetClipboardData Lib "user32" (ByVal wFormat As Long) As Long
Declare Function CloseClipboard Lib "user32" () As Long
Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
Declare Function lstrcpy Lib "kernel32" (ByVal lpString1 As Any, ByVal lpString2 As Any) As Long
Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long

Public Const MAXSIZE = 4096
Public Const CF_TEXT = 1

Function ClipBoard_GetData() As String
         Dim hClipMemory As Long
         Dim lpClipMemory As Long
         Dim MyString As String
         Dim RetVal As Long

         If OpenClipboard(0&) = 0 Then
            MsgBox "Cannot open Clipboard. Another app. may have it open"
            Exit Function
         End If

         ' Obtain the handle to the global memory
         ' block that is referencing the text.
         hClipMemory = GetClipboardData(CF_TEXT)
         If IsNull(hClipMemory) Then
            MsgBox "Could not allocate memory"
            GoTo OutOfHere
         End If

         ' Lock Clipboard memory so we can reference
         ' the actual data string.
         lpClipMemory = GlobalLock(hClipMemory)

         If Not IsNull(lpClipMemory) Then
            MyString = Space$(MAXSIZE)
            RetVal = lstrcpy(MyString, lpClipMemory)
            RetVal = GlobalUnlock(hClipMemory)

            ' Peel off the null terminating character.
            MyString = Mid(MyString, 1, InStr(1, MyString, Chr$(0), 0) - 1)
         Else
            MsgBox "Could not lock memory to copy string from."
         End If

OutOfHere:

         RetVal = CloseClipboard()
         ClipBoard_GetData = MyString

      End Function

Спасибо большое!!! :mrgreen:

corgi
ToyMan
ToyMan
 
Сообщения: 1367
Зарегистрирован: 01.10.2002 (Вт) 9:59
Откуда: Россия, Москва

Сообщение corgi » 03.02.2004 (Вт) 20:53

ну это надо посоветовать RayShade взять на заметку :!: Он любит отвечать на вопросы таким образом :D :wink:
Ничто так не ограничивает полёт мысли программиста, как компилятор

Calvin
Постоялец
Постоялец
 
Сообщения: 409
Зарегистрирован: 21.01.2003 (Вт) 12:13
Откуда: Sebastopol

Сообщение Calvin » 06.02.2004 (Пт) 12:58

2 Matroskin
а вообще тут не надо мудрить с АПИшками.
Подключи Microsoft Forms 2.0 Object Library и используй из нее объект DataObject и делай так:
Код: Выделить всё
Dim MyData As DataObject

Sub bufer()
Dim y as string
  Set MyData = New DataObject
  MyData.GetFromClipboard
  y = MyData.GetText
End Sub

можешь еще заглянуть сюда http://vbsdown.aic.ru/forum/viewtopic.php?t=4136..... (там есть еще кое-что по клипборду)
-Whose the motocycle, is this? -It`s a chopper, baby! -Whose chopper is this? -Zed`s! -Who is Zed? -Zed`s dead, baby, Zed`s dead! :-D


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 68

    TopList