powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Установить ширину столбца в Word
41 сообщений из 41, показаны все 2 страниц
Установить ширину столбца в Word
    #36710691
Katsy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не получается. Пишу так:
Код: plaintext
tblList.Cell( 1 ,  1 ).Column.Width =  10 
и так:
Код: plaintext
tblList.Cell( 1 ,  1 ).Column.Width = "10"
В обоих случаях выдает ошибку:
---------------------------
Microsoft Visual Basic
---------------------------
Run-time error '4608':

Значение лежит вне допустимого диапазона
---------------------------
ОК Справка
---------------------------
Что не так?
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36710697
Katsy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пробую еще так:
Код: plaintext
tblList.Columns( 1 ).Width =  10 
та же ошибка
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36710720
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KatsyЗначение лежит вне допустимого диапазона

Что не так?
мне кажется, значение лежит вне допустимого диапазона
попробуйте 100
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36710783
Katsy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

и если 100 та же ошибка. Кажется, я догадываюсь, в чем косяк. У меня таблица создается так:
Код: plaintext
1.
Set tblList = Doc.Tables.Add(Doc.ActiveWindow.Selection.Range, NumRows:=intRowsRst +  2 , NumColumns:= 4 , DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
        wdAutoFitContent)
вот может возникает конфликт между шириной по содержимому и устанавливоемой вручную шириной?
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36710817
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katsy, шикарно, изначально спрашивать: tblList.Cell(1, 1).Column.Width = 10
А затем уже в конце:
Set tblList = Doc.Tables.Add(Doc.ActiveWindow.Selection.Range, NumRows:=intRowsRst + 2, NumColumns:=4, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
wdAutoFitContent)
Это ВБ, ВБА, Ворд?
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36710843
Katsy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,

ну кто ж знал, что они взаимосвязаны...
Это Word
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36710856
Katsy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если
Код: plaintext
Set tblList = Doc.Tables.Add(Doc.ActiveWindow.Selection.Range, NumRows:=intRowsRst +  2 , NumColumns:= 4 )
и ширина хотя бы 20, ошибки не возникает. Если ширина 10, возникает ошибка.
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36710897
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katsy, ВБ или ВБА?, если ВБ я пас!
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36710907
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katsy,

попробуйте SetWidth вместо Width
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36710941
Katsy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,

VBA

Shocker.Pro,

да меня устраивают значения больше 10, спасибо :)
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36710970
Фотография vlth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katsyда меня устраивают значения больше 10

Меньше 11 и руками не выставить ))
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36711535
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katsy, я так понимаю, теперь надо спрашивать, чему равно Doc
Выложите весь отрезок, пожалуйста
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36711541
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович ЭндрюKatsy, я так понимаю, теперь надо спрашивать, чему равно Doc
Выложите весь отрезок, пожалуйста http://sql.ru/forum/actualthread.aspx?tid=768491&hl=doc#8971511
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36711640
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katsy, Выложите весь отрезок, пожалуйста
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36712269
Katsy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,

