Страница: 1 |
Страница: 1 |
Вопрос: Отвязать форму от Excel после выполнения
Добавлено: 28.10.09 12:28
Автор вопроса: Jaguar7
Форма написанная в VBA вызывает Excel из шаблона создает файл и заполняет его значениями из базы по параметрам, задаваемым в самой форме юзером. А теперь проблема-после закрытия юзером полученного файла и самого Excel, в системе остается подвешенный процесс Excel, который мешает повторному запуску процедуры из формы, как закрыть связь формы и Excel без выгрузки формы?
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
GDK
Вопросов: 13
Ответов: 348
Профиль | | #1
Добавлено: 28.10.09 15:14
Код неплохо было бы глянуть. И непонятно, форма что, должна остаться после того как юзер закроет ексель?
Номер ответа: 2
Автор ответа:
Дмитрий Юпатов
Вопросов: 4
Ответов: 457
Web-сайт:
Профиль | | #2
Добавлено: 28.10.09 16:15
Точно VBA? Больше похоже на ситуацию, когда к проекту на VB подключен Excel в качестве сервера автоматизации.
Тогда делай присваивание Nothing переменной - объекту Excel. А при дальнейшей необходимости создавай новый объект типа Microsoft.Office......Excel.Application
Или пробуй зацепить существующий...
Номер ответа: 3
Автор ответа:
Jaguar7
Вопросов: 2
Ответов: 5
Профиль | | #3
Добавлено: 28.10.09 17:08
форма должна остаться для повторного запуска процедуры
Номер ответа: 4
Автор ответа:
Дмитрий Юпатов
Вопросов: 4
Ответов: 457
Web-сайт:
Профиль | | #4
Добавлено: 28.10.09 17:11
Если это VBA, то при закрытии Excel форма тоже закроется полюбому. И процесса висящего в списке процессов не будет. Как не крути... Код выложи
Номер ответа: 5
Автор ответа:
Jaguar7
Вопросов: 2
Ответов: 5
Профиль | | #5
Добавлено: 02.11.09 16:42
Private Sub File1_Click()
FileName = File1.FileName
 im Today As String
 im t As String
