Почему код выдает ошибку "Путь не найден"?

У меня есть следующий код , но только проблема в том , что в строке : Set oFolder = fs.GetFolder(cDir) он пишет , что путь не найден. как исправить?

Private Sub CommandButton1_Click()
MyArrFromForm
InitializeDoc
Rose
End Sub

Private Sub CommandButton2_Click()
LoadTextPart2
End Sub

Private Sub CommandButton3_Click()
UserForm2.Show
End Sub

Private Sub CommandButton4_Click()
UserForm1.Hide
End Sub

Private Sub CommandButton5_Click()
Module1.login

End Sub

Private Sub TextBox13_Change()

End Sub

Private Sub TextBox17_Change()

End Sub

Private Sub TextBox29_Change()

End Sub

Private Sub TextBox30_Change()

End Sub

Private Sub TextBox9_Change()

End Sub

Private Sub UserForm_Click()

End Sub
Public Sub UserForm_Activate()
    cDir = CurDir("C") + "\" + "vbaLog"
    Set fs = CreateObject("Scripting.FileSystemObject")
        Set oFolder = fs.GetFolder(cDir)
        For Each oFile In oFolder.Files
            ListBox1.AddItem (oFile.name)
            ListBox2.AddItem (ReadFile(oFile.Path))
        Next oFile
   
End Sub

Public Sub AddFile(name As String, p As String, m As String)
    Open cDir + "\" + name For Output As #1
    Print #1, p
    Print #1, m
    Close #1
End Sub

Public Function ReadFile(p As String) As String
    Dim checkp, lvl As String
    Open p For Input As #1
    Do While Not EOF(1)
        If (checkp = "") Then
            Line Input #1, checkp
            Line Input #1, lvl
        End If
    Loop
    Close #1
    ReadFile = checkp
End Function

Public Sub CommandButton1_Click()
Label1.Caption = "Симаков Максим"
Label2.Caption = Date
Label3.Caption = "Первая подгруппа"
End Sub

Public Sub CommandButton2_Click()
ReplaceTextPart2
End Sub

Public Sub CommandButton3_Click()
UserForm2.Hide
End Sub

Public Sub TextBox3_Change()

End Sub

Public Sub UserForm_Click()

End Sub

Dim FocusOn As Boolean
Dim cDir As String

Public Sub ComboBox1_Change()
    TextBox2.Visible = False
    TextBox3.Visible = False
    ComboBox2.Visible = False
    If (ComboBox1.Value = "Регистрация" Or ComboBox1.Value = "Редактирование") Then
        TextBox2.Visible = True
        TextBox3.Visible = True
        If (ComboBox1.Value = "Регистрация") Then
            ComboBox2.Visible = True
        End If
    End If
    If (ComboBox1.Value = "Удалить") Then
        TextBox2.Visible = True
    End If
End Sub


