powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Word. Буфер обмена.
5 сообщений из 5, страница 1 из 1
Word. Буфер обмена.
    #33062800
kanalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишем:
Код: plaintext
1.
2.
Selection.WholeStory
Selection.Copy

Как потом получить данные из буфера? Они ведь там не в текстовом формате, поэтому конструкция:
Код: plaintext
1.
2.
3.
4.
5.
6.
Dim ddo As DataObject
Dim rs As ADODB.Recordset
....

ddo.GetFromClipboard
rs.Fields("Doc").Value = ddo.GetText
ругается:(
или я чего-то не понимаю?
...
Рейтинг: 0 / 0
Word. Буфер обмена.
    #33063993
Вот, только что сделал из под Access. Все работает. Думаю, что разберешься.

Код: plaintext
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.
26.
27.
28.
29.
30.
Option Compare Database
Option Explicit

Dim ddo As DataObject

Private Sub cmdGo_Click()
    Dim doc As Word.Document
    Dim wrdApp As Word.Application
    Dim rst As DAO.Recordset
    Dim strText As String

    Set ddo = New DataObject
    Set wrdApp = New Word.Application
    Set doc = wrdApp.Documents.Open("D:\1\Wd.Doc")
    
    'wrdApp.Visible = True
    
    doc.Application.Selection.WholeStory
    strText = doc.Application.Selection.Text
    ddo.SetText strText
    ddo.PutInClipboard
    
    Set rst = CurrentDb.OpenRecordset("tbl1", dbOpenDynaset)
    rst.AddNew
    ddo.GetFromClipboard
    rst("Field") = ddo.GetText( 1 )
    rst.Update
    
    Set doc = Nothing
    Set wrdApp = Nothing
End Sub

Можно заменить:

Код: plaintext
1.
2.
3.
    doc.Application.Selection.WholeStory
    strText = doc.Application.Selection.Text
    ddo.SetText strText
    ddo.PutInClipboard

На:

Код: plaintext
1.
    doc.Application.Selection.WholeStory
    doc.Application.Selection.Copy
...
Рейтинг: 0 / 0
Word. Буфер обмена.
    #33064513
kanalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пользователь2Вот, только что сделал из под Access. Все работает. Думаю, что разберешься.

Спасибо. Работает, но кладет в поле только текст... Видимо так и должно быть.
...
Рейтинг: 0 / 0
Word. Буфер обмена.
    #33064725
По-видимому да.
...
Рейтинг: 0 / 0
Word. Буфер обмена.
    #33064977
kanalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо. Сформулируем вопрос так:
Есть процедура, которая кладет файл в базу, поле типа Image.

Код: plaintext
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.
26.
27.
28.
29.
30.
31.
32.
33.
34.
Public Sub DocToBase(FilePath As String, FileName As String, Id As Long)
    'Взять с диска и запихнуть в базу
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim mstream As ADODB.Stream
    Dim ddo As New DataObject
    Dim strText As String
    
    Set cn = New ADODB.Connection
    cn.Open "Driver={SQL Server};Server=...Строка коннекта"
    
    Set rs = New ADODB.Recordset
    rs.Open "Select * from DocTest Where id = " & Id, cn, adOpenKeyset, adLockOptimistic
    rs.MoveFirst
        'Set mstream = New ADODB.Stream
        'mstream.Type = adTypeBinary
        'mstream.Open
        'mstream.LoadFromFile FilePath & FileName
    
        'rs.Fields("Doc").Value = mstream.Read
        Set fso = CreateObject("Scripting.FileSystemObject")
        
        Set f = fso.GetFile(FilePath & FileName)
        Set ts = f.OpenAsTextStream( 1 , - 1 )
        
        rs.Fields("Doc").AppendChunk ts.ReadAll()
        ts.Close
        Set fso = Nothing
        Set f = Nothing
    rs.Update
    
    rs.Close
    cn.Close
End Sub
Закоментированная часть кода реализует другой метод, тогда все работает правильно.(я специально его оставил), но нельзя получить доступ к открытому файлу:(
А вот если действовать через fso, то файл в базу кладется и даже его размер совпадает с исходным, но содержание не совпадает с исходным. Stream открывается для файла Unicode (это 2-й параметр).

Есть какой-нибудь метод положить в базу открытый в данный момент файл? из VBA.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Word. Буфер обмена.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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