Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Причина разрушительного сбоя (Automation error)
 
Здравствуйте.
Ранее в одной из тем обсуждал причину появления ложных книг в объектной структуре файла.
Выяснилось, что это должно быть связано с ошибкой "Automation error.Разрушительноый сбой" возникающей при его запуске.
Но причину возникновения самой этой ошибки рекомендовали рассмотреть в отдельной теме.
Поэтому прошу помощи в разборе данной проблемы. В чем её причина?
Суть проблемы такова: книга (см. вложенный файл) была создана в Excel 2016, но пару раз запускалась через Excel 2010 (не лиц.).
При запуске возникало сообщение "Automation error. Разрушительный сбой", открывался файл и редактор VBA.
Если ни чего не сохранять и не менять то и пользоваться файлом было нельзя.
Чтобы можно было пользоваться, выделял весь код в том модуле, который открылся автоматически при запуске, комментировал его и сохранял.
После этого сохранял сам файл. При этом команда СОХРАНИТЬ работала, как СОХРАНИТЬ КАК. Файл соответственно сохранял с заменой существующего.
После этого можно было снова пользоваться полученным файлом на Excel 2010 (не лиц.)
После использования этого файла на Excel 2016 история повторялась.
В редакторе vba файл excel содержит несуществующие листы (или книги)
 
Приветствую.
Есть некоторая неясность со структурой файла рабочей книги excel.
В редакторе vba файл содержит несуществующие листы (или книги, если я вообще правильно это называю).
Так, например, в структуре проекта (см. картинку во вложенном файле) есть Лист1, но по свойству это не лист, а книга.
Кроме того "ЭтаКнига" представлена в трех экземплярах.
Как это объяснить и можно ли избавиться? В других файлах такого не встречал...
Необходимо ли объявлять переменную счетчика для цикла For
 
Приветствую.
Вопрос, кажется, простой, но ответа на него не нашел.
Циклы типа For содержат переменную-счетчик. Очень часто в кодах её обозначают просто i.
Но при этом её не объявляют через процедуру Dim. Возникает несколько близких вопросов:
Нужно ли вообще её объявлять (или почему не нужно)?
Какого она должна быть типа (если должна)?
Если в коде используется несколько циклов не возникает ли ошибок связанных с возвратом не правильных данных?
Нет ли необходимости очищать (обнулять) значения счётчиков используемых в коде?
Разъясните, пожалуйста.
Создание нескольких книг по списку заданных адресов шаблонов
 
Доброго времени.
Вот этот код, по идее, должен создавать набор книг по списку соответствующих шаблонов:
Код
Public Sub test()
Dim usRow1, usRow2 As Long
Dim usTemplatePath As String
usRow1 = Worksheets("ЛИСТ1").Cells(Rows.Count, 1).End(xlUp).Row
For usRow2 = 2 To usRow1
    If Not IsEmpty(Worksheets("ЛИСТ1").Cells(usRow2, 1)) Then
        usTemplatePath = Worksheets("ЛИСТ1").Range("A" & usRow2)
        If (usTemplatePath) <> "" Then
            Workbooks.Add Template:=usTemplatePath
        End If        
'        Application.WindowState = xlMinimized
    End If
Next
End Sub
Но вместо этого он создает только одну, первую книгу из списка, а дальше ругается subscribe out of range
Подскажите, пожалуйста, как исправить.
Аналогичная структура для создания набора папок при этом работает, как надо...
Копирование данных из одной книги в другую макросом
 
