powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Запрос на замену (VBA)
7 сообщений из 7, страница 1 из 1
Запрос на замену (VBA)
    #38196669
Максим17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем. Решил обратиться за помощью. Есть книга xls, так вот
– если файл **.xls не существует, выполняется (код программы, который я написал уже); (сделанно)

Sub ЗаменаФайла()
Dim WorkBooksOpen As String
WorkBooksOpen = Dir("C:\Users\Максим\Desktop\ma\Случайные числа.xls")
If WorkBooksOpen = "" Then

СлучайныеЧисла

Else


Более интересен следующий пункт

– в противном случае выдается сообщение об его существовании и запрос на замену:
[img] http://s020.radikal.ru/i708/1303/17/0be0ade537df.jpg [/img]
если я щелкну по кнопке Да, то файл удаляется, а затем выполняется мой кусок (СлучайныеЧисла)
...
Рейтинг: 0 / 0
Запрос на замену (VBA)
    #38196692
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А в чем вопрос-то?
...
Рейтинг: 0 / 0
Запрос на замену (VBA)
    #38196704
Максим17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Казанский, как реализовать второй пункт? С кнопками этими.
...
Рейтинг: 0 / 0
Запрос на замену (VBA)
    #38196746
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим17,

Примерно так:
Код: 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.
Sub ЗаменаФайла()
    
    Dim cPath As String, cName As String
    cPath = ThisWorkbook.Path
    cName = "Случайные числа.xls"
    
    If Dir(cPath & "\" & cName) <> "" Then
    ' файл существует
        If MsgBox("Файл " & cName & " уже существует. Заменить?", vbOKCancel + vbQuestion) = vbOK Then
        ' желаем заменить -
        ' просто стираем старый файл (он должен быть закрыт!)
            Kill cPath & "\" & cName
        ' файла больше не существует
        Else
        ' выходим из процедуры, оставляя старый файл
            Exit Sub
        End If
    Else
    ' файл не существует
    End If
    ' формируем новый файл
    Call СлучайныеЧисла

End Sub

Использование "OK/Отмена" вместо "Да/Нет" более оправданно, поскольку отказ соответствует прерыванию исполнения, да и заодно функционирует ESC...
...
Рейтинг: 0 / 0
Запрос на замену (VBA)
    #38197017
Максим17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM, Спасибо. А я вот как сделал, это может иметь место? Причем перед тем как удалить я сделал закрытие книги, это правильно?
Sub ЗаменаФайла()
Dim WorkBooksOpen As String
Dim Кнопка As Integer
СлЧисла = "C:\Users\Максим\Desktop\ma\Случайные числа.xls"
Filename = Dir(СлЧисла)

WorkBooksOpen = Dir("C:\Users\Максим\Desktop\ma\Случайные числа.xls")
If WorkBooksOpen = "" Then

СлучайныеЧисла

Else

Кнопка = MsgBox("Случайные числа.xls существует. Заменить?", vbYesNo + vbQuestion + vbDefaultButton1)
Select Case Кнопка
Case vbYes
Workbooks("Случайные числа.xls").Close
Kill (СлЧисла)
СлучайныеЧисла
Case vbNo
Exit Sub

End Select
End If
End Sub
...
Рейтинг: 0 / 0
Запрос на замену (VBA)
    #38197527
Максим17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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.
Sub ЗаменаФайла()
 Dim WorkBooksOpen As String
 Dim Кнопка As Integer
 Dim j As Integer
 
 СлЧисла = "C:\Users\Максим\Desktop\ma\Случайные числа.xls"
 Filename = Dir(СлЧисла)

 WorkBooksOpen = Dir("C:\Users\Максим\Desktop\ma\Случайные числа.xls")
 If WorkBooksOpen = "" Then
 
 СлучайныеЧисла
 
 Else
 
 Кнопка = MsgBox("Случайные числа.xls существует. Заменить?", vbYesNo + vbQuestion + vbDefaultButton1)
 Select Case Кнопка
        Case vbYes
        For j = 1 To Workbooks.Count
        If Workbooks(j).Name = WorkBooksOpen Then Workbooks("Случайные числа.xls").Close saveChanges:=False
        Next j
        Kill "C:\Users\Максим\Desktop\ma\Случайные числа.xls"
        СлучайныеЧисла
        Case vbNo
        Exit Sub
 
 End Select
 End If
End Sub


Вопрос закрыт :)
...
Рейтинг: 0 / 0
Запрос на замену (VBA)
    #38197894
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим17,

Много лишних телодвижений, включая перебор книг, двойной вызов процедцры... А уж фраза "Случайные числа.xls", прописанная пять(!) раз А что будет, если изменится каталог с файлом, или имя "Случайные числа"?
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Запрос на замену (VBA)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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