powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как корректно выводить текст Unicode-ANSI ?
10 сообщений из 10, страница 1 из 1
Как корректно выводить текст Unicode-ANSI ?
    #35238213
Zioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Через буфер обмена вывожу HTML текст, с помощью процедуры
HTMLToClipboard:

Private Declare Function RegisterClipboardFormat Lib "user32" _
Alias "RegisterClipboardFormatA" (ByVal lpString As String) _
As Long

Public Sub HTMLToClipboard(HTMLText As String)
Dim nCFHTML As Long
Dim nClipboardText As String

nCFHTML = RegisterClipboardFormat("HTML Format")
nClipboardText = "Version:0.9" & vbCrLf
nClipboardText = nClipboardText & "StartHTML:-1" & vbCrLf
nClipboardText = nClipboardText & "EndHTML:-1" & vbCrLf
nClipboardText = nClipboardText & "StartFragment:000081" & vbCrLf
nClipboardText = nClipboardText & "EndFragment:°°°°°°" & vbCrLf
nClipboardText = nClipboardText & HTMLText & vbCrLf
nClipboardText = Replace(nClipboardText, "°°°°°°", _
Format$(Len(nClipboardText), "000000"))

With New DataObject
.Clear
.SetText StrConv(nClipboardText, vbFromUnicode), nCFHTML
.PutInClipboard
End With
End Sub

Sub insertHTMLtest()

Dim HTMLText As String
HTMLText = "<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.01//EN"" ""http://www.w3.org/TR/html4/strict.dtd"">" & _
"<html>" & _
"<head>" & _
"<title>AAA</title>" & _
"</head>" & _
"<body>" & _
"<table border border-collapse: collapse >" & _
"<tr>" & _
"<td>11</td>" & _
"<td>14</td>" & _
"</tr>" & _
"<tr>" & _
"<td>РУССКИЙ ТЕКСТ</td>" & _
"<td>112</td>" & _
"</tr>" & _
"</table>" & _
"</body>" & _
"</html>"

HTMLToClipboard (HTMLText)

Selection.PasteAndFormat (wdPasteDefault)

End Sub


НО!!! проблема возникла:
При выводе текста вместо русских букв - карявки

Я разбирался - это происходит из за преобразования:
.SetText StrConv(nClipboardText, vbFromUnicode), nCFHTML

Как можно это исправить?
Что можно сделать?
...
Рейтинг: 0 / 0
Как корректно выводить текст Unicode-ANSI ?
    #35238387
Фотография michael R
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй так но это только для русского
.SetText StrConv(nClipboardText, vbFromUnicode ,1049), nCFHTML
...
Рейтинг: 0 / 0
Как корректно выводить текст Unicode-ANSI ?
    #35238868
Zioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал так:

.SetText StrConv(nClipboardText, vbFromUnicode ,1049), nCFHTML

Все равно корявки - если пробовать текст русский - то на выходе после
такого преобразования - конкретные китайские иероглифы

Как побороть незнаю - уже замучила эта проблема!!!!!!!!!!!1
...
Рейтинг: 0 / 0
Как корректно выводить текст Unicode-ANSI ?
    #35239050
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
<head>
...
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
...
</head>
...
Рейтинг: 0 / 0
Как корректно выводить текст Unicode-ANSI ?
    #35239265
Zioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если добавить:

<head>
...
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
...
</head>


то тоже не работает:
--------------------
! 11 ! 14 !
! Гёʈɠ҅ʑҼ/td> ! 112 ! <-- Здесь должнобыть "РУССКИЕ БУКВЫ"
--------------------

Добавил в HTML так:

Private Declare Function RegisterClipboardFormat Lib "user32" _
Alias "RegisterClipboardFormatA" (ByVal lpString As String) _
As Long

Public Sub HTMLToClipboard2(HTMLText As String)
Dim nCFHTML As Long
Dim nClipboardText As String

nCFHTML = RegisterClipboardFormat("HTML Format")
nClipboardText = "Version:0.9" & vbCrLf
nClipboardText = nClipboardText & "StartHTML:-1" & vbCrLf
nClipboardText = nClipboardText & "EndHTML:-1" & vbCrLf
nClipboardText = nClipboardText & "StartFragment:000081" & vbCrLf
nClipboardText = nClipboardText & "EndFragment:°°°°°°" & vbCrLf
nClipboardText = nClipboardText & HTMLText & vbCrLf
nClipboardText = Replace(nClipboardText, "°°°°°°", _
Format$(Len(nClipboardText), "000000"))

With New DataObject
.Clear
.SetText StrConv(nClipboardText, vbFromUnicode, 1049), nCFHTML
.PutInClipboard
End With
End Sub

Sub insertHTMLtest2()

Dim HTMLText As String
HTMLText = "<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.01//EN"" ""http://www.w3.org/TR/html4/strict.dtd"">" & _
"<html>" & _
"<head>" & _
"<meta http-equiv=""Content-Type"" content=""text/html; charset=windows-1251"">" & _
"<title>AAA</title>" & _
"</head>" & _
"<body>" & _
"<table border border-collapse: collapse >" & _
"<tr>" & _
"<td>11</td>" & _
"<td>14555</td>" & _
"</tr>" & _
"<tr>" & _
"<td>РУССКИЕ БУКВЫ</td>" & _
"<td>112</td>" & _
"</tr>" & _
"</table>" & _
"</body>" & _
"</html>"

