Перейти к публикации

Помогите с макросом - передача заметки в буфер обмена и обратно


Рекомендованные сообщения

Уважаемые специалисты !

Помогите начинающему программисту написать простой макрос,

в доступных примерах ничего похожего не нашел, а может,

просто не понял. Файл swxJRNL.swj тоже не помог.

Задача:

- копируем текст выбранной заметки в буфер обмена

......

......

......

- вставляем из буфера текст заметки в чертеж на старое место

Спасибо.

Ссылка на сообщение
Поделиться на других сайтах


- копируем текст выбранной заметки в буфер обмена

......

......

......

- вставляем из буфера текст заметки в чертеж на старое место

<{POST_SNAPBACK}>

Тут кроется какая-то неточность: Вы копируете текст или заметку? Зачем столь сложная процедура: "копирования и вставки обратно в тоже место"? Почему вы хотите это делать через буфер обмена?, а не скажем передачей содержимого заметки в переменную и возврат содержимого переменной в туже заметку или в другую, это уже как вам больше нравиться!

Файл swxJRNL.swj тоже не помог.

<{POST_SNAPBACK}>

Если вы чего-то стоящее хотите получить этот журнал, да и запись макросов вам сильно не помогут. В солиде очень плохо и туда пападает лишь малая часть того что реально вы делаете в солиде. Лучше справку по API прочитать там много примеров и проще разобраться.

копируем текст выбранной заметки в буфер обмена

<{POST_SNAPBACK}>

Вот есть такая реализация только тут солид вобще говоря ни причем, из солида можно взять значение заметки, а копирование и вставка в буфер будет выглядеть примерно так:

Я работаю над созданием программы на VB 6.0. Как сделать так, чтобы текст из текстового файла копировался в буфер обмена ?

Ответ:

Автор ответа: Дмитрий Данелия

Dim sFileName As String, sText As String

Dim iFileNo As Integer

Private Sub Form_Load()

sFileName = "c:\config.sys"

iFileNo = FreeFile

Open sFileName For Input As iFileNo

sText = Input(LOF(iFileNo), iFileNo)

Close iFileNo

Clipboard.SetText sText

End Sub

' Получить текст из Буфера Обмена

Private Sub Form_Click()

Text1.Text = Clipboard.GetText

End Sub

Автор ответа: Шатрыкин Иван

Очистить буфер - Clipboard.Clear

Положить текст в буфер - Clipboard.SetText Text1.Text

Вставить текст из буфера - Text1.Text = Clipboard.GetText

Положить картинку в буфер - Clipboard.SetData Picture1.Picture

Вставить картинку из буфера - Picture1.Picture = Clipboard.GetData

Только тут похоже VBA не обойтись, тут полноценный Visual Basic нужен для работы с буфером обмена хотя могу ошибаться.
Ссылка на сообщение
Поделиться на других сайтах

Не совсем понятна постановка задачи... И еще, обьект Clipboard может в VB не совсем корректно работать с символами Unicode. У меня такое было, когда надо было програмно скопировать содержимое TextBox-a в буфер обмена, пришлось применять: SendKeys ("^C"). В принципе, вроде одно и тоже, а резудьтат был разный.

Ссылка на сообщение
Поделиться на других сайтах

И еще, обьект Clipboard может в VB не совсем корректно работать с символами Unicode.

<{POST_SNAPBACK}>

Полагаю что тут проблема не в Clipboard (по крайней мере не только в нем), извечная проблема ANSI в Unicode и наоборот и проблема с кодовыми страницами, по этому поводу думаю будет интересно почитать статью вот здесь: <noindex>http://www.microsoft.com/Rus/Msdn/Activ/MS...riables1_2.mspx</noindex>
Ссылка на сообщение
Поделиться на других сайтах

Полагаю что тут проблема не в Clipboard (по крайней мере не только в нем), извечная проблема ANSI в Unicode и наоборот

Я наверное не совсем точно выразился. Clipboard, я почти не применял. Так вспомнил, что была у меня года 4 назад эта проблема, при копировании в буфер имени файла чертежа, для вывода на печать в файл....
Ссылка на сообщение
Поделиться на других сайтах

Всем спасибо за помощь !

Тут кроется какая-то неточность: Вы копируете текст или заметку? Зачем столь сложная процедура: "копирования и вставки обратно в тоже место"? Почему вы хотите это делать через буфер обмена?, а не скажем передачей содержимого заметки в переменную и возврат содержимого переменной в туже заметку или в другую, это уже как вам больше нравиться!

