Страница: 1 |
Страница: 1 |
Вопрос: Переименование\Перемещ папок средством VBA Excel
Добавлено: 16.08.08 11:55
Автор вопроса: Aleksandr
Не могу найти информации именно по переименованию или перемещению существующей папки без использования FileSistemObject.
Подскажите, пожалуйста, кто знает, как это делается по средству VBA Excel?
Спасибо!
Ответы
Всего ответов: 13
Номер ответа: 1
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #1
Добавлено: 16.08.08 13:08
MSDN. Там много информации.
Номер ответа: 2
Автор ответа:
Aleksandr
Вопросов: 7
Ответов: 15
Профиль | | #2
Добавлено: 16.08.08 17:45
Неужели так много?
Вот это ответ! Причём человека, ответившего почти на 1500 ответов!
Судя по другим Вашим ответам на форуме, этот ещё нормально!
Executioner, Вы здесь для того, чтобы делиться знаниями или чтобы поднять свой рейтинг пустыми ответами? Если второе, то не захломляйте переписку своими знаниями о существовании MSDN и прочими ссылками и советами, не имеющих здравой конкретики!
А что касаемо MSDN, являющейся help-библиотекой для VB, то многие вкурсе существования этой библиотки, её информации и на какой продукт она ориентирована. И если Вы найдёте там информацию о столь известном Вам ответе на заданный вопрос, я всеобще извенюсь за свои вышесказанные в Ваш адрес слова!
В любом случае, Executioner, Спасибо за Ваш ответ!
Номер ответа: 3
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #3
Добавлено: 16.08.08 23:17
Aleksandr, большое спасибо за вашу рецензию и комментарий.
Мы постоянно работаем над улучшением сайта и форума и обязательно примем ваши замечание во внимание!
Если в VBA встроенной функции нет (а я так понимаю что нет), то прийдется реализовывать как-то по-другому, например через Win32APi
Номер ответа: 4
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #4
Добавлено: 17.08.08 02:19
Кто-то еще так считает?
Александр,просто если в интернете легко найти решение задачи просто правильно составив запрос и введя его в гугл, то я не считаю, что должен тратить время на написание ответа.
Номер ответа: 5
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #5
Добавлено: 17.08.08 02:19
hWnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAborted As Boolean
hNameMaps As Long
sProgress As String
End Type
Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
Private Const FO_DELETE = &H3
Private Const FO_COPY = &H2
Private Const FO_RENAME = &H4
Private Const FOF_SILENT = &H4
Private Const FOF_NOCONFIRMATION = &H10
Private Const FOF_NOCONFIRMMKDIR = &H200
Private Sub Form_Load()
Dim SHDirOp As SHFILEOPSTRUCT
With SHDirOp
.wFunc = FO_COPY
.fFlags = FOF_SILENT Or FOF_NOCONFIRMATION Or FOF_NOCONFIRMMKDIR
.pFrom = "C:\windows\cursors"
.pTo = "c:\temp"
End With
SHFileOperation SHDirOp ' копируем
With SHDirOp
.wFunc = FO_RENAME
.fFlags = FOF_SILENT Or FOF_NOCONFIRMATION Or FOF_NOCONFIRMMKDIR
.pFrom = "c:\temp\cursors"
.pTo = "c:\temp\temp1"
End With
SHFileOperation SHDirOp ' переименовываем
With SHDirOp
.wFunc = FO_DELETE
.fFlags = FOF_SILENT Or FOF_NOCONFIRMATION Or FOF_NOCONFIRMMKDIR
.pFrom = "c:\temp\temp1"
End With
SHFileOperation SHDirOp ' удаляем
End Sub
Номер ответа: 6
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #6
Добавлено: 17.08.08 02:23
Ответ выше. На написание его ушло пять минут. И не надо на меня наговаривать, мол, у меня полно флуда - это неправда.
Ссылка на статью MSDN:
http://msdn.microsoft.com/en-us/library/bb762164(VS.85).aspx
Номер ответа: 7
Автор ответа:
GDK
Вопросов: 13
Ответов: 348
Профиль | | #7
Добавлено: 18.08.08 14:20
Не надо выёживаться! Executioner правильно ответил типа "ищи сам ответ слишком прост". Цитата из статьи для начинающих со времён VB5.
:
Копирование, уничтожение, переименование и прочие действия с папками и файлами.
оператор Kill путь - уничтожает файл (или файлы, если используются подстановочные знаки * или ?) с диска (пример Kill "c:\mypicture\*.jpg"
оператор FileCopy "копируемый файл", "новое имя копируемого файла" - копирует файл. Лучше писать полный путь в обоих аргументах. (например: FileCopy "c:\referat.txt", "c:\allreferats\referat4.txt". Открытый (например оператором Open) файл скопировать нельзя. Это вызовет ошибку выполнения.
оператор Name "староеимяфайла" As "новоеимяфайла" - переименовывает файл или каталог. При этом если указать разные пути, то файл перенесется под другим именем. А если пути одинаковые, а имена разные, то произойдет переименование файла. (пример: Name "c:\autoexe.bat" As "d:\myfile.bat"
оператор RmDir "путь" - уничтожает существующую пустую папку (пример RmDir "c:\Programs\Project". При попытке удалить непустую папку возникает ошибка. Внимание, если не указать полный путь, оператор удалит папку из текущего каталога (пример RmDir "PAPKA".
оператор MkDir "путь" - создает новую папку (пример MkDir "c:\Programs\Project". Если полный путь не указан, папка создается в текущем каталоге. (пример MkDir "Новый проект" ).
оператор СhDir "путь" - изменяет текущий каталог (а не диск) на указываемый в пути.
функция CurDir ("диск" - возвращает текущий диск. Аргумент диск необязательный.
оператор ChDrive "диск" - изменяет текущий диск. Аргумент диск - обязательный, в нем используется только первый символ.
В принципе, здесь все просто, поэтому специальной программой я иллюстрировать это не буду.
Кроме того, до кучи, хочу сказать, что из своей программы ты можешь запустить любой исполняемый файл, например .exe в ассинхронном режиме (т.е. он будет выполняться независимо от выполнения твоей программы, из которой ты его вызвал) с помощью функции
Shell ("путь до файла программы", "вид окна, в котором откроется программа"
Путь - это понятно, а второй аргумент - константа, которая может принимать следующие значения:
Имя константы, Числовое значение константы, В каком виде откроется программа
vbHide 0 скрытое окно, фокус
vbNormalFocus 1 свой размер, фокус
vbMinimizedFocus 2 в виде значка в контрольной панели, фокус
vbMaximizedFocus 3 в полный экран с фокусом
vbNormalNoFocus 4 свой размер без фокуса
vbMinimizedNoFocus 6 в виде значка в контрольной панель, без фокуса
Номер ответа: 8
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #8
Добавлено: 18.08.08 14:59
Вообще, можно запустить командную строку с параметрами RMDIR /S /Q твоя_папка
Номер ответа: 9
Автор ответа:
KiZ
Вопросов: 27
Ответов: 68
Профиль | | #9
Добавлено: 18.08.08 15:18
Ребят раз уж вы упомянули вызов экзешника)
Офф-топ: То можно ли как нибудь отлавливать измененные в нем байты) типо HEXEditor... просто надо название изменяющейся картинки как-то из экзешника вытащить))
Номер ответа: 10
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #10
Добавлено: 18.08.08 15:20
А теперь хорошо подумай и создай свой топик. только напиши все понятнее, чем сейчас
Номер ответа: 11
Автор ответа:
Aleksandr
Вопросов: 7
Ответов: 15
Профиль | | #11
Добавлено: 19.08.08 12:37
Всем огромное спасибо!
Executioner, спешу всеобще извениться перед тобой за свои выше сказанные слова в твой адрес!
Ты действительно хорошо разбираешся!
Пожалуйста, не думай, что все, кто задаёт вопросы, хотят лишь одного - чтобы за них всё сделали! Вопрос "Сделайте за меня контрольную" или "Помогите разобраться с конкретным случаем" сильно отличаются!
Я уже говорил, что я новичок в программировании, начав самостоятельное обучение с полного нуля три месяца назад. И прежде чем задать этот вопрос, я потратил более двух недель и ответил на кучу своих же незаданных здесь вопросов. В том числе и по переименованию\перемещению именно папок, но в VB, но я не смог их применить в VBA Exсel. И, поверь, пробывал не единственным способом, в том числе и используя информацию с MSDN.
Многие мои же вопросы, ещё месячной давности, сейчас для меня кажутся слишком простыми. Но тогда... Со временем и последний вопрос станет для меня очень простым, потому что я хочу разобраться и не жалею на это время! Но когда заходишь в тупик, единственная для меня возможность, это спросить здесь, расчитывая на помощь тех, для кого такая задача - пройденый этап!
GDK, большое спасибо за такую огромную вырезку информации.
Чуть позже испробую все Ваши советы. Надеюсь найду не один путь решения своей задачи!
Executioner, ещё раз извени за мои резкие слова в твой адрес!
Номер ответа: 12
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #12
Добавлено: 19.08.08 16:33
Ничего, все хорошо. Спасибо.
Номер ответа: 13
Автор ответа:
GDK
Вопросов: 13
Ответов: 348
Профиль | | #13
Добавлено: 20.08.08 12:46
Автор хотел без FSO. Клювом нефиг щёлкать, а то далеко вы с друзыями укотытесь.