Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Проблема с InsertDatabase / 15 сообщений из 15, страница 1 из 1
09.11.2009, 14:35
    #36298827
seawolf667
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с InsertDatabase
Возникла проблема с 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
09.11.2009, 14:36
    #36298830
seawolf667
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с InsertDatabase
Забыл файл приложить!
...
Рейтинг: 0 / 0
09.11.2009, 15:06
    #36298941
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с InsertDatabase
А если пересохранить файл в Unicode? У меня сработало.
...
Рейтинг: 0 / 0
09.11.2009, 15:37
    #36299038
seawolf667
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с InsertDatabase
Действительно работает. Однако есть-ли возможность такого пересохранения программно без участия оператора сразу целиком файла или построчно ?

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

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

myString = StrConv(bBuf, vbUnicode)
и далее пишем строку myString в файл и затем insertdatabase.
по идее должно подойти но пока не получается
...
Рейтинг: 0 / 0
10.11.2009, 09:28
    #36300353
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с InsertDatabase
Что-то 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
10.11.2009, 10:49
    #36300547
seawolf667
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с InsertDatabase
Hugo121, да казалось вот решение и облом. Руки бы Гейтсу вырвал за такие вещи - никаким образом его косяки не обойти!
...
Рейтинг: 0 / 0
10.11.2009, 11:38
    #36300673
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с InsertDatabase
Нарыл на ( поиск в Гугле по "Если только русские символы нужно перекодировать в 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
10.11.2009, 11:39
    #36300676
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с InsertDatabase
Да, ещё добавил ";" в Print #2, myString; - убирает лишний символ.
...
Рейтинг: 0 / 0
10.11.2009, 13:37
    #36301046
seawolf667
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с InsertDatabase
Hugo121,
Похоже это действительно решило проблему
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Проблема с InsertDatabase / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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