powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Сформировать табличку в Clipboard
5 сообщений из 5, страница 1 из 1
Сформировать табличку в Clipboard
    #34366253
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто нибудь может предложить простейший способ как программно сформировать примитивную табличку в Clipboard, чтобы по Ctrl+V ее потом можно было вставить в Word?
...
Рейтинг: 0 / 0
Сформировать табличку в Clipboard
    #34366278
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrF,
как RTF?
...
Рейтинг: 0 / 0
Сформировать табличку в Clipboard
    #34366319
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БенедиктAndrF,как RTF?

Возможно, но как правильно будет выглядеть табличка скажем 3x2 без разных там излишеств? Все же целиком перекапывать на эту тему описание формата долго, а будучи скопированной из Word-a выдается излишне много тэгов... :( Так что хотелось бы примитивный пример...
...
Рейтинг: 0 / 0
Сформировать табличку в Clipboard
    #34366387
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пока удалось сделать так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    Dim s As String
    
    s = "{\rtf1\par " _
        & "\trowd \trgaph30\trleft-30\trrh262\cellx980\cellx1991\cellx3001 " _
        & "\intbl \qr \f0\fs20 \cf Проверка\cell \qr 2\cell\qr 3\cell \intbl \row " _
        & "\trowd \trgaph30\trleft-30\trrh262\cellx980\cellx1991\cellx3001 " _
        & "\intbl \qr \f0\fs20 \cf 4\cell \qr 5\cell\qr 6\cell \intbl \row} "

    Clipboard.Clear
    Clipboard.SetText s, vbCFRTF
...
Рейтинг: 0 / 0
Сформировать табличку в Clipboard
    #34366861
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И окончательно (что мне и нужно было):

Код: 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.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
Public Sub SetClipboardTableRTF(r As ADODB.Recordset)
    Dim sb As New StringBuilder, f As ADODB.Field, sr As String, _
        s As String, ss As String, b As Boolean, sf As String, i As Long

    sb.AppendLine "{\rtf1\par "
    
    For Each f In r.Fields
        Select Case f.Type
            Case adCurrency
                i = i +  1500 
            Case adTinyInt, adSmallInt, adInteger
                i = i +  1200 
            Case adSingle, adDouble
                i = i +  1500 
            Case adDate, adDBTimeStamp
                i = i +  1500 
            Case adBoolean
                i = i +  700 
            Case Else
                i = i +  2500 
        End Select
        sr = sr & "\cellx" & i
    Next f
    sr = "\trowd \trgaph30\trleft-30\trrh262" & sr & " "

    Do Until r.EOF
        sb.AppendLine sr
        b = True
        For Each f In r.Fields
            Select Case f.Type
                Case adCurrency
                    s = "r": sf = "#,##0.00"
                Case adTinyInt, adSmallInt, adInteger
                    s = "r": sf = "#,##0"
                Case adSingle, adDouble
                    s = "r": sf = "#,##0.000"
                Case adDate, adDBTimeStamp
                    s = "c": sf = "Short Date"
                Case adBoolean
                    s = "c": sf = "b"
                Case Else
                    s = "l": sf = vbNullString
            End Select
            If IsNull(f) Then
                ss = "\cell"
            Else
                If Len(sf) Then
                    If sf = "b" Then
                        ss = IIf(f, "Да", "Нет") & "\cell"
                    Else
                        ss = Replace(Format$(f, sf), "\", "\\") & "\cell"
                    End If
                Else
                    ss = Replace(f, "\", "\\") & "\cell"
                End If
            End If
            If b Then
                sb.Append "\intbl \q" & s & " \f0\fs20 \cf " & ss: b = False
            Else
                sb.Append "\q" & s & " " & ss
            End If
        Next f
        sb.AppendLine " \intbl \row "
        r.MoveNext
    Loop
    sb.AppendLine "}"
    
    Clipboard.Clear
    Clipboard.SetText sb.Value, vbCFRTF
End Sub
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Сформировать табличку в Clipboard
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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