Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Запись данных на лист закрытой книги из TextBox на UserForm другой открытой книги. / 7 сообщений из 7, страница 1 из 1
10.03.2012, 22:26
    #37698155
Dark Victor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись данных на лист закрытой книги из TextBox на UserForm другой открытой книги.
Доброго времени!

Необходимо записать данные из TextBox'ов, находящихся на UserForm открытой книги (WorkBook1) в ячейки закрытой книги (WorkBook2), находящейся в другой папке.

В сети нашел информацию только по чтению. Из закрытого документа (в моём случае это WorkBook2) читать данные нельзя. Кодом книга всё равно открывается в скрытом режиме, и только на время чтения информации из ячеек, после - автоматически закрывается.

Интересует, как это реализовать для записи данных в ячейки WorkBook2 ( скытое открытие WorkBook2 -> запись данных в WorkBook2, начиная с последней свободной строки, из UserForm открытой книги WorkBook1 -> автоматическое сохранение WorkBook2-> закрытие WorkBook2 )? При этом в WorkBook1 данные заносить не нужно.

В моём случае (WorkBook2) будет выполнять роль базы данных.

Понимаю, что гораздо проще (наверно, но не для меня) это реализовать при помощи Access, но с ним никогда плотно не работал, а начинать всё с нуля нет времени и сил.

Это уже реализовано и работает в открытой книге (WorkBook1)
Код кнопки
Код: vbnet
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.
Private Sub CommandButton1_Click()

    Dim rg As Range
    St = ActiveWorkbook.Path
             
            On Error Resume Next
            
                MkDir (St & "\" & "MRI_CT_Rtg" & "\")
                MkDir (St & "\" & "MRI_CT_Rtg" & "\" & Name_.Text & "_" & Date_hospit.Text & "\")
    
            On Error GoTo 0

    If Type_of_paci.Text = "Rotator Cuff" Then

        With Worksheets(1)
 
            Set rg = .Cells(1, 2).CurrentRegion
 
                Nr = rg.Rows.Count
 
                    .Range("A" & (1 + Nr)).Value = "=ROW()-4"
                    .Range("B" & (1 + Nr)).Value = Name_.Text
                    .Range("C" & (1 + Nr)).Value = Date_of_Birth.Text
                    .Range("D" & (1 + Nr)).Value = Adress.Text
                    .Range("E" & (1 + Nr)).Value = tel_email.Text
                    .Range("F" & (1 + Nr)).Value = Comment.Text
                    .Range("G" & (1 + Nr)).Value = Lech_Uch.Text
                    .Range("H" & (1 + Nr)).Value = Fio_orthop.Text
                    .Range("I" & (1 + Nr)).Value = N_history.Text
                    .Range("J" & (1 + Nr)).Value = Date_hospit.Text
                    .Range("K" & (1 + Nr)).Value = Diagnosis.Text
                    .Range("L" & (1 + Nr)).Value = Date_of_trauma.Text
                    .Range("M" & (1 + Nr)).Value = Fact_trauma.Text
                    .Range("N" & (1 + Nr)).Value = Dlit_boli.Text
                    .Range("O" & (1 + Nr)).Value = Ogranich_dvig.Text
                    .Range("P" & (1 + Nr)).Value = Lechenie.Text
                    .Range("Q" & (1 + Nr)).Value = Time_bef_oper.Text
                    .Range("R" & (1 + Nr)).Value = OperDate.Text
                    .Range("S" & (1 + Nr)).Value = Type_oper_type_endoprosth.Text
                    .Range("T" & (1 + Nr)).Value = Anaestes.Text
                    .Range("U" & (1 + Nr)).Value = Histol.Text
                    .Range("AB" & (1 + Nr)).Value = Constant_Shoulder_Score.Text
                    .Range("AC" & (1 + Nr)).Value = UCLA_Shoulder_rating_scale.Text
                    .Range("AD" & (1 + Nr)).Value = SF_PF.Text
                    .Range("AE" & (1 + Nr)).Value = SF_RP.Text
                    .Range("AF" & (1 + Nr)).Value = SF_P.Text
                    .Range("AG" & (1 + Nr)).Value = SF_GH.Text
                    .Range("AH" & (1 + Nr)).Value = SF_VT.Text
                    .Range("AI" & (1 + Nr)).Value = SF_SF.Text
                    .Range("AJ" & (1 + Nr)).Value = SF_RE.Text
                    .Range("AK" & (1 + Nr)).Value = SF_MH.Text
        
        End With

        With ThisWorkbook.Worksheets(1).Range("V" & (1 + Nr))
            
                .Hyperlinks.Add Anchor:=.Cells(1), _
                Address:=(St & "\" & "MRI_CT_Rtg" & "\" & Name_.Text & "_" & Date_hospit.Text)
                .Formula = "Добавлено"
        
        End With
    
    ElseIf Type_of_paci.Text = "PASTA" Then

'...
' еще пять раз для других листов
'...
    End If
    
End Sub

Надеюсь на помощь. Спасибо!
...
Рейтинг: 0 / 0
10.03.2012, 22:56
    #37698177
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись данных на лист закрытой книги из TextBox на UserForm другой открытой книги.
Примерно так:
Код: vbnet
1.
2.
3.
Dim NewWB AS WorkBook
....
Set NewWB=Workbooks.Open("c:\wer.xls")



Код: vbnet
1.
With Worksheets(1)

меняем на
Код: vbnet
1.
With NewWB.Worksheets(1)



и в конце
Код: vbnet
1.
2.
3.
NewWB.Save
NewWB.Close
Set NewWB=Nothing
...
Рейтинг: 0 / 0
11.03.2012, 20:16
    #37699464
Dark Victor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись данных на лист закрытой книги из TextBox на UserForm другой открытой книги.
Спасибо! Снова меня выручаете!
...
Рейтинг: 0 / 0
12.03.2012, 00:08
    #37699698
Dark Victor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись данных на лист закрытой книги из TextBox на UserForm другой открытой книги.
Ещё, не получается полностью закрыть excel (в т.ч. выгрузить процесс excel.exe) при нажатии "крестика" в заголовке формы.

Пробовал разными способами, максимум дохожу до закрытия книги. Окно и/или процесс остаётся висеть в памяти.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Dim xl As Excel.Application
Dim xlb As Excel.Workbook
xlb.Close False, "Form.xlsm", ThisWorkbook
Set xlb = Nothing
Set xl = Nothing
End Sub


Сейчас вообще выдаёт ошибку 'Object variable or With block variable not set'. Как правильно закрыть книгу и полностью выгрузить excel из памяти? Спасибо.
...
Рейтинг: 0 / 0
12.03.2012, 00:24
    #37699707
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись данных на лист закрытой книги из TextBox на UserForm другой открытой книги.
Application.Quit
...
Рейтинг: 0 / 0
12.03.2012, 00:25
    #37699710
Dark Victor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись данных на лист закрытой книги из TextBox на UserForm другой открытой книги.
Поправил. Но по-прежнему закрывает только книгу. Excel остаётся.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Dim xl As Excel.Application
Dim xlb As Workbook
Set xlb = Workbooks(1)
xlb.Close False
Set xlb = Nothing
Set xl = Nothing
End Sub
...
Рейтинг: 0 / 0
12.03.2012, 00:27
    #37699713
Dark Victor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись данных на лист закрытой книги из TextBox на UserForm другой открытой книги.
Предыдущий пост не в тему. Не обновил страницу.

Application.Quit работает. Премного благодарен!
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Запись данных на лист закрытой книги из TextBox на UserForm другой открытой книги. / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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