Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2011, 17:43   #1
MoHoMaXFR
Пользователь
 
Регистрация: 04.05.2011
Сообщений: 36
По умолчанию Определение доступного диска

Здраствуйте. Как задать VBA определение доступного диска? Так как на компе много разделов но админка например диск С для использование в профиле запуска программы соотвецтвенно мы не можем просто задать путь сохранения файла на определённый диск. а как научить вба находить исользующийся диск и выводить надпись о том что этот диск доступен
MoHoMaXFR вне форума Ответить с цитированием
Старый 24.05.2011, 18:30   #2
MoHoMaXFR
Пользователь
 
Регистрация: 04.05.2011
Сообщений: 36
По умолчанию

или как это обойти
MoHoMaXFR вне форума Ответить с цитированием
Старый 24.05.2011, 18:52   #3
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

а что надо?
найти все диски используемые системой?
найти первую свободную букву?
Код:
Sub bb()
  On Error Resume Next
  For i = 97 To 122
    ChDir Chr(i) & ":\"
    If Err.Number = 0 Then MsgBox Chr(i) Else Err.Clear
  Next
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 24.05.2011, 20:54   #4
Alex_ST
Пользователь
 
Аватар для Alex_ST
 
Регистрация: 04.12.2009
Сообщений: 28
По умолчанию

Попробуйте так:
Код:
Sub List_MyPC_Drives()   ' создать новую книгу и вывести на лист инфо о всех дисках компьютера
   Dim Arr(): Arr = Application.Transpose(Array("DriveLetter", "DriveType", "IsReady", "VolumeName", "TotalSize", "AvailableSpace", "SerialNumber"))  ' заголовки в первом столбце массива
   Dim DRVtype(): DRVtype = Array("UnKnown", "Removable", "HDD", "Network", "CD/DVD", "RAM")
   Dim DRV
   Dim i%: i = 2   ' начать заполнять массив со второго столбца (в первом - заголовки)
   On Error Resume Next
   For Each DRV In CreateObject("Scripting.FileSystemObject").Drives
      ReDim Preserve Arr(1 To 7, 1 To i)
      Arr(1, i) = DRV.DriveLetter
      Arr(2, i) = DRVtype(DRV.DriveType)
      Arr(3, i) = IIf(DRV.IsReady, "Ready", "Not Ready")
      If DRV.IsReady Then
         Arr(4, i) = DRV.VolumeName
         Arr(5, i) = DRV.TotalSize
         Arr(6, i) = DRV.AvailableSpace
         Arr(7, i) = Hex$(DRV.SerialNumber)
      End If
      i = i + 1
   Next DRV
   Application.Workbooks.Add
   Cells(1, 1).Resize(UBound(Arr, 2), UBound(Arr, 1)).ClearContents
   Cells(1, 1).Resize(UBound(Arr, 2), UBound(Arr, 1)).Value = Application.Transpose(Arr)
End Sub
Alex_ST вне форума Ответить с цитированием
Старый 24.05.2011, 20:56   #5
Alex_ST
Пользователь
 
Аватар для Alex_ST
 
Регистрация: 04.12.2009
Сообщений: 28
По умолчанию

А если не нужен вывод в новую книгу, то можно короче:
Код:
Sub List_of_Drives()   ' инфо о жёстких дисках компьютера
   Dim DRV: Const DriveType = 2   '0-"UnKnown", 1-"Removable", 2-"HDD", 3-"Network", 4-"CD/DVD", 5-"RAM"
   On Error Resume Next
   For Each DRV In CreateObject("Scripting.FileSystemObject").Drives
      If DRV.DriveType = DriveType Then
Debug.Print "------------------------"
Debug.Print "DriveLetter = " & DRV.DriveLetter
Debug.Print "IsReady = " & DRV.IsReady
Debug.Print "VolumeName = " & DRV.VolumeName
Debug.Print "TotalSize = " & DRV.TotalSize
Debug.Print "AvailableSpace = " & DRV.AvailableSpace
Debug.Print "SerialNumber = " & Hex$(DRV.SerialNumber)
      End If
   Next
End Sub
Alex_ST вне форума Ответить с цитированием
Старый 24.05.2011, 21:18   #6
MoHoMaXFR
Пользователь
 
Регистрация: 04.05.2011
Сообщений: 36
По умолчанию

мне надо чтобы он нашел раздел на котором может работать данный пользователь , нанем создал папку и сохранял туда файлы
MoHoMaXFR вне форума Ответить с цитированием
Старый 24.05.2011, 21:19   #7
MoHoMaXFR
Пользователь
 
Регистрация: 04.05.2011
Сообщений: 36
По умолчанию

Извините если не прально поставил свой вопрос.
MoHoMaXFR вне форума Ответить с цитированием
Старый 24.05.2011, 21:25   #8
Alex_ST
Пользователь
 
Аватар для Alex_ST
 
Регистрация: 04.12.2009
Сообщений: 28
По умолчанию

Цитата:
Сообщение от MoHoMaXFR Посмотреть сообщение
… как научить вба находить исользующийся диск и выводить надпись о том что этот диск доступен
Кем и для чего использующийся?
Я вам дал примеры получения информации о дисках компьютера.
А подпиливайте под свои нужды уже самостоятельно, т.к. толком объяснить не можете, что хотите получить
Alex_ST вне форума Ответить с цитированием
Старый 24.05.2011, 22:41   #9
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

так?
Код:
Sub SaveAt1FreeDisk()
  Dim ps As String, pth As String, nm As String, cdr As String
  On Error Resume Next
  ps = Application.PathSeparator
  For i = 100 To 122
    pth = Chr(i) & ":" & ps & "Fold" & Format(Now, "YYYYMMDDhhmmss") & ps
    MkDir pth
    If Err.Number = 0 Then
      nm = "FL" & Format(Now, "YYYYMMDDhhmmss")
      ActiveWorkbook.SaveAs pth & nm
      MsgBox "File " & nm & " was saved at " & pth, vbOKOnly, "Congratulations!!!"
      Exit For
    Else
      Err.Clear
    End If
  Next
  If i = 123 Then MsgBox "Mission not possible", vbCritical + vbOKOnly, "Condolence..."
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 24.05.2011 в 22:44.
IgorGO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определение устройства по букве диска DenisGTS Общие вопросы C/C++ 1 09.02.2011 02:28
дефрагментация диска syperman96 Помощь студентам 1 24.11.2010 16:18
QT4 - Определение серийника жёсткого диска xwicked Qt и кроссплатформенное программирование С/С++ 2 06.08.2010 23:35
Создание события формы, доступного в Disign-time Fausto Компоненты Delphi 4 06.06.2008 16:12