Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Переименование\Перемещ папок средством VBA Excel Добавлено: 16.08.08 11:55  

Автор вопроса:  Aleksandr
Не могу найти информации именно по переименованию или перемещению существующей папки без использования FileSistemObject.
Подскажите, пожалуйста, кто знает, как это делается по средству VBA Excel?
Спасибо!

Ответить

  Ответы Всего ответов: 13  

Номер ответа: 1
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #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-сайт: domkratt.com
 Профиль | | #4
Добавлено: 17.08.08 02:19
Судя по другим Вашим ответам на форуме, этот ещё нормально!

Кто-то еще так считает?

Александр,просто если в интернете легко найти решение задачи просто правильно составив запрос и введя его в гугл, то я не считаю, что должен тратить время на написание ответа.

Ответить

Номер ответа: 5
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #5
Добавлено: 17.08.08 02:19
Private Type SHFILEOPSTRUCT
    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-сайт: domkratt.com
 Профиль | | #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-сайт: domkratt.com
 Профиль | | #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-сайт: domkratt.com
 Профиль | | #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-сайт: domkratt.com
 Профиль | | #12
Добавлено: 19.08.08 16:33
Ничего, все хорошо. Спасибо.

Ответить

Номер ответа: 13
Автор ответа:
 GDK



Вопросов: 13
Ответов: 348
 Профиль | | #13 Добавлено: 20.08.08 12:46
Автор хотел без FSO. Клювом нефиг щёлкать, а то далеко вы с друзыями укотытесь.

Ответить

Страница: 1 |

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



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