t = Time
Today = Format(t, "hh/mm/ss"
'удаление файлов временного баланса
 im FSO As New FileSystemObject, fil As File, fil1 As File
On Error Resume Next
FSO.DeleteFile ("c:\nodes\Temp*.xls"
On Error GoTo 0
Set fil = FSO.GetFile("c:\nodes\" & FileName & ""
fil.Copy ("c:\nodes\Temp" & Today & "" & FileName & ""
'открываем файл для сканирования типа рапорта
Set wbBook = xlApp.Workbooks.Open("c:\nodes\Temp" & Today & "" & FileName & ""
'адрес последней строки со значениями
IRow = Cells.Find(What:="*", LookIn:=xlValues, SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
'адрес последнего столбца со значениями
iClm = Cells.Find(What:="*", LookIn:=xlValues, SearchDirection:=xlPrevious, SearchOrder:=xlByColumns).Column
'начинаем сканирование диапазона для поиска имен тегов
For Co = 1 To iClm
For Ro = 1 To IRow
Ind = Cells(Ro, Co).Value
'ищем спецсимвол #
 im Sim As String
Sim = Left(Ind, 1)
If Sim = "#" Then
'откидываем служебный символ #
 im Ots As String
Ots = Mid(Ind, 2)
'находим номер позиции знака ":"
raz = InStr(1, Ots, ":"
'если двоеточия нет сразу идем на другой цикл
If raz > 0 Then
NodeName = Mid(Ots, 1, raz - 1)
NodeDate = Mid(Ots, raz + 1)
NodeDateS = Mid(Ots, raz + 1)
'а вдруг это задание типа рапорта
 im TypR As String
 im TypRS As Integer
If NodeName = "TYPE_REPORT" Then
TypR = NodeDateS
TypRS = TypR
Select Case TypR
Case 0
Command1.Enabled = True
GoTo RND:
Case 1
Command1.Enabled = True
GoTo RND:
Case 2
Command1.Enabled = True
GoTo RND:
Case 3
Command1.Enabled = True
GoTo RND:
Case 4
Command1.Enabled = True
GoTo RND:
Case 5
Command1.Enabled = True
GoTo RND:
Case 6
Command1.Enabled = True
GoTo RND:
Case 7
Command1.Enabled = True
GoTo RND:
Case 8
List4.Enabled = True
List3.Enabled = True
List2.Enabled = True
List1.Enabled = True
GoTo RND:
Case 9
List3.Enabled = True
List2.Enabled = True
List1.Enabled = True
GoTo RND:
Case 10
List2.Enabled = True
List1.Enabled = True
GoTo RND:
Case 11
List2.Enabled = True
GoTo RND:
End Select
End If
End If
End If
Next
Next
RND:
wbBook.Close ("c:\nodes\Temp" & Today & "" & FileName & ""
Set wbBook = Nothing
On Error Resume Next
FSO.DeleteFile ("c:\nodes\Temp" & Today & "" & FileName & ""
On Error GoTo 0
End Sub
Номер ответа: 6
Автор ответа:
Jaguar7
Вопросов: 2
Ответов: 5
Профиль | | #6
Добавлено: 02.11.09 16:43
Private Sub File1_Click()
FileName = File1.FileName
 im Today As String
 im t As String
t = Time
Today = Format(t, "hh/mm/ss"
'удаление файлов временного баланса
 im FSO As New FileSystemObject, fil As File, fil1 As File
On Error Resume Next
FSO.DeleteFile ("c:\nodes\Temp*.xls"
On Error GoTo 0
Set fil = FSO.GetFile("c:\nodes\" & FileName & ""
fil.Copy ("c:\nodes\Temp" & Today & "" & FileName & ""
'открываем файл для сканирования типа рапорта
Set wbBook = xlApp.Workbooks.Open("c:\nodes\Temp" & Today & "" & FileName & ""
'адрес последней строки со значениями
IRow = Cells.Find(What:="*", LookIn:=xlValues, SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
'адрес последнего столбца со значениями
iClm = Cells.Find(What:="*", LookIn:=xlValues, SearchDirection:=xlPrevious, SearchOrder:=xlByColumns).Column
'начинаем сканирование диапазона для поиска имен тегов
For Co = 1 To iClm
For Ro = 1 To IRow
Ind = Cells(Ro, Co).Value
'ищем спецсимвол #
 im Sim As String
Sim = Left(Ind, 1)
If Sim = "#" Then
'откидываем служебный символ #
 im Ots As String
Ots = Mid(Ind, 2)
'находим номер позиции знака ":"
raz = InStr(1, Ots, ":"
'если двоеточия нет сразу идем на другой цикл
If raz > 0 Then
NodeName = Mid(Ots, 1, raz - 1)
NodeDate = Mid(Ots, raz + 1)
NodeDateS = Mid(Ots, raz + 1)
'а вдруг это задание типа рапорта
 im TypR As String
 im TypRS As Integer
If NodeName = "TYPE_REPORT" Then
TypR = NodeDateS
TypRS = TypR
Select Case TypR
Case 0
Command1.Enabled = True
GoTo RND:
Case 1
Command1.Enabled = True
GoTo RND:
Case 2
Command1.Enabled = True
GoTo RND:
Case 3
Command1.Enabled = True
GoTo RND:
Case 4
Command1.Enabled = True
GoTo RND:
Case 5
Command1.Enabled = True
GoTo RND:
Case 6
Command1.Enabled = True
GoTo RND:
Case 7
Command1.Enabled = True
GoTo RND:
Case 8
List4.Enabled = True
List3.Enabled = True
List2.Enabled = True
List1.Enabled = True
GoTo RND:
Case 9
List3.Enabled = True
List2.Enabled = True
List1.Enabled = True
GoTo RND:
Case 10
List2.Enabled = True
List1.Enabled = True
GoTo RND:
Case 11
List2.Enabled = True
GoTo RND:
End Select
End If
End If
End If
Next
Next
RND:
wbBook.Close ("c:\nodes\Temp" & Today & "" & FileName & ""
Set wbBook = Nothing
On Error Resume Next
FSO.DeleteFile ("c:\nodes\Temp" & Today & "" & FileName & ""
On Error GoTo 0
End Sub
Номер ответа: 7
Автор ответа:
Jaguar7
Вопросов: 2
Ответов: 5
Профиль | | #7
Добавлено: 02.11.09 16:44
подвис форум задвоилось сообщение, а убрать не знаю как