Удаление файла...

Программирование на Visual Basic for Applications
Rik3D
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 84
Зарегистрирован: 07.02.2005 (Пн) 12:37

Удаление файла...

Сообщение Rik3D » 02.05.2005 (Пн) 21:09

На рабочем листе в Exel есть имена файлов в столбик. Как сделать так, чтобы при нажатие на ячейку с именем файла, он (файл) удалялся из самой папки где он находитсь?

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 02.05.2005 (Пн) 22:06

Э... Ну, наверное надо использовать Kill. А в качестве параметра дать ему значение ячейки?

Rik3D
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 84
Зарегистрирован: 07.02.2005 (Пн) 12:37

Сообщение Rik3D » 03.05.2005 (Вт) 13:01

kill удаляет файл без вопросов, а какую инструкцию надо использовать, чтобы он спрашивал ( Вы действительно хотите удалить и ответы да или нет), ну как в Windows когда файл удаляешь.

Brudda
Обычный пользователь
Обычный пользователь
 
Сообщения: 79
Зарегистрирован: 21.02.2005 (Пн) 14:47
Откуда: Рига

Сообщение Brudda » 03.05.2005 (Вт) 14:07

Привет.
Попробуй вызвать ЮзерФорм, на которой будет твой вопрос (об удалении) и две кнопки -"Да" и "Нет". Да - килл; нет - закрыть ЮзерФорм

Rik3D
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 84
Зарегистрирован: 07.02.2005 (Пн) 12:37

Сообщение Rik3D » 03.05.2005 (Вт) 14:45

Так тоже можно, НО должна же быть инструкция которая при удалении спрашивала, как Windows.

Димитрий
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 194
Зарегистрирован: 26.01.2005 (Ср) 22:47
Откуда: Волгоград

Сообщение Димитрий » 03.05.2005 (Вт) 18:55

Есть хороший примерчик:

Код: Выделить всё
Option Explicit
'Удаление файлов в Корзину (Recycle Bin), как это делает Проводник (Windows Explorer),
'причем будут использованы системные настройки Корзины, т.е. если у Вас установлен
'флажок "Уничтожать файлы сразу после удаления, не помещая их в корзину", то файл
'будет удален с диска без помещения в Корзину!

'Объявления

Public Type SHFILEOPSTRUCT
  hwnd As Long
  wFunc As Long
  pFrom As String
  pTo As String
  fFlags As Integer
  fAnyOperationsAborted As Long
  hNameMappings As Long
  lpszProgressTitle As Long
End Type

Public Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" _
    (lpFileOp As SHFILEOPSTRUCT) As Long

Public Const FO_DELETE = &H3
Public Const FOF_ALLOWUNDO = &H40

Public Sub WKorsinu(strFile As String)
' Где strFile есть полный путь к файлу, который Вы хотите поместить в Корзину

Dim SHop As SHFILEOPSTRUCT

With SHop
  .wFunc = FO_DELETE
  .pFrom = strFile
  .fFlags = FOF_ALLOWUNDO
End With

SHFileOperation SHop
End Sub

Rik3D
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 84
Зарегистрирован: 07.02.2005 (Пн) 12:37

Сообщение Rik3D » 14.05.2005 (Сб) 20:59

Спасибо, я сделал форму с инструкцией kill, если да, то удаляем, если нет то форма закрывается!

Rik3D
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 84
Зарегистрирован: 07.02.2005 (Пн) 12:37

Сообщение Rik3D » 14.05.2005 (Сб) 21:03

Я прикрепил форму на двойной щелчок по ячейке с именем, два раза щёлкнул появляется форма, если нажать нет(то есть не удалять файл), форма закроется, но курсор(который мигает) остаётся в чейке.
Как сделать так,чтобы курсор не оставался (как, если пичатать в ячейке мигает курсор)?

Димитрий
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 194
Зарегистрирован: 26.01.2005 (Ср) 22:47
Откуда: Волгоград

Сообщение Димитрий » 14.05.2005 (Сб) 22:40

В конце процедуры Private Sub Worksheet_BeforeDoubleClick поставь
Cancel = True

Rik3D
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 84
Зарегистрирован: 07.02.2005 (Пн) 12:37

Сообщение Rik3D » 15.05.2005 (Вс) 11:57

Димитрий, спасибо помогло!
Последний раз редактировалось Rik3D 15.05.2005 (Вс) 12:03, всего редактировалось 1 раз.

Rik3D
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 84
Зарегистрирован: 07.02.2005 (Пн) 12:37

Сообщение Rik3D » 15.05.2005 (Вс) 12:01

Извените, что не по теме, не хотелось создавать новую!
У меня на форме (UserForm1) помещено 3 OptionButton. Если нажимаешь на одну из них главная форма закрывается (с 3 OptionButton), и появляется другая. Алгоритм таков:
Код: Выделить всё
Private Sub OptionButton3_Click()
UserForm1.Hide
UserForm3.Show
End Sub

НА UserForm3 я создал кнопку с кодом:
Код: Выделить всё
Private Sub CommandButton2_Click()
UserForm3.Hide
UserForm1.Show
End Sub

И когда появляется UserForm1, с боку стоит точка (на том OptionButton на который нажал до этого).
Как сделать так, чтобы точка напротив OptionButton не стояла, когда срабатывает CommandButton2( появляется UserForm1)?

Димитрий
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 194
Зарегистрирован: 26.01.2005 (Ср) 22:47
Откуда: Волгоград

Сообщение Димитрий » 15.05.2005 (Вс) 12:54

Можно просто её убрать:
Код: Выделить всё
Private Sub CommandButton2_Click()
UserForm3.Hide
UserForm1.Show
UserForm1.OptionButton2.Value = False
End Sub

Иногда проще не скрыть UserForm1.Hide , а уничтожить Unload UserForm1
И тогда при следующем показе она будет в первозданном виде.

Rik3D
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 84
Зарегистрирован: 07.02.2005 (Пн) 12:37

Сообщение Rik3D » 15.05.2005 (Вс) 22:05

Большое спасибо. Скорее всего сделаю Unload UserForm1 .


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28

    TopList