Поделитесь соображениями

Программирование на Visual Basic for Applications
olik111
Обычный пользователь
Обычный пользователь
 
Сообщения: 57
Зарегистрирован: 03.07.2003 (Чт) 3:16

Поделитесь соображениями

Сообщение olik111 » 24.12.2004 (Пт) 9:18

есть документ Excel, с 3-мя листами, данные на двух из них могут меняться, на этих листах таблица, где каждая строка несет информацию о документе и имеется гиперссылка на сам документ. Для заполнения строки в таблице и соответственно создания документа, имеется форма с textboxaми, создавать новое получается, а как сделать чтобы при обращении к какой либо не пустой строке таблицы, опять же вызывалась форма, но уже заполненная данными из документа и при изменении данных в форме менялся сам документ, т.е. нужно чтобы не только создавались новые документы, но и редактировались старые.
Еще здесь же нужно, чтобы где-то в текстовом документе, в ворде или блокноте фиксировалась информация о том для чтения или для изменения был открыт документ, на который создана гиперссылка.
Подскажите пожалуйста идеи.

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 13.01.2005 (Чт) 17:22

Если можно для примера маленькую структуру каталога и файла

olik111
Обычный пользователь
Обычный пользователь
 
Сообщения: 57
Зарегистрирован: 03.07.2003 (Чт) 3:16

Сообщение olik111 » 14.01.2005 (Пт) 11:15

Вот пример кода для создания нового документа, мне нужно сделать чтобы при нажатии на другую кнопку открывалась форма для изменения документа уже заполненная данными частично из строки таблицы ексела, частично из вордовского документа на который гиперссылка, который заполняется из формы. Все документы находятся в одном каталоге.

olik111
Обычный пользователь
Обычный пользователь
 
Сообщения: 57
Зарегистрирован: 03.07.2003 (Чт) 3:16

Сообщение olik111 » 14.01.2005 (Пт) 11:16

Private Sub CommandButton1_Click()
'Dim j As Integer ' типа номер текущего договора
Dim objWord As Object

Dim chislo_vid As String
Dim munth_vid As String
Dim chislo1_vid As String
Dim munth1_vid As String
Dim year_vid As String
Dim year1_vid As String
Dim FIO_Isp As String
Dim FIO_Vid As String
Dim addres As String
Dim Mesto As String
Dim Text_Texusl As String
Dim number As String
Dim ispolnitel As String

chislo_vid = TextBox4.Text
munth_vid = TextBox5.Text
chislo1_vid = TextBox4.Text
munth1_vid = TextBox5.Text
year_vid = TextBox6.Text
year1_vid = TextBox6.Value + 1
FIO_Isp = ComboBox1.Text
FIO_Vid = TextBox1.Text
addres = TextBox2.Text
Mesto = TextBox3.Text

Text_Texusl = TextBox7.Text
ispolnitel = ComboBox1.Text

File = ThisWorkbook.Path & "\Техусловия.doc"
Set objWord = CreateObject("Word.Application")
With objWord
.Visible = True

' Откроем техусловие
.documents.Open Filename:=File
End With
With Worksheets("Выполняемые")
.EnableSelection = xlNoRestrictions
.Protect Contents:=True
End With
Worksheets("Выполняемые").Unprotect Password:="123"
'Занесём данные в шаблон договора
Sheets("Выполняемые").Select
For i = 6 To 10000
If Cells(i, 1).Value = "" Then
Randomize
Cells(i, 1).Value = Rnd()
Cells(i, 2).Value = FIO_Vid
Cells(i, 3).Value = addres
Cells(i, 4).Value = Mesto
Cells(i, 5).Value = chislo_vid & "." & munth_vid & "." & year_vid
Cells(i, 6).Value = chislo_vid & "." & munth_vid & "." & year_vid + 1

number = Cells(i, 1)
Exit For
End If
Next
showEmptyRecord
objWord.Selection.Find.Text = "[кому]"
objWord.Selection.Find.Execute
objWord.Selection.TypeText Text:=FIO_Vid
objWord.Selection.Find.Text = "[адрес]"
objWord.Selection.Find.Execute
objWord.Selection.TypeText Text:=addres
objWord.Selection.Find.Text = "[номер]"
objWord.Selection.Find.Execute
objWord.Selection.TypeText Text:=number
objWord.Selection.Find.Text = "[число]"
objWord.Selection.Find.Execute
objWord.Selection.TypeText Text:=chislo_vid
objWord.Selection.Find.Text = "[месяц]"
objWord.Selection.Find.Execute
objWord.Selection.TypeText Text:=munth_vid
objWord.Selection.Find.Text = "[год]"
objWord.Selection.Find.Execute
objWord.Selection.TypeText Text:=year_vid
objWord.Selection.Find.Text = "[Текст]"
objWord.Selection.Find.Execute
objWord.Selection.TypeText Text:=Text_Texusl
objWord.Selection.Find.Text = "[число1]"
objWord.Selection.Find.Execute
objWord.Selection.TypeText Text:=chislo1_vid
objWord.Selection.Find.Text = "[месяц1]"
objWord.Selection.Find.Execute
objWord.Selection.TypeText Text:=munth1_vid
objWord.Selection.Find.Text = "[год1]"
objWord.Selection.Find.Execute
objWord.Selection.TypeText Text:=year1_vid
objWord.Selection.Find.Text = "[Исполнитель]"
objWord.Selection.Find.Execute
objWord.Selection.TypeText Text:=ispolnitel

' Сохраним договор под новым именем
File = ThisWorkbook.Path & "\Техусловия " & number & ".doc"
objWord.ActiveDocument.SaveAs Filename:=File
'Select Case MsgBox("Печатать документ?", vbYesNo + vbQuestion)
'Case vbYes

'objWord.ActiveDocument.PrintOut copies:=3
'закроем Договор
objWord.ActiveDocument.Close

objWord.Quit
Set objWord = Nothing
For i = 6 To 10000
If Cells(i, 10).Value = "" Then
With Worksheets("Выполняемые")
.Hyperlinks.Add Anchor:=.Cells(i, 10), _
Address:="file:///C:\Техусловия\Техусловия " & number & ".doc"
End With
Exit For
End If
Next
UserForm1.Hide
Worksheets("Выполняемые").Range("g:h").Locked = False
Worksheets("Выполняемые").Protect Password:="123", DrawingObjects:=True, Contents:=True, Scenarios:=True

Application.ScreenUpdating = True
End Sub

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 14.01.2005 (Пт) 18:52

:D :D :D :D :D :D
Private Sub CommandButton1_Click()
'Dim j As Integer ' типа номер текущего договора
Dim objWord As Object
...

Я имел в виду архивчик с двумя файлами
один список, о котором ты говориш, а второй результат ссылки

Со старым новым годом!!!


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 64

    TopList