Страница: 1 |
Страница: 1 |
Вопрос: Удаляю лист книги и пытаюсь ее сохранить ...
Добавлено: 20.07.04 09:58
Автор вопроса: jojo
Удаляю лист книги и пытаюсь ее сохранить
Error вылазит:
can't enter break mode at this time и потом еще type mismatch
Код:
Private Sub CB_Load_Click()
' Загрузка из файла
With CommonDialog1
.Filter = "Файлы Excel (*.xls)| *.xls" 'Фильтр для открытия файла
.InitDir = "C:\"
.Action = 1 'Или же CommonDialog1.ShowOpen
'.Filename = "TS"
End With
Application.Workbooks.Open CommonDialog1.Filename
TS_Open = ActiveWorkbook.Name
nResult = MsgBox("Внимание лист таблицы соответствия будет заменен. Вы согласны ? ", vbYesNo + vbExclamation, "Будем заменять лист таблицы соответствия ? !")
If nResult = vbYes Then
Workbooks("osv.xls").Activate
Workbooks("osv.xls").Worksheets("Таблица соответствия").Select
ActiveWindow.SelectedSheets.Delete
Workbooks("osv.xls").Save
Ответы
Всего ответов: 9
Номер ответа: 1
Автор ответа:
Mihalыch
ICQ: 373-509-101
Вопросов: 56
Ответов: 330
Профиль | | #1
Добавлено: 20.07.04 11:22
Можно так:
Option Explicit
 im WithEvents appExcel As Excel.Application 'переменная для работы с Excel, WithEvents (можно убрать, но если оставить будет возможноть следить за действиями пользователя в самом Excel'е)
