powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / копирование с помощью vba
25 сообщений из 55, страница 1 из 3
копирование с помощью vba
    #39438620
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Подскажите, пожалуйста, как скопировать в буфер обмена значение поля в форме с помощью vba?
...
Рейтинг: 0 / 0
копирование с помощью vba
    #39438640
Попробуйте RunCommand acCmdCopy
А вообщев Аксе работа с буфером, это несколько системных API функций.
...
Рейтинг: 0 / 0
копирование с помощью vba
    #39438664
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев ),

Я ошибся. Скопировать в буфер обмена надо не значение поля, а значение переменной в процедуре vba.

Dim fio As String
fio = "клиент " & Me![Поле1] & ... и т.д.

Что делать?
...
Рейтинг: 0 / 0
копирование с помощью vba
    #39438668
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tauri,

Значит, присвойте предварительно полю значение переменной.
И копируйте в буфер значение поля.
Тоже вариант.)))
...
Рейтинг: 0 / 0
копирование с помощью vba
    #39438675
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle,

Я думал об этом: добавить скрытое поле в форму и присваивать ему значение переменной.

1 DoCmd.GoToControl "скрытое поле" - как?
2 DoCmd.RunCommand acCmdCopy
...
Рейтинг: 0 / 0
копирование с помощью vba
    #39438683
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
копирование с помощью vba
    #39438688
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle,

В процедуре

DoCmd.GoToControl "..."
DoCmd.RunCommand acCmdCopy

Синтаксис DoCmd.GoToControl "..." возможен если поле не скрыто (т.е. вывод на экран=да). А у меня поле не выводится на экран.

Поэтому надо искать способ копировать в буфер не значение поля, а значение самой переменной.

Что делать?
...
Рейтинг: 0 / 0
копирование с помощью vba
    #39438697
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tauri__Michelle,
Что делать?

Ссылка дана выше.
...
Рейтинг: 0 / 0
копирование с помощью vba
    #39438700
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndrF,

Т.е. эта процедура копирует значение переменной strTest в буфер обмена?

Dim d As DataObject

Public Sub PutInCb()
Dim strTest As String

strTest = "Test!"

Set d = New DataObject

d.SetText strTest
d.PutInClipboard
End Sub
...
Рейтинг: 0 / 0
копирование с помощью vba
    #39438717
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tauri,

Ну, вот смотрите:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
   With Fld
      .Value = "ddddddddd"
      .Width = 0
      .Height = 0
      .SetFocus
      .SelStart = 0
      .SelLength = Len(Fld)
      DoCmd.RunCommand acCmdCopy
   End With


Кошмар.
Набираю все это с планшета.
...
Рейтинг: 0 / 0
копирование с помощью vba
    #39438745
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tauri,

Пример в предыдущем посте имел целью показать, что поле
может иметь нулевые размеры, но при этом получать фокус и
позволять копировать свое значение.

То есть, можно разместить его скрытно, а мгновенные перемещения курсора
(на поле с нулевыми размерами и возврат на ScreenPreviousControl) никто не заметит.
...
Рейтинг: 0 / 0
копирование с помощью vba
    #39438752
TauriТ.е. эта процедура копирует значение переменной strTest в буфер обмена?

Dim d As DataObject
... Для этого в референсах должна быть установлена ссылка на библиотеку, что не есть хорошо.
В указанной ссылке приведен текст модуля. Создайте такой же и пользуйтесь. Правда я не знаю, как это будет работать под Win 64b.

А почему вам нужен именно обмен через буфер? Где вы собираетесь использовать этот текст?
...
Рейтинг: 0 / 0
копирование с помощью vba
    #39438853
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев ),

