Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 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
    ;Dim 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
    ;Dim 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 (пропустила)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам