powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Проблема с InsertDatabase
15 сообщений из 15, страница 1 из 1
Проблема с InsertDatabase
    #36298827
seawolf667
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возникла проблема с word 2003/2007 на платформе Windows XP (на windows 98 работает)
При вставке файлов в кодировке 1251 часть из них неверно распознается и вставляется как Кодированный текст (для проверки можно использовать InsertFile) а другая часть нормально как текст.

Как заставить работать сие чудо всегда корректно? Файл для проверки прилагаю!

Sub DataToWord()
With Selection
.Collapse Direction:=wdCollapseEnd
.Range.InsertDatabase _
SQLStatement:="SELECT M_1_, M_2_, M_3_, M_4_ FROM Путь\Имя файла.txt", _
DataSource:="Путь\Имя файла.txt"
End With
End Sub
...
Рейтинг: 0 / 0
Проблема с InsertDatabase
    #36298830
seawolf667
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Забыл файл приложить!
...
Рейтинг: 0 / 0
Проблема с InsertDatabase
    #36298941
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если пересохранить файл в Unicode? У меня сработало.
...
Рейтинг: 0 / 0
Проблема с InsertDatabase
    #36299038
seawolf667
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Действительно работает. Однако есть-ли возможность такого пересохранения программно без участия оператора сразу целиком файла или построчно ?

PS. Дело в том что эти txt появляются при переборе dos файлов в цикле и после подготовки вставляются в doc в виде таблиц. Преобразование идет через DosToWin. Пользователь при этом не участвует.
...
Рейтинг: 0 / 0
Проблема с InsertDatabase
    #36299252
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуй тут пока http://www.google.lv/search?hl=en&source=hp&q=ansi2unicode&aq=1&oq=ANSI2
ansi2unicode_0.0.1.zip почти работает, последнюю строку в полученном файле надо удалить.
...
Рейтинг: 0 / 0
Проблема с InsertDatabase
    #36299281
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
http://www.brothersoft.com/ansi2uni-download-77293.html - работает, конвертирует пачками, но не нашёл коммандной строки...
...
Рейтинг: 0 / 0
Проблема с InsertDatabase
    #36299600
seawolf667
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121, спасибо за ссылки. Я их посмотрю позже. Идея с преобразованием в юникод может решить эту проблему.

Но я сейчас ищу способ создания файлов ansi в юникоде для использования под insertdatabase.
Я беру на входе dos делаю его в win и вставляю в doc, для insertdatabase нужно преобразовать win в юникод и записать сразу в файл для вставки и затем вставить. На VBA я не работал лет 10. Сейчас я хочу преобразовать строку win в юникод - здесь буду рад любой мысли. Пока читаю функцию Conv.
...
Рейтинг: 0 / 0
Проблема с InsertDatabase
    #36299615
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я тут поискал WSH (VBS)
...
Рейтинг: 0 / 0
Проблема с InsertDatabase
    #36299621
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так вот (вот же не спросясь ушло...), нашёл только код для DosToWin (ANSI) (проверил - работает... но не надо)
...
Рейтинг: 0 / 0
Проблема с InsertDatabase
    #36299624
seawolf667
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121, думаю

myString = StrConv(bBuf, vbUnicode)
и далее пишем строку myString в файл и затем insertdatabase.
по идее должно подойти но пока не получается
...
Рейтинг: 0 / 0
Проблема с InsertDatabase
    #36300353
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что-то vbUnicode не той системы файл генерит :) Файл есть, но не подходит. Если его пересохранить блокнотом, то открывается.
(c:\2\test.txt (ansi)-> c:\2\temp.txt (unicode))

Код: 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.
Sub DataToWord()

Dim varlist As String
Dim myString As String
Dim s As String
Dim i As Long

Open "c:\2\test.txt" For Input As # 1 

    i =  0 
    While Not EOF( 1 )
        Line Input # 1 , s
        If i =  0  Then
        varlist = s
        Else
         varlist = varlist & vbNewLine & s
        End If
        i = i +  1 
    Wend
    
Close # 1 

myString = StrConv(varlist, vbUnicode)

Open "c:\2\temp.txt" For Output As # 2     ' Open file for output.

Print # 2 , myString    ' Print text to file.

Close # 2 


With Selection
.Collapse Direction:=wdCollapseEnd
.Range.InsertDatabase _
SQLStatement:="SELECT M_1_, M_2_, M_3_, M_4_ FROM c:\2\temp.txt", _
DataSource:="c:\2\temp.txt"
End With
End Sub
...
Рейтинг: 0 / 0
Проблема с InsertDatabase
    #36300547
seawolf667
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121, да казалось вот решение и облом. Руки бы Гейтсу вырвал за такие вещи - никаким образом его косяки не обойти!
...
Рейтинг: 0 / 0
Проблема с InsertDatabase
    #36300673
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нарыл на ( поиск в Гугле по "Если только русские символы нужно перекодировать в UTF8, то я использую вот это: " )

В итоге работает!
Код: 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.
Sub DataToWord()

Dim varlist As String
Dim myString As String
Dim s As String
Dim i As Long

Open "c:\2\test.txt" For Input As # 1 

    i =  0 
    While Not EOF( 1 )
        Line Input # 1 , s
        If i =  0  Then
        varlist = s
        Else
         varlist = varlist & vbNewLine & s
        End If
        i = i +  1 
    Wend
    
Close # 1 

myString = ToUTF8(varlist)

Open "c:\2\temp.txt" For Output As # 2     ' Open file for output.

Print # 2 , myString;    ' Print text to file.

Close # 2 


With Selection
.Collapse Direction:=wdCollapseEnd
.Range.InsertDatabase _
SQLStatement:="SELECT M_1_, M_2_, M_3_, M_4_ FROM c:\2\temp.txt", _
DataSource:="c:\2\temp.txt"
End With
End Sub


Public Function ToUTF8(Text As String) As String
Dim i As Long, IC As Long

IC = Len(Text)
For i =  1  To IC
  ToUTF8 = ToUTF8 & ConvertToUTF8(Mid$(Text, i,  1 ))
Next
End Function

Private Function ConvertToUTF8(Char As String) As String
If Char = "Ø" Then
  ConvertToUTF8 = Chr$( 208 ) & Chr$( 129 )
ElseIf Char = "ø" Then
  ConvertToUTF8 = Chr$( 209 ) & Chr$( 145 )
ElseIf (Asc(Char) >=  192  And Asc(Char) <=  223 ) Then
  ConvertToUTF8 = Chr$( 208 ) & Chr$(Asc(Char) -  48 )
ElseIf (Asc(Char) >=  224  And Asc(Char) <=  239 ) Then
  ConvertToUTF8 = Chr$( 208 ) & Chr$(Asc(Char) -  48 )
ElseIf (Asc(Char) >=  240  And Asc(Char) <=  255 ) Then
  ConvertToUTF8 = Chr$( 209 ) & Chr$(Asc(Char) -  112 )
Else
  ConvertToUTF8 = Char
End If
End Function

...
Рейтинг: 0 / 0
Проблема с InsertDatabase
    #36300676
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, ещё добавил ";" в Print #2, myString; - убирает лишний символ.
...
Рейтинг: 0 / 0
Проблема с InsertDatabase
    #36301046
seawolf667
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121,
Похоже это действительно решило проблему
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Проблема с InsertDatabase
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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