Менеджер получает жалобу от клиента (форма с несколькими полями) и должна отправить её мастеру по e-mail. Для этого менеджер вручную копирует каждое поле формы и вставляет его в тело сообщения e-mail + в разные отчёты. Это неудобно. Нужна кнопка, чтобы формировала из полей единый текст и этот текст копировала в буфер для его дальнейшей отправки по e-mail и вставки в разные отчёты.
...
Рейтинг: 0 / 0
копирование с помощью vba
    #39438858
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев ),

Конечное сообщение выглядет так.
...
Рейтинг: 0 / 0
копирование с помощью vba
    #39438871
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tauri,

А чем Вам мой способ не понравился?
Восемь (можно и шесть) коротких строк кода и все.
Слишком просто?)))
...
Рейтинг: 0 / 0
копирование с помощью vba
    #39438872
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Анатолий ( Киев )][quot Tauri]Т.е. эта процедура копирует значение переменной strTest в буфер обмена?


В указанной ссылке приведен текст модуля. Создайте такой же и пользуйтесь.

не получается использовать вариант

Dim d As DataObject

Public Sub PutInCb()
Dim strTest As String

strTest = "Test!"

Set d = New DataObject

d.SetText strTest
d.PutInClipboard
End Sub

ругается на Dim d As DataObject и на Set d = New DataObject
...
Рейтинг: 0 / 0
копирование с помощью vba
    #39438874
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle,

Да, я думаю, что ваш способ буду использовать. Другие способы пока не получаются.
...
Рейтинг: 0 / 0
копирование с помощью vba
    #39438879
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tauri,

А почему сразу проигнорировали-то, мне просто интересно?
Чем больше кода, тем лучше?
...
Рейтинг: 0 / 0
копирование с помощью vba
    #39438882
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Анатолий ( Киев )]
Для этого в референсах должна быть установлена ссылка на библиотеку, что не есть хорошо.[/q]

Полминуты на поиск в интернете и код немного модифицирован:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Option Compare Database
Option Explicit

Dim d As Object

Public Sub PutInCb()
    Dim strTest As String
    
    strTest = "Test!"
    
    Set d = GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
    
    d.SetText strTest
    d.PutInClipboard
End Sub

Public Sub GetFromCb()
    d.GetFromClipboard
    MsgBox d.GetText(1)
End Sub



Проверил - работает.
...
Рейтинг: 0 / 0
копирование с помощью vba
    #39438887
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и именно мой вариант на основе вышеприведенного:

Код: 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.
Option Compare Database
Option Explicit

Public Sub Test()
    ' Пошлем текст в буфер обмена
    SetTextInClipboard "Тестик 1"
    ' Прочитаем из буфера то что послали
    MsgBox GetTextFromClipboard
End Sub

Public Sub SetTextInClipboard(s As String)
    Dim strTest As String
    
    With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
        .SetText s
        .PutInClipboard
    End With
End Sub

Public Function GetTextFromClipboard() As String
    With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
        .GetFromClipboard
        GetTextFromClipboard = .GetText(1)
    End With
End Function
...
Рейтинг: 0 / 0
копирование с помощью vba
    #39438889
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя выше можно еще выкинуть объявление лишней переменной...
...
Рейтинг: 0 / 0
копирование с помощью vba
    #39438909
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle,

Я не проигнорировал. Я сосредоточился на ранее предложенном мне варианте. И пытался понять, почему он у меня не получается (help смотрел и т.п.). А когда я полностью во всём запутался (я самоучка и многого не знаю), то я вернулся на форум и увидел Ваше письмо.
...
Рейтинг: 0 / 0
копирование с помощью vba
    #39438912
Прогер_самоучка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tauriя самоучкане, ну это слишком!
...
Рейтинг: 0 / 0
копирование с помощью vba
    #39438916
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle,

а fld - это переменная? её надо описывать dim fld as ?
...
Рейтинг: 0 / 0
копирование с помощью vba
    #39438919
Tauri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прогер_самоучка,

что слишком?
...
Рейтинг: 0 / 0
25 сообщений из 55, страница 1 из 3
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / копирование с помощью vba
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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