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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2010, 15:33   #1
zhig
 
Регистрация: 18.03.2010
Сообщений: 6
По умолчанию Значение в буфер

Добрый день! Есть код VBA в Word. В результате его работы некая переменная содержит текст (сумма прописью). Вопрос такой - можно ли текст из этой переменной поместить в буфер обмена?
zhig вне форума Ответить с цитированием
Старый 15.04.2010, 17:20   #2
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

http://word.mvps.org/FAQs/MacrosVBA/...eClipboard.htm
http://forum.script-coding.info/viewtopic.php?id=4324
http://www.tek-tips.com/viewthread.c...1173511&page=1

Последний раз редактировалось Aent; 15.04.2010 в 17:33.
Aent вне форума Ответить с цитированием
Старый 15.04.2010, 19:40   #3
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Может быть существующий алгоритм работы макроса и не позволит такое делать, но, поскольку работаем в Word, то можно сделать так:
Код:
With Selection
  .Collapse
  .Text = "Значение вашей переменной"
  .Cut
End With
Добавлено позже
Для полноты добавлю вариант с использованием функций WinAPI
Код:
Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function CloseClipboard Lib "user32" () As Long
Private Declare Function SetClipboardData Lib "user32" (ByVal wFormat As Long, ByVal hMem As Long) As Long
Private Declare Function EmptyClipboard Lib "user32" () As Long

Private Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
Private Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Private Const CF_TEXT = 1
Private hMemory As Long
Private lpMemory As Long
Private retval As Variant

Public Sub CopyTextToClipboard(ByVal sText As String)
  
  sText = sText & Chr(0)
  hMemory = GlobalAlloc(0, Len(sText) + 1)
  If hMemory <> 0 Then
    lpMemory = GlobalLock(hMemory)
    If lpMemory <> 0 Then
      CopyMemory ByVal lpMemory, ByVal sText, Len(sText) + 1
      retval = GlobalUnlock(hMemory)
      If OpenClipboard(0&) <> 0 Then
        If EmptyClipboard() <> 0 Then
          If SetClipboardData(CF_TEXT, hMemory) = 0 Then _
            MsgBox "Не удалось скопировать «" & sText & "» в буфер обмена", vbCritical + vbOKOnly, "Копировать строку в буфер"
        End If
        CloseClipboard
      End If 'OpenClipboard
    End If 'lpMemory
  End If 'hMemory
End Sub
Этот код лучше всего поместить в отдельный модуль, а использовать так:
Код:
CopyTextToClipboard "Ваша переменная"
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 15.04.2010 в 22:54.
viter.alex вне форума Ответить с цитированием
Старый 16.04.2010, 13:07   #4
zhig
 
Регистрация: 18.03.2010
Сообщений: 6
По умолчанию

Большое спасибо! Все работает!!!
zhig вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти значение на другом листе и подставить значение следующей ячейки ElenaNTro Microsoft Office Excel 12 11.02.2019 12:44
Кольцевой буфер KTOIA Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 01.11.2009 18:17
Буфер обмена nusik Общие вопросы Delphi 2 21.05.2009 00:53
Буфер Черничный Общие вопросы Delphi 5 10.09.2008 09:35
Буфер и паскаль Mago Паскаль, Turbo Pascal, PascalABC.NET 4 29.07.2008 22:19