Доброго дня...
Подскажите, пожалуйста, что не так в коде, а точнее в процедуре переноса данных?
Вот фрагмент, который, по идее, должен копировать значения из заданных в нем самом столбцов выбранного ряда и вставлять их в заданные ячейки другой книги.
Во-первых, он то работает, то нет - не знаю от чего это зависит, а, во-вторых, он слишком громоздкий получился. Можно ли упростить, как-то всю эту зелень?
Код
        Workbooks("ВсеПроекты.xlsm").Activate
        Workbooks("ВсеПроекты.xlsm").Worksheets("СписокПроектов").Range("B" & i).Copy
        Workbooks(usProjectFileName).Activate
        ActiveWorkbook.Worksheets("ЗаданиеНаПроект").Range("B1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=Fals
'        Workbooks("ВсеПроекты.xlsm").Activate
'        Workbooks("ВсеПроекты.xlsm").Worksheets("СписокПроектов").Range("C" & i).Copy
'        Workbooks(usProjectFileName).Activate
'        ActiveWorkbook.Worksheets("ЗаданиеНаПроект").Range("B2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=Fals
'        Workbooks("ВсеПроекты.xlsm").Activate
'        Workbooks("ВсеПроекты.xlsm").Worksheets("СписокПроектов").Range("E" & i).Copy
'        Workbooks(usProjectFileName).Activate
'        ActiveWorkbook.Worksheets("ЗаданиеНаПроект").Range("B3").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=Fals
'        Workbooks("ВсеПроекты.xlsm").Activate
'        Workbooks("ВсеПроекты.xlsm").Worksheets("СписокПроектов").Range("F" & i).Copy
'        Workbooks(usProjectFileName).Activate
'        ActiveWorkbook.Worksheets("ЗаданиеНаПроект").Range("B4").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=Fals
'        Workbooks("ВсеПроекты.xlsm").Activate
'        Workbooks("ВсеПроекты.xlsm").Worksheets("СписокПроектов").Range("H" & i).Copy
'        Workbooks(usProjectFileName).Activate
'        ActiveWorkbook.Worksheets("ЗаданиеНаПроект").Range("B5").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=Fals
'        Workbooks("ВсеПроекты.xlsm").Activate
'        Workbooks("ВсеПроекты.xlsm").Worksheets("СписокПроектов").Range("J" & i).Copy
'        Workbooks(usProjectFileName).Activate
'        ActiveWorkbook.Worksheets("ЗаданиеНаПроект").Range("B6").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        ActiveWorkbook.Save
Создание книги (xlsm) по шаблону (xltm) с помощью VBA
 
Доброго времени...
Просматривал материал в сети, но не нашел, на мой взгляд, самого простого варианта действий.
Требуется при работе в файле, например, "Книга1.xlsm" создать файл "Книга2.xlsm" по шаблону "Шаблон.xltm" с помощью VBA и скопировать из "Книга1.xlsm" в "Книга2.xlsm", какие-либо данные. Для примера - значение какой-нибудь одной ячейки. Подскажите, пожалуйста, какой должна быть самая простая, базовая процедура на VBA.
Рабочая область заданного размера в файле exel
 
Приветствие!
Во вложенном файле лист exel, в котором для редактирования доступна определенная область.
Все что находится за пределами данной области не просто не редактируется, а даже не отображается на экране.
Подскажите, кто знает, как это сделано.
Не пересчитывается пользовательская функция
 
Приветствие!
Вот ЗДЕСЬ эта тему уже обсуждалась, но не вполне понятны причины данного явления.
Имеется следующая пользовательская функция:
Код
Public Function ПАПКАСУЩ(ПУТЬ As String) As Boolean
If Dir(ПУТЬ, vbDirectory) = "" Then
ПАПКАСУЩ = False
Else
ПАПКАСУЩ = (GetAttr(ПУТЬ) And vbDirectory) = vbDirectory
End If
End Function
Она проверяет наличие папки по указанному пути.
В одних файлах она автоматически пересчитывается при любых изменениях, а в других нет.
Подскажите, пожалуйста, в чем причина.
Функция для вывода пути к папке заданного уровня вложенности
 
Приветствие!
Написал функцию, которая должна возвращать путь к папке в которой находится рабочая книга.
В качестве аргумента можно указать уровень вложенности, чтобы путь возвращался не полностью, а только до того уровня, который необходим.
Логика вроде верная, но в таком виде код работает только с аргументом "1". А "2", "3" и "" не работают. Подскажите, что не так? Вот код:
Код
Public Function РАСПОЛОЖПАПКА(usLevel As Integer)
Dim usThisFileDir As String
usThisFileDir = ThisWorkbook.Path
Dim usLevelDir As String
Dim usLevelDir1 As String
Dim usLevelDir2 As String
Dim usLevelDir3 As String
    If usLevel = "1" Then
    usLevelDir1 = usThisFileDir
    usLevelDir = usLevelDir1
    Else
        If usLevel = "2" Then
        usLevelDir2 = Left(usLevelDir1, ((InStrRev(usLevelDir1, "\")) - 1))
        usLevelDir = usLevelDir2
        Else
            If usLevel = "3" Then
            usLevelDir3 = Left(usLevelDir2, ((InStrRev(usLevelDir2, "\")) - 1))
            usLevelDir = usLevelDir3
            Else
            usLevelDir = "ошибка"
            End If
        End If
    End If
РАСПОЛОЖПАПКА = usLevelDir
End Function
Создание папок по списку заданных адресов
 
Добрый день.
Подобная тема поднималась, видимо, уже не однократно. Но в каждом случае есть какие-то свои особенности.
Необходимо создать набор папок. Список адресов прописан в столбце. Корневая папка, в которой но все должны появиться существует. Таким образом MkDir для каждого отдельного пути выполняется корректно. Попробовал написать код, чтобы работал со списком, но он выдает ошибку 76.
Вот код:
Код
Public Sub TTT()
Dim rw As Long
Dim i As Long
Dim usDocumentPath As String
    With Worksheets("Лист1")
        rw = Cells(Rows.Count, 116).End(xlUp).Row
        For i = 2 To rw
        usDocumentPath = .Range("DL" & i)
        MkDir usDocumentPath
        Next
    End With
End Sub
Нужно, что бы пустые и повторяющиеся ячейки в столбце с адресами игнорировались.
Помогите, пожалуйста, довести код до рабочего состояния.
Спасибо.
Выполнение макроса для заданного листа книги
 
Добрый день.
Подскажите, пожалуйста, как сделать, так что бы этот или иной простой макрос:
Код
Public Sub MAC1()
Range("E13") = "=" & Range("E4")
End Sub
...выполнялась только на заданном в коде листе? То есть, как правильно применить Sheets("Имя листа") или иную конструкцию?
Страницы: 1
Наверх