Код: 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.
    Dim ObjWord As Variant
    Dim PathDOT As String
    
    'Создаем объект Word
    Set ObjWord = New Word.Application
    PathDOT = "C:"
    Dim Doc As Document
    For intLoopRow =  0  To intRows -  1 
        'Создаем новый документ на основе шаблона
        Set Doc = Nothing
        Set Doc = ObjWord.Documents.Add(PathDOT & "\" & "Распоряжение.doc")
        ObjWord.Visible = True
        'Переходим в конец документа
        Doc.ActiveWindow.Selection.EndKey Unit:=wdStory
        Doc.ActiveWindow.Selection.InsertBreak Type:=wdPageBreak
        Doc.ActiveWindow.Selection.Font.Size =  12 
        'Создаем пустую таблицу
        Set tblList = Doc.Tables.Add(Doc.ActiveWindow.Selection.Range, NumRows:=intRowsRst +  2 , NumColumns:= 4 )
        With tblList
            If .Style <> "Сетка таблицы" Then
                .Style = "Сетка таблицы"
            End If
            .ApplyStyleHeadingRows = True
            .ApplyStyleLastRow = False
            .ApplyStyleFirstColumn = True
            .ApplyStyleLastColumn = False
            .ApplyStyleRowBands = True
            .ApplyStyleColumnBands = False
        End With
        tblList.Select
        'Заполнение таблицы
        intItog =  0 
        tblList.Columns( 1 ).Width =  45 
        tblList.Columns( 2 ).Width =  250 
        tblList.Columns( 3 ).Width =  110 
        tblList.Columns( 4 ).Width =  65 
        tblList.Cell( 1 ,  1 ).Range.InsertAfter "№ п/п"
        tblList.Cell( 1 ,  2 ).Range.InsertAfter "ФИО"
        tblList.Cell( 1 ,  3 ).Range.InsertAfter "Номер карты"
        tblList.Cell( 1 ,  4 ).Range.InsertAfter "Комиссия"
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36712337
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katsy,
спаибо за ответ. Можно поинтерисоваться у Вас, в этой части:
Код: plaintext
1.
2.
Set Doc = Nothing
Set Doc = ObjWord.Documents.Add(PathDOT & "\" & "Распоряжение.doc")
В такой последовательности они зачем идут???
Как я понял, это не весь скрипт, как минимум не хватает строки оканчивающей цикл.
Выложите весь отрезок, пожалуйста. Спасибо
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36712501
Katsy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,

по совету: Shocker.Pro

могу выложить весь. Только он большой.

Код: 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.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
Private Sub btnRasp_Click()
    'Создание подключения к базе
    Dim cnn As New ADODB.Connection
    cnn.ConnectionString = "Provider=MSDASQL.1;" _
    & "Data Source=PROD; User ID=yakunina; Password=soykatsy"
    cnn.CommandTimeout =  0 
    cnn.Open
    'Открываем набор данных
    Dim rs As New ADODB.Recordset
    rs.Open "select ovp.AD_OF_NAME, oo.NAME, oo.BANK_ACC, ovp.FEE_YEAR, oo.RECV_DS, fi.NAME, " _
    & "ovp.ORGNAME , oo.Code, ovp.ORGCODE, oo.AMND_DATE, oo.AMND_STATE, ovp.AMND_STATE " _
    & "from ows.client cl, ows.service s, ows.trans_subtype ts, ows.trans_type tt, ows.acnt_contract acc, " _
    & "ows.contr_status cs, ows.acnt_contract ac, ows.f_i fi, ows.contr_subtype cst, ows.opt_v_product ovp, " _
    & "ows.appl_product ap, ows.serv_pack sp, ows.opt_organisation oo " _
    & "where fi.ID = ap.f_i and fi.amnd_state = 'A' and fi.id = '1' and ap.pcat = 'C' " _
    & "and ap.con_cat = 'C' and ap.amnd_state = 'A' and ac.product = ap.internal_code " _
    & "and ac.amnd_state = 'A' and ac.CON_CAT = 'C' and ac.CCAT ='P' and to_date(ac.card_expire,'YYMM') > sysdate-30 " _
    & "and substr(ac.card_expire,3,2) = to_char(trunc(sysdate-30, 'MM'), 'MM') and cs.id = ac.contr_status " _
    & "and cs.amnd_state = 'A' and cs.external_code not in ('14', 'CB', 'CT', 'CU') and cl.id = ac.client__id " _
    & "and cl.amnd_state = 'A' and ac.CONTR_SUBTYPE__ID = cst.id and cst.AMND_STATE = 'A' " _
    & "and months_between(to_date(ac.card_expire,'YYMM'), trunc(sysdate-30, 'MM'))/12 < cst.EXPIRE_FOR_NEW/12 " _
    & "and months_between(to_date(ac.card_expire,'YYMM'), trunc(sysdate-30, 'MM'))/12 > 0 " _
    & "and acc.id = ac.acnt_contract__oid and acc.amnd_state = 'A' and ap.INTERNAL_CODE = ovp.APPL_PRODUCT " _
    & "and ovp.AMND_STATE = 'A' and sp.id = ap.service_pack and sp.amnd_state = 'A' and sp.name like '%-ZP%' " _
    & "and sp.name not like '%-ZP7%' and s.serv_pack__oid = ap.service_pack and s.amnd_state = 'A' " _
    & "and s.trans_type_t = ts.id and ts.amnd_state = 'A' and ts.trans_type__oid = tt.id and tt.amnd_state = 'A' " _
    & "and tt.name = 'Card Fee Yearly' and s.fee_base < 0.01 and ovp.ORGCODE = oo.code and oo.amnd_state = 'A' " _
    & "group by ovp.AD_OF_NAME, oo.NAME, oo.BANK_ACC, ovp.FEE_YEAR, oo.RECV_DS, fi.NAME, " _
    & "ovp.ORGNAME , oo.Code, ovp.ORGCODE, oo.AMND_DATE, oo.AMND_STATE, ovp.AMND_STATE " _
    & "order by fi.name, ovp.ad_of_name, oo.name", cnn
    
    Dim arrayRows As Variant, arrayRowsRst As Variant
    
    Dim intRow As Integer, intRst As Integer

    Dim intRows As Integer, intRowsRst As Integer, intItog As Integer
    
    Dim strClientName As String, strFileName As String, strFee As String, strItog As String
    
    Dim strFeeType As String, strUserFIO As String
    
    Dim intLoopRow As Integer, intLoopCol As Integer
    Dim lenLastName As Integer
    Dim Month1Day As Date
    
    Dim ObjWord As Variant
    Dim PathDOT As String
    
    'Создаем объект Word
    Set ObjWord = New Word.Application
    PathDOT = "C:"
    Dim Doc As Document
    'Записываем ФИО исполнителя в переменную
    lenLastName = InStr(Application.UserName, " ")
    strUserFIO = Left(Application.UserName, lenLastName) & Application.UserInitials
    'Определяем первый рабочий день месяца
    Month1Day = CDate("01." & Month(Date) & "." & Year(Date))
    If Weekday(Month1Day) =  1  Then
        Month1Day = Month1Day +  1 
    ElseIf Weekday(Month1Day) =  7  Then
        Month1Day = Month1Day +  2 
    End If
    'Находим число записей в наборе
    rs.MoveFirst
    intRows =  0 
    Do While Not rs.EOF
        intRows = intRows +  1 
        rs.MoveNext
    Loop
    rs.MoveFirst
    'Получаем массив записей
    arrayRows = rs.GetRows(intRows)
    'Объявляем набор данных
    Dim rst As New ADODB.Recordset
    'Объявляем таблицу
    Dim tblList As Table
    'Проход по записям массива
    For intLoopRow =  0  To intRows -  1 
        'Создаем новый документ на основе шаблона
        Set Doc = Nothing
        Set Doc = ObjWord.Documents.Add(PathDOT & "\" & "Распоряжение.doc")
        ObjWord.Visible = True
                'Запрашиваем данные из базы
                rst.Open "select cl.last_nam last_name, cl.first_nam first_name, cl.father_s_nam father_s_name, " _
                & "substr(ac.contract_number,1,6) || '******' || substr(ac.contract_number,12,4) contract_number, " _
                & "ovp.fee_year, ovp.curr from ows.client cl, ows.service s, ows.trans_subtype ts, ows.trans_type tt, ows.acnt_contract acc, " _
                & "ows.contr_status cs, ows.acnt_contract ac, ows.f_i fi, ows.contr_subtype cst, ows.opt_v_product ovp, ows.appl_product ap, " _
                & "ows.serv_pack sp, ows.opt_organisation oo where fi.ID = ap.f_i and fi.amnd_state = 'A' and ap.pcat = 'C' " _
                & "and ap.con_cat = 'C' and ap.amnd_state = 'A' and ac.product = ap.internal_code " _
                & "and ac.amnd_state = 'A' and ac.CON_CAT = 'C' and ac.CCAT ='P' and to_date(ac.card_expire,'YYMM') > sysdate-30 " _
                & "and substr(ac.card_expire,3,2) = to_char(trunc(sysdate-30, 'MM'), 'MM') and cs.id = ac.contr_status " _
                & "and cs.amnd_state = 'A' and cs.external_code not in ('14', 'CB', 'CT', 'CU') and cl.id = ac.client__id " _
                & "and cl.amnd_state = 'A' and ac.CONTR_SUBTYPE__ID = cst.id and cst.AMND_STATE = 'A' " _
                & "and months_between(to_date(ac.card_expire,'YYMM'), trunc(sysdate-30, 'MM'))/12 < cst.EXPIRE_FOR_NEW/12 " _
                & "and months_between(to_date(ac.card_expire,'YYMM'), trunc(sysdate-30, 'MM'))/12 > 0 " _
                & "and acc.id = ac.acnt_contract__oid and acc.amnd_state = 'A' and ap.INTERNAL_CODE = ovp.APPL_PRODUCT " _
                & "and ovp.AMND_STATE = 'A' and sp.id = ap.service_pack and sp.amnd_state = 'A' and sp.name like '%-ZP%' " _
                & "and sp.name not like '%-ZP7%' and s.serv_pack__oid = ap.service_pack and s.amnd_state = 'A' " _
                & "and s.trans_type_t = ts.id and ts.amnd_state = 'A' and ts.trans_type__oid = tt.id and tt.amnd_state = 'A' " _
                & "and tt.name = 'Card Fee Yearly' and s.fee_base < 0.01 AND ovp.fee_year = '" + CStr(arrayRows( 3 , intLoopRow)) + "' " _
                & "and ovp.ORGCODE = oo.code and oo.amnd_state = 'A' AND oo.name = '" + CStr(arrayRows( 1 , intLoopRow)) + "' " _
                & "order by last_name, first_name, father_s_name", cnn
        'Находим число записей в наборе
        If Not rst.EOF Then
            rst.MoveFirst
            intRowsRst =  0 
            Do While Not rst.EOF
                intRowsRst = intRowsRst +  1 
                rst.MoveNext
            Loop
            rst.MoveFirst
            arrayRowsRst = rst.GetRows(intRowsRst)
        Else
            intRowsRst =  0 
        End If
        'Вводим данные из массива в шаблон
        With ObjWord.ActiveDocument.Bookmarks
            .Item("OfficeCode").Range.Text = arrayRows( 0 , intLoopRow)
            .Item("CurrDate").Range.Text = Date
            .Item("Name").Range.Text = arrayRows( 1 , intLoopRow)
            
            If arrayRows( 2 , intLoopRow) <> "Null" Then
                .Item("BankAcc").Range.Text = "№ " & arrayRows( 2 , intLoopRow)
            Else
                .Item("BankAcc").Range.Text = ""
            End If
            Select Case arrayRowsRst( 5 ,  0 )
            Case  810 
                strFeeType = "рублей 00 коп."
            Case  840 
                strFeeType = "долларов 00 центов"
            Case  978 
                strFeeType = "евро 00 евроцентов"
            End Select
            .Item("FeeYear").Range.Text = intRowsRst * CInt(arrayRows( 3 , intLoopRow))
            If CInt(arrayRows( 3 , intLoopRow)) =  0  Then
                .Item("FeeYears").Range.Text = "ноль " + strFeeType
            Else
                .Item("FeeYears").Range.Text = TextSum(intRowsRst * CInt(arrayRows( 3 , intLoopRow)), arrayRowsRst( 5 ,  0 ))
            End If
            .Item("CardCount").Range.Text = intRowsRst
            .Item("Month1Day").Range.Text = Month1Day
            If arrayRows( 4 , intLoopRow) <> "Null" Then
                .Item("NoteDoc").Range.Text = arrayRows( 4 , intLoopRow)
            Else
                .Item("NoteDoc").Range.Text = "RDF" '?What needs?
            End If
            .Item("FIO").Range.Text = strUserFIO
        End With
        'Переходим в конец документа
        Doc.ActiveWindow.Selection.EndKey Unit:=wdStory
        Doc.ActiveWindow.Selection.InsertBreak Type:=wdPageBreak
        Doc.ActiveWindow.Selection.Font.Size =  12 
        'Создаем пустую таблицу
        Set tblList = Doc.Tables.Add(Doc.ActiveWindow.Selection.Range, NumRows:=intRowsRst +  2 , NumColumns:= 4 )
        With tblList
            If .Style <> "Сетка таблицы" Then
                .Style = "Сетка таблицы"
            End If
            .ApplyStyleHeadingRows = True
            .ApplyStyleLastRow = False
            .ApplyStyleFirstColumn = True
            .ApplyStyleLastColumn = False
            .ApplyStyleRowBands = True
            .ApplyStyleColumnBands = False
        End With
        tblList.Select
        'Заполнение таблицы
        intItog =  0 
        tblList.Columns( 1 ).Width =  45 
        tblList.Columns( 2 ).Width =  250 
        tblList.Columns( 3 ).Width =  110 
        tblList.Columns( 4 ).Width =  65 
        tblList.Cell( 1 ,  1 ).Range.InsertAfter "№ п/п"
        tblList.Cell( 1 ,  2 ).Range.InsertAfter "ФИО"
        tblList.Cell( 1 ,  3 ).Range.InsertAfter "Номер карты"
        tblList.Cell( 1 ,  4 ).Range.InsertAfter "Комиссия"
        If intRowsRst <>  0  Then
                    For intRst =  0  To intRowsRst -  1 
                        strClientName = CStr(arrayRowsRst( 0 , intRst)) + " " + CStr(arrayRowsRst( 1 , intRst))
                        If arrayRowsRst( 2 , intRst) <> "Null" Then
                            strClientName = strClientName + " " + CStr(arrayRowsRst( 2 , intRst))
                        End If
                        Select Case arrayRowsRst( 5 , intRst)
                        Case  810 
                            strFeeType = "RUR"
                        Case  840 
                            strFeeType = "USD"
                        Case  978 
                            strFeeType = "EUR"
                        End Select
                        strFee = CStr(arrayRowsRst( 4 , intRst)) + " " + strFeeType
                        tblList.Cell(intRst +  2 ,  1 ).Range.InsertAfter intRst +  1 
                        tblList.Cell(intRst +  2 ,  2 ).Range.InsertAfter strClientName
                        tblList.Cell(intRst +  2 ,  3 ).Range.InsertAfter arrayRowsRst( 3 , intRst)
                        tblList.Cell(intRst +  2 ,  4 ).Range.InsertAfter strFee
                        intItog = intItog + CInt(arrayRowsRst( 4 , intRst))
                    Next
                    strItog = CStr(intItog) + " " + strFeeType
                    tblList.Cell(intRst +  2 ,  2 ).Range.InsertAfter "Итого"
                    tblList.Cell(intRst +  2 ,  4 ).Range.InsertAfter strItog
        End If
        'Закрываем набор данных
        rst.Close
        'Переходим в начало документа
        Doc.ActiveWindow.Selection.HomeKey Unit:=wdStory
        'Сохраняем документ
        strFileName = CStr(arrayRows( 6 , intLoopRow)) + " fee " + CStr(arrayRows( 3 , intLoopRow)) + ".doc"
        Doc.SaveAs (strFileName)
    Next
    
    Set ObjWord = Nothing
    'Закрываем набор данных
    rs.Close
    'Закрываем соединения
    cnn.Close
End Sub
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36712562
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katsy,
а почему именно так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
If Not rst.EOF Then
            rst.MoveFirst
            intRowsRst =  0 
            Do While Not rst.EOF
                intRowsRst = intRowsRst +  1 
                rst.MoveNext
            Loop
            rst.MoveFirst
            arrayRowsRst = rst.GetRows(intRowsRst)
        Else
            intRowsRst =  0 
        End If
а не так
Код: plaintext
1.
2.
3.
4.
5.
rst.MoveFirst
intRowsRst =  0 
Do While Not rst.EOF
                intRowsRst = intRowsRst +  1 
                rst.MoveNext
Loop
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36712588
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katsy,
хотя чуть раньше используете именно такую конструкцию
Код: plaintext
1.
2.
3.
4.
5.
6.
rs.MoveFirst
    intRows =  0 
    Do While Not rs.EOF
        intRows = intRows +  1 
        rs.MoveNext
    Loop
    rs.MoveFirst
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36712758
Katsy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05adm,

rs заведомо возвращает данные, а rst может оказаться пустым
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36712810
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katsy,
все понял
а если Recordset пустой такой код ошибку не вызывает?
просто не пробовал поэтому спрашиваю
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36712941
Katsy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05adm,

если пустой, то MoveFirst вызовет ошибку сразу
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36712997
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katsy,
Код: plaintext
If Not rst.EOF Then
а этот код?
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36713018
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
надо так:

Код: plaintext
1.
2.
3.
4.
If Not rst Is Nothing Then 
   If Not (rst.EOF Or rst.BOF) Then
...
   End If
End if
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36713576
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katsy, как я понял Вам уже подсказали. В то же время на Вашем примере я хотел бы посмотреть, поучиться. То есть Вы могли бы выложить пример, в последней редакции. И такой, чтобы он смог пойти у каждого пользователя. В настоящее время в первой строке кода, в этой: Dim cnn As New ADODB.Connection. Или подскажите, что мне надо сделать. Выделяет данную часть: cnn As New ADODB.Connection.
Буду Вам признателен. Спасибо
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36713587
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович ЭндрюKatsy, как я понял Вам уже подсказали. В то же время на Вашем примере я хотел бы посмотреть, поучиться. То есть Вы могли бы выложить пример, в последней редакции. И такой, чтобы он смог пойти у каждого пользователя. В настоящее время в первой строке кода, в этой: Dim cnn As New ADODB.Connection. Или подскажите, что мне надо сделать. Выделяет данную часть: cnn As New ADODB.Connection.
Буду Вам признателен. Спасибо


reference на ADODB 2.5 или выше вам надо добавить в проект VBA (в меню ищите)
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36713959
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One, ADODB 2.5 я не нашёл, подскажите где оно, или у меня, что-то не так? Спасибо
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36713999
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович ЭндрюKonst_One, ADODB 2.5 я не нашёл, подскажите где оно, или у меня, что-то не так? Спасибо

это называется Microsoft ActiveX Data Objects
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36714229
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro, спасибо за ответ, сдвинулся с места, теперь на строке:
.Item("FeeYears").Range.Text = TextSum(intRowsRst * CInt(arrayRows(3, intLoopRow)), arrayRowsRst(5, 0))
Выделяет данную часть: TextSum, что не так?? Подскажите, спасибо
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36714336
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрючто не так??
Видимо, есть какое-то сообщение об ошибке, в котором написано, что не так. Попробуй сначала его прочитать
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36714383
Katsy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,

код не полный. не хватает функции самописной:

Код: 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.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
Public Function TextSum(numSum As Variant, curr As Variant) As String
    W$ = Round(numSum,  2 )
    'выделение рублей в записи числа и удаление левых пробелов
    rubli$ = LTrim$(Left$(Str(Val(W$) *  100 ), _
    Len(Str(Val(W$) *  100 )) -  2 ))
    cop$ = RTrim$(Right$(Str(CDbl(W$) *  100 ),  2 )) 'выделение дробной части
    'числа и удаление правых пробелов

    Do While Len(rubli$) <  9 
        rubli$ = "0" & rubli$
    Loop
    res$ = ""
    For i% =  1  To  3 
        trojka$ = Mid$(rubli$,  3  * i% -  2 ,  3 )
        Call Num3(trojka$, i%, curr) ' Вызов функции формирования готовой тройки,
        res$ = res$ & trojka$ ' Накопление таких троек
    Next i%
    res$ = UCase$(Left$(res$,  1 )) & Right$(res$, Len(res$) -  1 ) 'Запись
    'первой буквы res$ в верхнем регистре
    
    ' Блок добавления копеек
    Select Case curr
    Case  810 
        c$ = " коп."
    Case  840 
        c$ = " центов"
    Case  978 
        c$ = " евроцентов"
    End Select

    If (Right$(cop$,  1 ) = "1" And Left$(cop$,  1 ) <> "1") Then
        Select Case curr
        Case  810 
            c$ = " коп."
        Case  840 
            c$ = " центов"
        Case  978 
            c$ = " евроцентов"
        End Select
    Else
        If ((Right$(cop$,  1 ) = "2" Or Right$(cop$,  1 ) = "3" Or Right$(cop$,  1 ) = "4") And Left$(cop$,  1 ) <> "1") Then
            Select Case curr
            Case  810 
                c$ = " коп."
            Case  840 
                c$ = " центов"
            Case  978 
                c$ = " евроцентов"
            End Select
        Else:
            If Left(res$,  1 ) <> "Р" Then
                res$ = res$ & cop$ & c$
            Else
                res$ = cop$ & c$
            End If
        End If
    End If
    TextSum = res$ ' Выход текста
End Function

Public Function Num3(trojka$, i%, curr)
    Dim sl$( 1  To  3 ,  0  To  3 )
    sl$( 1 ,  1 ) = "миллион "
    sl$( 2 ,  1 ) = "тысяча "
    Select Case curr
    Case  810 
        sl$( 3 ,  1 ) = "рубль "
    Case  840 
        sl$( 3 ,  1 ) = "доллар "
    Case  978 
        sl$( 3 ,  1 ) = "евро "
    End Select
    '-
    sl$( 1 ,  2 ) = "миллиона "
    sl$( 2 ,  2 ) = "тысячи "
    Select Case curr
    Case  810 
        sl$( 3 ,  2 ) = "рубля "
    Case  840 
        sl$( 3 ,  2 ) = "доллара "
    Case  978 
        sl$( 3 ,  1 ) = "евро "
    End Select
    '-
    sl$( 1 ,  3 ) = "миллионов "
    sl$( 2 ,  3 ) = "тысяч "
    Select Case curr
    Case  810 
        sl$( 3 ,  3 ) = "рублей "
        sl$( 3 ,  0 ) = "рублей "
    Case  840 
        sl$( 3 ,  3 ) = "долларов "
        sl$( 3 ,  0 ) = "долларов "
    Case  978 
        sl$( 3 ,  3 ) = "евро "
        sl$( 3 ,  0 ) = "евро "
    End Select
    '-
    ed$ = Right$(trojka$,  1 )
    des$ = Mid$(trojka$,  2 ,  1 )
    sot$ = Left$(trojka$,  1 )
    '-
    If ed$ = "0" Then r3$ = ""
    If ed$ = "1" Then If i% =  2  Then r3$ = "одна " Else r3$ = "один "
    If ed$ = "2" Then If i% =  2  Then r3$ = "две " Else r3$ = "два "
    If ed$ = "3" Then r3$ = "три "
    If ed$ = "4" Then r3$ = "четыре "
    If ed$ = "5" Then r3$ = "пять "
    If ed$ = "6" Then r3$ = "шесть "
    If ed$ = "7" Then r3$ = "семь "
    If ed$ = "8" Then r3$ = "восемь "
    If ed$ = "9" Then r3$ = "девять "
    '-
    If des$ = "0" Then r2$ = ""
    s$ = des$ & ed$
    If s$ = "10" Then r3$ = "десять "
    If s$ = "11" Then r3$ = "одиннадцать "
    If s$ = "12" Then r3$ = "двенадцать "
    If s$ = "13" Then r3$ = "тринадцать "
    If s$ = "14" Then r3$ = "четырнадцать "
    If s$ = "15" Then r3$ = "пятнадцать "
    If s$ = "16" Then r3$ = "шестнадцать "
    If s$ = "17" Then r3$ = "семнадцать "
    If s$ = "18" Then r3$ = "восемнадцать "
    If s$ = "19" Then r3$ = "девятнадцать "
    '-
    If des$ = "2" Then r2$ = "двадцать "
    If des$ = "3" Then r2$ = "тридцать "
    If des$ = "4" Then r2$ = "сорок "
    If des$ = "5" Then r2$ = "пятьдесят "
    If des$ = "6" Then r2$ = "шестьдесят "
    If des$ = "7" Then r2$ = "семьдесят "
    If des$ = "8" Then r2$ = "восемьдесят "
    If des$ = "9" Then r2$ = "девяносто "
    '-
    If sot$ = "0" Then r1$ = ""
    If sot$ = "1" Then r1$ = "сто "
    If sot$ = "2" Then r1$ = "двести "
    If sot$ = "3" Then r1$ = "триста "
    If sot$ = "4" Then r1$ = "четыреста "
    If sot$ = "5" Then r1$ = "пятьсот "
    If sot$ = "6" Then r1$ = "шестьсот "
    If sot$ = "7" Then r1$ = "семьсот "
    If sot$ = "8" Then r1$ = "восемьсот "
    If sot$ = "9" Then r1$ = "девятьсот "
    '-
    If trojka$ <> "000" Then j% = (- 1 ) * CInt(ed$ = "1" And des$ <> "1") _
    + (- 2 ) * CInt((ed$ = "2" Or ed$ = "3" Or ed$ = "4") And des$ <> "1")
    If j% =  0  And trojka$ <> "000" Then j% =  3 
    trojka$ = r1$ & r2$ & r3$ & sl$(i%, j%) 'формирование тройки цифр и
    'слова,например-"123 тысячи"
End Function
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36714384
Katsy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,

по поводу пойти у каждого пользователя, это Вам надо таблицы в базе создавать ;)
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36714538
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katsy, подскажите как понять Ваше изречение:
по поводу пойти у каждого пользователя
Спасибо
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36714545
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro, текст ошибки следующий: функция иди процедура не определена
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36714550
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович ЭндрюShocker.Pro, текст ошибки следующий: функция иди процедура не определена
Мне кажется, это связано с тем, что функция TextSum не определена.
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36714575
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro, я просто ответил на Ваш вопрос, а так спасибо разобрался. Тем более, что функцию выложили.
Теперь споткнулся здесь:.ApplyStyleRowBands = True, выделяет эту часть: .ApplyStyleRowBands =
и сообщение метод или дата члена не определена. Что не так
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36714831
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,
вам легче будет начать создавать с нуля , тогда все будет понятно
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36714852
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович ЭндрюShocker.Pro, я просто ответил на Ваш вопрос, а так спасибо разобрался. Тем более, что функцию выложили.
Теперь споткнулся здесь:.ApplyStyleRowBands = True, выделяет эту часть: .ApplyStyleRowBands =
и сообщение метод или дата члена не определена. Что не так
Скорее всего версия Ворда.
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36714944
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katsy,
подскажите
1 как понять Ваше изречение от сегодня, 01:52:
по поводу пойти у каждого пользователя.
2 какая у Вас версия Ворда?
У меня Ворд 2003
Так как я теперь споткнулся здесь:
.ApplyStyleRowBands = True, выделяет эту часть: .ApplyStyleRowBands =
и сообщение метод или дата члена не определена. Что не так?
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36716925
Katsy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,

У меня 2007. Эту строку Вам надо просто закомментировать, такой функциональности не было в 2003.

Чтобы программа пошла у каждого пользователя, нужны данные из таблиц базы. У Вас же нет ни данных, ни шаблонов, куда эти данные должны быть вставлены ;)
...
Рейтинг: 0 / 0
Установить ширину столбца в Word
    #36717311
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katsy,
понял, спасибо
...
Рейтинг: 0 / 0
41 сообщений из 41, показаны все 2 страниц
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Установить ширину столбца в Word
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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