Гость
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / excel.workbook is nothing = ругань и вой / 7 сообщений из 7, страница 1 из 1
21.02.2018, 12:42
    #39605433
MokeevP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
excel.workbook is nothing = ругань и вой
Здравствуйте, уважаемые форумчане
модуль формы:
Код: vbnet
1.
2.
Option Explicit
Public wbA As Workbook


Код: 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.
Private Sub CommandButton2_Click()
If Me.TextBox1 = "" Then
MsgBox "Выберете файл!"
Else
If IsBookOpen(Me.TextBox1.Value) Then
MsgBox "Файл уже открыт!"
Exit Sub
Else
MsgBox "Будет открыт указанный файл"
Set wbA = Excel.Workbooks.Open(Me.TextBox1.Value)
End If
End If
End Sub

Private Sub CommandButton3_Click()
If wbA Is Nothing Then
MsgBox "Книга уже закрыта!"
Else
If MsgBox("Книга будет закрыта!", vbOKCancel) = 2 Then
    Exit Sub
    Else
If MsgBox("Сохранить изменения в " + wbA.Name + "?", vbOKCancel) = 2 Then
wbA.Close (False)
Else
wbA.Save
wbA.Close (False)
End If
End If
End If
End Sub



Отдельный модуль:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Sub tmr1()
If userform1.wbA Is Nothing Then
userform1.Label1.ForeColor = &HFF&
userform1.Label2.ForeColor = &HFF&
userform1.Label1.Caption = "O"                         'символьный шрифт - крестик
userform1.Label2.Caption = "Файл не открыт"
Else
userform1.Label1.ForeColor = &H8000&
userform1.Label2.ForeColor = &H8000&
userform1.Label1.Caption = "P"                         'символьный шрифт - галочка
userform1.Label2.Caption = "Файл открыт"
End If
End Sub



функция IsBookOpen:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Function IsBookOpen(wbName As String) As Boolean
    Dim wbBook As Workbook: On Error Resume Next
    Dim intPos%, filename As String
      intPos = InStrRev(wbName, "\")
      filename = Right(wbName, Len(wbName) - intPos)
      wbName = filename
    Set wbBook = Workbooks(wbName)
    IsBookOpen = Not wbBook Is Nothing
End Function



Вопрос #1: при первом выполнении процедуры CommandButton3 (закрытие файла) всё происходит планово, но если нажать кнопку ещё раз у меня выпадает ошибка, потому что
Код: vbnet
1.
userform1.wbA Is Nothing


превращается в что-то несуразное, неоцениваемое, невычисляемое, а поскольку я дилетант осознать как его победить не могу
да, можно заблокировать кнопку чтобы не повадно было, но я это безобразие хочу на таймер подцепить

Вопрос #2: как правильно сделать проверку Me.TextBox1 на то, что там действительно путь к файлу, а не слово из 2х букв, например

заранее спасибо неравнодушным!

____
vk.com/taenfox
...
Рейтинг: 0 / 0
21.02.2018, 13:04
    #39605457
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
excel.workbook is nothing = ругань и вой
Не понял, ты хочешь закрыть книгу, в которой выполняется код?
...
Рейтинг: 0 / 0
21.02.2018, 13:08
    #39605459
MokeevP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
excel.workbook is nothing = ругань и вой
Shocker.Pro, нет, эти действия направлены на другую книгу
...
Рейтинг: 0 / 0
21.02.2018, 13:10
    #39605461
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
excel.workbook is nothing = ругань и вой
MokeevP , закрытие книги и должно превращать переменную, хранящую ссылку на эту книгу, в нечто, как там один товарищ сказал, "несуразное, неоцениваемое, невычисляемое". Поэтому все сознательные граждане после someObject.Close обязательно делают Set someObject = Nothing.
...
Рейтинг: 0 / 0
21.02.2018, 13:17
    #39605467
MokeevP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
excel.workbook is nothing = ругань и вой
Akina, истину глаголите, спасибо!
а я то думаю почему у меня строка someObj = nothing не работает

А по второму вопросу можете помочь?
...
Рейтинг: 0 / 0
21.02.2018, 13:33
    #39605482
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
excel.workbook is nothing = ругань и вой
MokeevPAkina, истину глаголите, спасибо!
А по второму вопросу можете помочь?

Код: vbnet
1.
2.
3.
if dir(ПутьКФайлу) = "" Then
  MsgBox "Файла нет!"
Endif
...
Рейтинг: 0 / 0
21.02.2018, 13:53
    #39605512
MokeevP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
excel.workbook is nothing = ругань и вой
HandKot, спасибо! Сейчас прикручу
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / excel.workbook is nothing = ругань и вой / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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