Такая сложная процедура нужна мне, потому что текст заметки требуется отредактировать

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

выделил заметку, скопировал в буфер, запустил редактор, вставил из буфера и т.д.,

но захотелось уменьшить количество всех этих операций - макросы ведь придуманы

именно для этого ?

С буфером ничего не получилось, сделал по образцу из ответа Kelny - в макросе записываю текст

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

Ссылка на сообщение
Поделиться на других сайтах

Работать с буфером в принципе можно, нодо только объект иметь. Допустим, textbox1 of Userform1.

Тогда оттуда можно копмровать и туда можно вставлять.(Кстати, чисто для вашего случая можно там же и редактировать! А зачем вам еще лишний файл создавать и еще программу открывать!)

Или надо самому создать виртуальный новый объект.

Вот почитайте <noindex>http://www.cpearson.com/excel/clipboar.htm</noindex>

Я проверял, все работает... :smile:

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




  • Сообщения

    • Snake 60
      https://cloud.mail.ru/public/KqYB/7KDx9KfRw
    • AlexKaz
      Есть вариант не лечить файл, а использовать софт для восстановления данных с диска (или отдать диск в фирмы-реаниматоры). Комп вырубить, загрузиться с внешней системы, в идеале создать полный побайтный дамп диска перед всеми манипуляциями. Файл искать по расширению/примерному разбросу размера, примерному расположению. Есть приличная вероятность, что в файловой системе осталось несколько промежуточных копий, в том числе во временных папках операционки. Или даже в Корзине. Ещё бывает народ включает резервирование в системе, сам того не зная, и контрольные точки восстановления создаются. Останется откатить систему на нужную дату. Не забывая снять полный дамп диска перед этим.
    • davidovka
      Может Creo, T-Flex, NX, Компас, KeyShot, 3ds max.....
    • hlibhlib
      Spannmittelkonfiguration.pdf
    • Kelny
      Каждый чертёж должен быть в своём файле.   Если бы это был нейтральный формат, то возможно это и помогло, а так файлы Solidworks не каждая софтина может прочитать.   К вопросу резервирвирования надо подходить серьёзнее. Так же в настройках самой программы есть настройки настройки автосохранения и резервирования. Для начала проверьте размер файла, бывает так что проблема может быть с сохранением, а бывает так что, например, при работе на сервере, некоторые файловые системы откусывают файл и тогда от файла вообще может ни чего не остаться кроме названия. Например, были проблемы с файлами Solidworks на сервере Sinology после смены файловой системы на более продвинутую и вроде как с кэшем, так файлы при работе на сервере иногда теряли содержимое (не весь файл сохранялся), но спасал резерв за несколько часов, дней, недель, месяцев - можно был выудить хоть что-то. Если файл около нулевого размера, то шансов что-то спасти совсем нет. Если файл всё таки имеет размер, то как вариант попробовать открыть файл в более будущей версии - иногда помогает. Как-то ломался файл и не отрывался в текущей версии, зато в будущей открывался, а всего-то в чертеже имена видео переименовал и всё (вроде бы сохранялся и больше не открывался).   @Mizaz Попробуйте открыть файл только для просмотра Файл-Открыть..., выберите файл для открытия (но не открывайте), а попробуйте разные галочки для загрузки, как вариант выбрать ТОЛЬКО БЫСТРЫЙ ПРОСМОТР. Или попробовать открыть файл через eDrawings    
    • bsaidov
      Используя даже ваш файл картинка не поменялось. Все те заблокированные выражения и отсутствия выражения с обозначением резьбы все также остаются
    • davidovka
      можно попробовать отрыть другим КАДом. В файлах геометрия хранится отдельно от "дерева построения", поэтому многие КАДы, или софт для рендера, могут открыть файлы друг друга без конвертации.
    • Kelny
      рекомендую воспользовать другим вариантом: или как писал выше сделать блок, а что бы можно было разные значения вбивать под знаком, можно добавить заметке в блоке ИМЯ при редактировании блока и тогда блок будет один, а значения в нём может быть разное.   А если хочется повторить фокус с: То нужно вставлять всю строчку и не удалять пробелы (или добавлять дополинтельные), т.к. этот метод на уровне шаманства - может сработать или сбойнуть в какой-нибудь другой версии.
    • EAleksey
      Добрый день, вот этими пробелами регулируйте, у всех просто разные настройки высоты шрифтов.
    • malvi.dp
      Пару строк, можно. В модуле Roughness_run идем в процедуру "main" и перед строкой "FrmRoughness.Show" вставляем следующий код:  
×
×
  • Создать...