Private Sub CB_Load_Click()
Dim TS_Open As String
Dim nResult As Integer
' Загрузка из файла
Set appExcel = New Excel.Application
With CommonDialog1
.Filter = "Файлы Excel (*.xls)| *.xls" 'Фильтр для открытия файла
.InitDir = "C:\"
.Action = 1 'Или же CommonDialog1.ShowOpen
'.Filename = "TS"
End With
appExcel.Workbooks.Open CommonDialog1.FileName
TS_Open = ActiveWorkbook.Name
nResult = MsgBox("Внимание лист таблицы соответствия будет заменен. Вы согласны ? ", vbYesNo + vbExclamation, "Будем заменять лист таблицы соответствия ? !"
If nResult = vbYes Then
appExcel.Visible = True
'без этой строки у меня не получилось, Excel запрашивает подверждения удаления, как программно ответить ему не знаю
appExcel.WindowState = xlMaximized
'сделаешь так, User увидит Excel'евский msgbox
appExcel.Worksheets("Лист2".Delete
appExcel.ActiveWorkbook.Save
If appExcel Is Nothing = False Then
Set appExcel = Nothing
End If
End If
End Sub
Номер ответа: 2
Автор ответа:
jojo
Вопросов: 2
Ответов: 4
Профиль | | #2
Добавлено: 20.07.04 12:31
To Mihalыch
Спасибо, попробую через Application
Номер ответа: 3
Автор ответа:
jojo
Вопросов: 2
Ответов: 4
Профиль | | #3
Добавлено: 20.07.04 12:31
To Mihalыch
Спасибо, попробую через Application
Номер ответа: 4
Автор ответа:
jojo
Вопросов: 2
Ответов: 4
Профиль | | #4
Добавлено: 20.07.04 12:57
Вот конкретная привязка к файлу ...все работает
а я хочу чтоб имя было любое
Private Sub CB_Load_Click()
' Загрузка из файла
With CommonDialog1
.Filter = "Файлы Excel (*.xls)| *.xls" 'Фильтр для открытия файла
.InitDir = "C:\"
.Action = 1 'Или же CommonDialog1.ShowOpen
.Filename = "TS"
End With
Application.Workbooks.Open CommonDialog1.Filename
TS_Open = "TS.xls"
nResult = MsgBox("Внимание лист таблицы соответствия будет заменен. Вы согласны ? ", vbYesNo + vbExclamation, "Будем заменять лист таблицы соответствия ? !"
If nResult = vbYes Then
Workbooks("osv.xls".Activate
Workbooks("osv.xls".Worksheets("Таблица соответствия".Select
ActiveWindow.SelectedSheets.Delete
ActiveWorkbook.Save
Workbooks("ts.xls".Activate
Workbooks("ts.xls".Worksheets("Таблица соответствия".Select
Workbooks("ts.xls".Worksheets("Таблица соответствия".Copy Before:=Workbooks("osv.xls".Sheets(5)
Workbooks("ts.xls".Activate
ActiveWorkbook.Close SaveChanges:=False, Filename:="ts.xls"
MsgBox ("Внимание ! Таблица соответствия сохранена в файле OSV.XLS !"
End If
End Sub
Номер ответа: 5
Автор ответа:
Mihalыch
ICQ: 373-509-101
Вопросов: 56
Ответов: 330
Профиль | | #5
Добавлено: 20.07.04 13:17
Если я правильно понял, ты хочешь открывать файл не только с именем TS. Если так, убери из вызова CommonDialog .Filename = "TS", замени “Имя файла” на CommonDialog.FileTitle. Но тогда придется проверять, есть или нет в открытой книге лист, который ты хочешь удалить.
З. Ы. После того с помощью Application выполнишь работу, закрой свою программу, файл все открытые файлы Excel, запусти диспетчер задач, если в процессах найдешь Excel – будут проблемы!
Номер ответа: 6
Автор ответа:
Mihalыch
ICQ: 373-509-101
Вопросов: 56
Ответов: 330
Профиль | | #6
Добавлено: 20.07.04 13:17
Если я правильно понял, ты хочешь открывать файл не только с именем TS. Если так, убери из вызова CommonDialog .Filename = "TS", замени “Имя файла” на CommonDialog.FileTitle. Но тогда придется проверять, есть или нет в открытой книге лист, который ты хочешь удалить.
З. Ы. После того с помощью Application выполнишь работу, закрой свою программу, все открытые файлы Excel, запусти диспетчер задач, если в процессах найдешь Excel – будут проблемы!
Номер ответа: 7
Автор ответа:
jojo
Вопросов: 2
Ответов: 4
Профиль | | #7
Добавлено: 27.07.04 12:43
To Mihalыch
спасибо, исправил тут млин все равно фигня
Млин хрень хреновская ...чё делать то ...
Не катит - ошибка Automation error -2147221080(800401a8)
Private Sub CB_Load_Click()
' Загрузка из файла
With CommonDialog1
.Filter = "Файлы Excel (*.xls)| *.xls" 'Фильтр для открытия файла
.InitDir = "C:\"
.Action = 1 'Или же CommonDialog1.ShowOpen
End With
Application.Workbooks.Open CommonDialog1.FileTitle
TS_Open = CommonDialog1.FileTitle
nResult = MsgBox("Внимание лист таблицы соответствия будет заменен. Вы согласны ? ", vbYesNo + vbExclamation, "Будем заменять лист таблицы соответствия ? !"
If nResult = vbYes Then
Workbooks("osv.xls".Activate
Workbooks("osv.xls".Worksheets("Таблица соответствия".Select
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
ActiveWorkbook.Save
Workbooks("ts.xls".Activate
Workbooks("ts.xls".Worksheets("Таблица соответствия".Select
Workbooks("ts.xls".Worksheets("Таблица соответствия".Copy Before:=Workbooks("osv.xls".Sheets(5)
Workbooks("ts.xls".Activate
ActiveWorkbook.Close SaveChanges:=False, Filename:=TS_Open
MsgBox ("Внимание ! Таблица соответствия сохранена в файле OSV.XLS !"
End If
End Sub
Номер ответа: 8
Автор ответа:
tea84
Вопросов: 4
Ответов: 8
Профиль | | #8
Добавлено: 27.07.04 14:35
попробуй воспользоваться в встроенным диалоговым окошком для открытия файлов:
Private Sub CB_Load_Click()
If (Application.Dialogs(xlDialogOpen).Show("*.xls") Then
 im newBook As Workbook
Set newBook = Application.Workbooks(Application.Workbooks.Count)
nResult = MsgBox("Внимание лист таблицы соответствия будет заменен. Вы согласны ? ", vbYesNo + vbExclamation, "Будем заменять лист таблицы соответствия ? !"
If nResult = vbYes Then
'нельзя удалять из книги последний лист
If newBook.Worksheets.Count > 1 Then
Application.DisplayAlerts = False
On Error GoTo NoSheet
newBook.Worksheets("Sheet1".Delete
On Error GoTo 0
Application.DisplayAlerts = True
End If
newBook.Save
newBook.Close SaveChanges:=False
End If
End If
NoSheet:
MsgBox "нет такого листа"
Exit Sub
End Sub
Номер ответа: 9
Автор ответа:
tea84
Вопросов: 4
Ответов: 8
Профиль | | #9
Добавлено: 27.07.04 14:38
а после последнего End If в моем коде надо поставить Exit Sub (пропустила)