HTMLToClipboard (HTMLText)

Selection.PasteAndFormat (wdPasteDefault)

End Sub
...
Рейтинг: 0 / 0
Как корректно выводить текст Unicode-ANSI ?
    #35239336
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
откуда копируете в буфер обмена? сначала установите клавиатуру в русскую раскладку (ищите примеры на API), потом копируйте в буфер.
...
Рейтинг: 0 / 0
Как корректно выводить текст Unicode-ANSI ?
    #35239923
Zioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В буфер обмена - не копирую. Как в примере (ниже) - текст "РУССКИЕ БУКВЫ" находится, прямо в исходном коде процедуры.

Раскладка вроде как не причем, (хотя я вставил переключение на русскую раскладку),
не помогло :(



Public Declare Function GetKeyboardLayout Lib "user32" _
(ByVal dwLayout As Long) As Long
Public Declare Function ActivateKeyboardLayout Lib "user32" _
(ByVal HKL As Long, ByVal flags As Long) As Long


' Раскладки клавиатуры
Public Enum enmKeybordLayout
kbrdEnglish = 67699721
kbrdRussian = 68748313
End Enum


' ============================================================
' Назначение:
' Включить выбранную раскладку клавы
' Аргументы:
' Требуемая раскладка
' Пример: SetLayout kbrdEnglish
' ============================================================
Public Sub SetLayout(ByVal myLayout As enmKeybordLayout)
Dim lngReturn As Long
Dim lngCodeKeybord As Long

' Получить текущую раскладку
lngReturn = GetKeyboardLayout(lngCodeKeybord)
'Если раскладки не совпадают, значит, надо переключиться
If lngReturn <> CLng(myLayout) Then
Call ActivateKeyboardLayout(HKL_NEXT, KLF_REORDER)
End If

End Sub



Private Declare Function RegisterClipboardFormat Lib "user32" _
Alias "RegisterClipboardFormatA" (ByVal lpString As String) _
As Long

Public Sub HTMLToClipboard2(HTMLText As String)
Dim nCFHTML As Long
Dim nClipboardText As String

nCFHTML = RegisterClipboardFormat("HTML Format")
nClipboardText = "Version:0.9" & vbCrLf
nClipboardText = nClipboardText & "StartHTML:-1" & vbCrLf
nClipboardText = nClipboardText & "EndHTML:-1" & vbCrLf
nClipboardText = nClipboardText & "StartFragment:000081" & vbCrLf
nClipboardText = nClipboardText & "EndFragment:°°°°°°" & vbCrLf
nClipboardText = nClipboardText & HTMLText & vbCrLf
nClipboardText = Replace(nClipboardText, "°°°°°°", _
Format$(Len(nClipboardText), "000000"))

With New DataObject
.Clear

' устанавливаем русскую раскладку клавиатуры
SetLayout (kbrdRussian)

.SetText StrConv(nClipboardText, vbFromUnicode, 1049), nCFHTML
.PutInClipboard
End With
End Sub

Sub insertHTMLtest2()

Dim HTMLText As String
HTMLText = "<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.01//EN"" ""http://www.w3.org/TR/html4/strict.dtd"">" & _
"<html>" & _
"<head>" & _
"<meta http-equiv=""Content-Type"" content=""text/html; charset=windows-1251"">" & _
"<title>AAA</title>" & _
"</head>" & _
"<body>" & _
"<table border border-collapse: collapse >" & _
"<tr>" & _
"<td>11</td>" & _
"<td>14555</td>" & _
"</tr>" & _
"<tr>" & _
"<td>РУССКИЕ БУКВЫ</td>" & _
"<td>112</td>" & _
"</tr>" & _
"</table>" & _
"</body>" & _
"</html>"

HTMLToClipboard (HTMLText)

Selection.PasteAndFormat (wdPasteDefault)

End Sub
...
Рейтинг: 0 / 0
Как корректно выводить текст Unicode-ANSI ?
    #35239972
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а зачем вообще тут работа с буфером обмена, может проще сделать форматирование средствами самого экселя?
...
Рейтинг: 0 / 0
Как корректно выводить текст Unicode-ANSI ?
    #35240134
Zioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это в ворде,

в MS Word - загружается HTML текст(таблица) из базы джанных, и вставляется в документ.
Сама таблица - это HTML таблица

Можно и без буффера обмена - только как?

Есть вариант вставлять из файла HTML текст - там все работает,
но недостаток - каждый раз дергать файл - записывать и вставлять из
него в MS Word.
Хчется вставлять не через файл.

Но если не получиться - придется через файл.
...
Рейтинг: 0 / 0
Как корректно выводить текст Unicode-ANSI ?
    #35240463
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно табличку сделать налету вордовыми средствами , пробежась по рекордсету в цикле.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как корректно выводить текст Unicode-ANSI ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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