Public Sub CommandButton4_Click()
    Dim state, idx As Integer
    Dim lvl, login, checkp, tmp As String
    state = 0
    idx = 0
    Set fs = CreateObject("Scripting.FileSystemObject")
    If (ComboBox1.Value = "Регистрация") Then
        If (TextBox2.Value <> "") And (TextBox3.Value <> "") And (ComboBox2.Value <> "") Then
            state = 1
            Set oFolder = fs.GetFolder(cDir)
            For Each oFile In oFolder.Files
                If (oFile.name = TextBox2.Value) Then
                    MsgBox ("Указанный вами логин уже существует!")
                    state = -1
                    Exit For
                End If
            Next oFile
            If (state = 1) Then
                login = TextBox2.Value
                If (ComboBox2.Value = "Ограниченный доступ") Then
                    lvl = "1"
                End If
                If (ComboBox2.Value = "Доступно всё") Then
                    lvl = "2"
                End If
                If (ComboBox2.Value = "Продвинутый пользователь") Then
                    lvl = "3"
                End If
                ListBox1.AddItem (TextBox2.Value)
                Open cDir + "\" + login For Output As #1
                Print #1, TextBox3.Value
                Print #1, lvl
                Close #1
            End If
        End If
    End If
    If (ComboBox1.Value = "Редактирование") Then
        If (ListBox1.text <> "") And (TextBox2.Value <> "") And (TextBox3.Value <> "") Then
            login = ListBox1.text
            checkp = ReadFile(cDir + "\" + login)
            If (checkp = TextBox2.Value) Then
                Open cDir + "\" + login For Input As #1
                Line Input #1, tmp
                Line Input #1, lvl
                Close #1
                Open cDir + "\" + login For Output As #1
                Print #1, TextBox3.Value
                Print #1, lvl
                Close #1
                MsgBox ("Пароль был успешно изменен!")
            Else
                MsgBox ("Неправильный пароль")
            End If
        End If
    End If
    If (ComboBox1.Value = "Удалить") Then
        If (ListBox1.text <> "") And (TextBox2.Value <> "") Then
             login = ListBox1.text
             checkp = ReadFile(cDir + "\" + login)
             If (checkp = TextBox2.Value) Then
                fs.DeleteFile (cDir + "\" + login)
                For Each itm In ListBox1.List
                    If login = itm Then
                        Exit For
                    Else
                        idx = idx + 1
                    End If
                Next itm
                ListBox1.RemoveItem (idx)
                MsgBox ("Аккаунт был удален!")
             Else
                MsgBox ("Неправильный пароль")
             End If
        End If
    End If
    If (ComboBox1.Value = "Сортировка") Then
        ListBox1.Clear
        Dim n As Integer
        Dim strTmp As String
        Set fld = fs.GetFolder(cDir)
        n = fld.Files.Count
        ReDim arrNames(1 To n)
        ReDim arrDates(1 To n)
    
        ' Fill arrays
        For Each fil In fld.Files
            I = I + 1
            arrNames(I) = fil.name
            arrDates(I) = fil.DateCreated
        Next fil
    
        ' Bubble sort descending on date
        For I = 1 To n - 1
            For J = I + 1 To n
                If arrDates(I) < arrDates(J) Then
                    dtmTmp = arrDates(I)
                    arrDates(I) = arrDates(J)
                    arrDates(J) = dtmTmp
                    strTmp = arrNames(I)
                    arrNames(I) = arrNames(J)
                    arrNames(J) = strTmp
                End If
            Next J
        Next I
        For I = n To 1 Step -1
            ListBox1.AddItem (arrNames(I))
        Next I
    End If
End Sub

Public Sub TextBox1_Enter()
    FocusOn = True
End Sub

Public Sub UserForm_Activate()
    ComboBox1.AddItem ("Регистрация")
    ComboBox1.AddItem ("Редактирование")
    ComboBox1.AddItem ("Удалить")
    ComboBox1.AddItem ("Сортировка")
    ComboBox2.AddItem ("Ограниченный доступ")
    ComboBox2.AddItem ("Доступно всё")
    ComboBox2.AddItem ("Продвинутый пользователь")
    cDir = CurDir("C") + "\" + "vbaLog"
    Set fs = CreateObject("Scripting.FileSystemObject")
    If (fs.FolderExists(cDir)) Then
        Set oFolder = fs.GetFolder(cDir)
        For Each oFile In oFolder.Files
            ListBox1.AddItem (oFile.name)
        Next oFile
    End If
End Sub

Public Function ReadFile(p As String) As String
    Dim checkp, lvl As String
    Open p For Input As #1
    Do While Not EOF(1)
        If (checkp = "") Then
            Line Input #1, checkp
        Else
            Line Input #1, lvl
        End If
    Loop
    Close #1
    ReadFile = checkp
End Function

Public doc
Dim R
Dim aTitleList(1 To 20) As String 'массив заголовков
Dim aFieldsList(1 To 20, 1 To 20) As String   'массивданных
Dim aPart(1 To 3)
Public oFolder
Public cDir As String

Dim PermissionLvl As Integer

Public Sub login()
    Dim login, passw, checkp, cDir, lvl As String
    login = UserForm1.ListBox1.text
    passw = UserForm1.ListBox2.text
    PermissionLvl = 1
    checkp = ""
    cDir = CurDir("C") + "\vbaLog"
    Set fs = CreateObject("Scripting.FileSystemObject")
    If (fs.FileExists(cDir + "\" + login)) Then
        Open cDir + "\" + login For Input As #1
        Do While Not EOF(1)
            If (checkp = "") Then
                Line Input #1, checkp
            Else
                Line Input #1, lvl
            End If
        Loop
        Close #1
        If (passw = checkp) Then
            MsgBox ("Успешая авторизация!")
            PermissionLvl = lvl
        Else
            MsgBox ("Неправильный пароль!")
        End If
    Else
        MsgBox ("Неправильный логин!")
    End If
    UpdateForm
End Sub

Public Sub UpdateForm()

If (PermissionLvl = 1) Then
    UserForm1.CommandButton5.Visible = False
    UserForm1.CommandButton6.Visible = False
    UserForm1.CommandButton7.Visible = False
    UserForm1.CommandButton3.Visible = False
Else
        UserForm1.CommandButton5.Visible = False
        UserForm1.CommandButton6.Visible = False
        UserForm1.CommandButton7.Visible = False
    UserForm1.CommandButton3.Visible = True
    If (PermissionLvl = 3) Then
        UserForm1.CommandButton5.Visible = True
        UserForm1.CommandButton6.Visible = True
        UserForm1.CommandButton7.Visible = True
    End If
End If
End Sub

Public Function CreateNewWordDocument(temppath)
  Dim wd
'Переменная для хранения ссылки на документ
'Создание объекта Word.Application
  Set App = CreateObject("Word.Application")
  App.Visible = True
  Set wd = App.Documents.Add(temppath)
  Set CreateNewWordDocument = wd

End Function
Sub CreateDocument()
 Dim temppath As String
MsgBox ("Приветствую смотрящих")
'Создание объекта – документа
 Set doc = CreateNewWordDocument(temppath)
' Установка отступов
With doc
.PageSetup.LeftMargin = CentimetersToPoints(2)
.PageSetup.RightMargin = CentimetersToPoints(1.5)
End With
doc.Styles("Обычный").Font.Size = "12"
doc.Styles("Без интервала").Font.Size = "12"
doc.Styles("Без интервала").Font.Color = Black
doc.Styles("Без интервала").Font.Italic = True
doc.Styles("Без интервала").Font.Bold = True
doc.Styles("Без интервала").ParagraphFormat.Alignment = wdAlignParagraphCenter
'Активация документа
doc.Activate
'Функция CreateNewWordDocument (TempPath):
End Sub

'Пример задания диапазонов Range.Фрагменты программного кода.
'Функция для создания параграфов в документе Word
Public Function AddNewParagraphRange(aRange)
Dim NewParagraph
Dim NewRange
Dim I As Integer
I = aRange.Paragraphs.Count
aRange.InsertParagraphAfter
Set NewRange = aRange.Paragraphs(I).Range
NewRange.StartOf wdWord, wdMove
Set AddNewParagraphRange = NewRange
End Function





Public Function WriteParagraphLn(aRange, text, StyleName) As Range
   Dim stpos As Long 'объявление переменной
   stpos = aRange.End 'запоминаем ссылку на конец диапазона
If Len(aRange) <= 2 Then
   aRange.InsertAfter text
Else
  aRange.InsertParagraphAfter 'вводим пустой абзац после текста
  stpos = aRange.End
  aRange.InsertAfter text  'вводим текст
End If
'присваиваем диапазону нужный шрифт
If StyleName <> "" Then _
aRange.Document.Range(stpos, aRange.End).Style = StyleName


'присваиваем функции изменённый диапазон с текстом нужного шрифта
Set WriteParagraphLn = aRange.Document.Range(stpos, aRange.End)

End Function


Public Function AddTableIntoRange(IntoRange, NumCols, NumRows, Autofit)
   Dim rngRange As Range
   Dim RR As Range
If Len(IntoRange) > 2 Then
   IntoRange.InsertAfter " "
   Set rngRange = _
   IntoRange.Document.Range(IntoRange.End - 1, _
   IntoRange.End - 1)
Else
Set rngRange = _
IntoRange.Document.Range(IntoRange.Start, _
IntoRange.Start)
End If
Dim t
Set t = rngRange.Tables.Add(rngRange, NumRows, NumCols)
If Autofit Then t.AutoFitBehavior wdAutoFitContent
t.Range.Style = "Обычный"
IntoRange.Paragraphs.Last.Style = "Обычный"

Set AddTableIntoRange = t
End Function

'процедуру сбора данных из полей ввода напишите сами
Public Sub InsertTableConstructor(rng, ColNum, StrNum, TitleList, FieldsList)
Dim t As Table
Dim I, J As Integer
Set t = AddTableIntoRange(rng, ColNum, 1, False)
'вставляем заголовок
For I = 1 To ColNum
WriteParagraphLn t.Cell(1, I).Range, TitleList(I), "Обычный"
Next I
J = 1 'начнём с первой строки
Do
  t.Rows.Add 'новая строка
  For I = 1 To ColNum
'заполнение данными строки
   WriteParagraphLn t.Cell(J + 1, I).Range, FieldsList(J, I), "Обычный"
 Next I
J = J + 1
Loop Until J = StrNum
'при вызове процедуры надо учесть сдвиг на 1 на заголовок таблицы
' выравнивание
With t
    .Borders.InsideLineStyle = wdLineStyleSingle
    .Borders.OutsideLineStyle = wdLineStyleSingle
    .Borders.OutsideLineWidth = wdLineWidth225pt
    .Borders.InsideLineWidth = wdLineWidth225pt
    .Rows(1).Range.Bold = True
    .Borders.InsideColor = 3
    .Rows(1).Shading.BackgroundPatternColor = wdColorGreen
    .Rows(1).Range.Font.Color = wdColorRed
End With


t.AutoFitBehavior wdAutoFitWindow
End Sub
Public Sub Rose()
Call LoadTableFromTB
Call LoadTextPart3
End Sub
'Процедура для создания диапазонов в документе Word
Public Sub InitializeDoc()
Call CreateDocument
 
'Установка объекта типа Range в рамках объекта Document
 Set R = doc.Range

 'Установка
 Set aPart(1) = AddNewParagraphRange(R)
 Set aPart(2) = AddNewParagraphRange(R)
 Set aPart(3) = AddNewParagraphRange(R)
 Set aPart(1) = WriteParagraphLn(aPart(1), "Таблица ввода данных", "Без интервала")
 Set aPart(2) = WriteParagraphLn(aPart(2), "В форме была добавлена кнопка выход , для удобства при проверке", "Без интервала")
 
 Dim ThisDay As Integer
 This_hour = Hour(Time)
 This_minutes = Minute(Time)
 hour_and_minutes = CStr(This_hour) + ":" + CStr(This_minutes)
 Data = Weekday(Date)
 If Data = 1 Then Den_nedeli = "Воскресенье"
 If Data = 2 Then Den_nedeli = "Понедельник"
 If Data = 3 Then Den_nedeli = "Вторник"
 If Data = 4 Then Den_nedeli = "Среда"
 If Data = 5 Then Den_nedeli = "Четверг"
 If Data = 6 Then Den_nedeli = "Пятница"
 If Data = 7 Then Den_nedeli = "Суббота"
 
 
End Sub
Public Sub LoadTableFromTB()
  aTitleList(1) = MyArr(1)
  aTitleList(2) = MyArr(2)
  aTitleList(3) = MyArr(3)
  aTitleList(4) = MyArr(4)
  aTitleList(5) = MyArr(5)
  aTitleList(6) = MyArr(6)
  For I = 1 To 5
    aFieldsList(I, 1) = MyArr(6 * I + 1)
    aFieldsList(I, 2) = MyArr(6 * I + 2)
    aFieldsList(I, 3) = MyArr(6 * I + 3)
    aFieldsList(I, 4) = MyArr(6 * I + 4)
    aFieldsList(I, 5) = MyArr(6 * I + 5)
    aFieldsList(I, 6) = MyArr(6 * I + 6)
    Next I
    Call InsertTableConstructor(aPart(1), 6, 5, aTitleList, aFieldsList)
End Sub
Public Sub LoadTextPart3()

Set aPart(3) = WriteParagraphLn(aPart(3), "                                           ", "Обычный")
Set aPart(3) = WriteParagraphLn(aPart(3), UserForm1.TextBox37.text + " " + UserForm1.TextBox38.text, "Обычный")


End Sub


Public Sub LoadTextPart2()
Set aPart(2) = WriteParagraphLn(aPart(2), "               ", "Без интервала")
Set aPart(2) = WriteParagraphLn(aPart(2), "------------------------Строка разделитель-------------------", "Без интервала")

End Sub
Public Sub ReplaceTextPart2()

aPart(2).Delete


MyDate = Format(Now, "d")
  If (MyDate Mod 2) = 0 Then
      Set aPart(2) = WriteParagraphLn(aPart(2), "Раздел на реконструкции", "Без интервала")
  Else
   Set aPart(2) = WriteParagraphLn(aPart(2), "Не обслуживается", "Без интервала")
  End If

End Sub





Ответы (0 шт):