При запуске нижеследующего макроса возникает ошибка "User-defined type not defined" Этот макрос открывает файлы из определенной папки, выбранной папки и вставляет значения, удаляет ненужные значения с правых столбцов. Ранее все работало. Ругается на Dim aFile As File, fso As New FileSystemObject, wkb As Workbook
[vba]
Код
Sub ActPremiyFinal(ByVal Control As IRibbonControl) ' ' Application.ScreenUpdating = False Application.ActiveWorkbook.UpdateLinks = xlUpdateLinksNever Application.DisplayAlerts = False Dim aFile As File, fso As New FileSystemObject, wkb As Workbook ПутьКПапке = GetFolderPath("Заголовок окна", ThisWorkbook.Path) ' запрашиваем имя папки If ПутьКПапке = "" Then Exit Sub ' выход, если пользователь отказался от выбора папки For Each aFile In fso.getfolder(ПутьКПапке).Files DisplayAlerts = False If fso.GetExtensionName(aFile.Name) Like "xls*" Then Set wkb = Workbooks.Open(aFile.Path) UpdateLinks = 0 '**************************************************************************************** Application.ScreenUpdating = False Application.ActiveWorkbook.UpdateLinks = xlUpdateLinksNever Application.DisplayAlerts = False Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Columns("F:O").Select Selection.Delete Shift:=xlToLeft '***************************************************************************************** wkb.Close SaveChanges:=True Set wkb = Nothing End If Next Application.DisplayAlerts = True Application.ScreenUpdating = True Application.ActiveWorkbook.UpdateLinks = xlUpdateLinksAlways 'заканчиваем End Sub
[/vba]
Путь к папке берется из функции:
[vba]
Код
Function GetFolderPath(Optional ByVal Title As String = "Выберите папку", _ Optional ByVal InitialPath As String = "W:\Журавлёва\") As String ' функция выводит диалоговое окно выбора папки с заголовком Title, ' начиная обзор диска с папки InitialPath ' возвращает полный путь к выбранной папке, или пустую строку в случае отказа от выбора Dim PS As String: PS = Application.PathSeparator With Application.FileDialog(msoFileDialogFolderPicker) If Not Right$(InitialPath, 1) = PS Then InitialPath = InitialPath & PS .ButtonName = "Выбрать": .Title = Title: .InitialFileName = InitialPath If .Show <> -1 Then Exit Function GetFolderPath = .SelectedItems(1) If Not Right$(GetFolderPath, 1) = PS Then GetFolderPath = GetFolderPath & PS End With End Function
[/vba]
Господа, помогите, пожалуйста! Понять не могу в чем проблема? Уже 3 день бьюсь Проблема решена: Оказывается, что каким-то мистическим способом отключилась в references Microsoft Scripting Runtime (SCRUN.DLL). Так и думала, что проблема где-то там, но не знала как называется эта библиотека. Всем спасибо. Тему можно закрыть. Извините.
При запуске нижеследующего макроса возникает ошибка "User-defined type not defined" Этот макрос открывает файлы из определенной папки, выбранной папки и вставляет значения, удаляет ненужные значения с правых столбцов. Ранее все работало. Ругается на Dim aFile As File, fso As New FileSystemObject, wkb As Workbook
[vba]
Код
Sub ActPremiyFinal(ByVal Control As IRibbonControl) ' ' Application.ScreenUpdating = False Application.ActiveWorkbook.UpdateLinks = xlUpdateLinksNever Application.DisplayAlerts = False Dim aFile As File, fso As New FileSystemObject, wkb As Workbook ПутьКПапке = GetFolderPath("Заголовок окна", ThisWorkbook.Path) ' запрашиваем имя папки If ПутьКПапке = "" Then Exit Sub ' выход, если пользователь отказался от выбора папки For Each aFile In fso.getfolder(ПутьКПапке).Files DisplayAlerts = False If fso.GetExtensionName(aFile.Name) Like "xls*" Then Set wkb = Workbooks.Open(aFile.Path) UpdateLinks = 0 '**************************************************************************************** Application.ScreenUpdating = False Application.ActiveWorkbook.UpdateLinks = xlUpdateLinksNever Application.DisplayAlerts = False Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Columns("F:O").Select Selection.Delete Shift:=xlToLeft '***************************************************************************************** wkb.Close SaveChanges:=True Set wkb = Nothing End If Next Application.DisplayAlerts = True Application.ScreenUpdating = True Application.ActiveWorkbook.UpdateLinks = xlUpdateLinksAlways 'заканчиваем End Sub
[/vba]
Путь к папке берется из функции:
[vba]
Код
Function GetFolderPath(Optional ByVal Title As String = "Выберите папку", _ Optional ByVal InitialPath As String = "W:\Журавлёва\") As String ' функция выводит диалоговое окно выбора папки с заголовком Title, ' начиная обзор диска с папки InitialPath ' возвращает полный путь к выбранной папке, или пустую строку в случае отказа от выбора Dim PS As String: PS = Application.PathSeparator With Application.FileDialog(msoFileDialogFolderPicker) If Not Right$(InitialPath, 1) = PS Then InitialPath = InitialPath & PS .ButtonName = "Выбрать": .Title = Title: .InitialFileName = InitialPath If .Show <> -1 Then Exit Function GetFolderPath = .SelectedItems(1) If Not Right$(GetFolderPath, 1) = PS Then GetFolderPath = GetFolderPath & PS End With End Function
[/vba]
Господа, помогите, пожалуйста! Понять не могу в чем проблема? Уже 3 день бьюсь Проблема решена: Оказывается, что каким-то мистическим способом отключилась в references Microsoft Scripting Runtime (SCRUN.DLL). Так и думала, что проблема где-то там, но не знала как называется эта библиотека. Всем спасибо. Тему можно закрыть. Извините.Литраж
Сообщение отредактировал Литраж - Вторник, 20.01.2015, 12:05