Создание папки на диске (Outlook)

Программирование на Visual Basic for Applications
demid77
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 14.09.2005 (Ср) 13:18

Создание папки на диске (Outlook)

Сообщение demid77 » 12.09.2006 (Вт) 15:48

необходимо сохранять письма из Outlooka на диске в папки по отправителям. вроде бы всё понятно, но не знаю как создать из Outllok'a папки на диске (имя папки - это имя отправителя письма).

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

Сообщение RayShade » 12.09.2006 (Вт) 16:04

MkDir :)

demid77
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 14.09.2005 (Ср) 13:18

Сообщение demid77 » 13.09.2006 (Ср) 8:06

нашёл код от hCORe, 27.05.2006 - см. ниже. Подскажите, зачем используется символ "$" в функциях Left и Right?

Код: Выделить всё
Visual Basic:
'MkFolder subroutine
'   Creates specified folder
'   Accepts any valid non-UNC path, even if none of its components
'   has yet been created
'   Could work with both slashes / and backslashes \
'   Doesn't return an error, except for the case you entered invalid path
'author: hCORe <entropia@fluda.net>
Public Sub MkFolder(sFolder As String)
On Error Resume Next
    If Len(sFolder) < 4 Then
        On Error GoTo 0
        Err.Raise 5, "MkFolder", "Invalid argument: folder path should be at least 4 characters long."
    End If
   
    ChDrive Left$(sFolder, 3)
    If Right$(sFolder, 1) = "\" Then sFolder = Mid$(sFolder, 1, Len(sFolder) - 1)
   
    'replace slashes to backslashes
    sFolder = ReplTxt(sFolder, "/", "\")
    Dim aSubs() As String
    'split string into an array
    aSubs = Split(sFolder, "\")
   
    Dim i As Long
    Dim sMake As String
   
    'walk through the path, skipping element 0 (drive)
    sMake = aSubs(0)
    For i = 1 To UBound(aSubs)
        sMake = sMake & "\" & aSubs(i)
        MkDir sMake
    Next
   
    'cleanup
    Erase aSubs()
    Err.Clear
End Sub

'ReplTxt Function
'   Wrapper for VBA.Replace
'author: hCORe <entropia@fluda.net>
Public Function ReplTxt(sWhere As String, sWhat As String, sReplace As String, Optional eCompare As VbCompareMethod = vbBinaryCompare) As String
On Error Resume Next
    Dim sTmp As String
    sTmp = sWhere
    sTmp = VBA.Replace(sTmp, sWhat, sReplace, , , eCompare)
    If sTmp = sWhat Then sTmp = sWhere
    ReplTxt = sTmp
End Function

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 13.09.2006 (Ср) 8:18

Строковые функции в VB существуют в двух вариантах, те которые с $ на конце принимают в качестве аргумента String и возвращают String. А те которые без $ принимают аргументом Variant и возвращают Variant.

З.Ы. А просто MkDir не потянет?
Весь мир матрица, а мы в нем потоки байтов!

demid77
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 14.09.2005 (Ср) 13:18

Сообщение demid77 » 13.09.2006 (Ср) 8:27

будет ли отличие для VBA - "Left" и "Left$"?
MkDir может и потянет, но я не успел ещё попробовать :). к тому же если папка уже существует, то MkDir ругается, а MkFolder это не важно.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 13.09.2006 (Ср) 9:33

Разница будет.

Насчет использования MkFolder стоит посмотреть здоровую критику на всякий случай.
Весь мир матрица, а мы в нем потоки байтов!


Вернуться в VBA

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

Сейчас этот форум просматривают: Google-бот и гости: 106

    TopList