Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Объявление переменной типа File, FileSystemObject - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Объявление переменной типа File, FileSystemObject (Макросы/Sub)
Объявление переменной типа File, FileSystemObject
Литраж Дата: Вторник, 20.01.2015, 11:35 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

MS Office 2007
При запуске нижеследующего макроса возникает ошибка "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
 
Ответить
СообщениеПри запуске нижеследующего макроса возникает ошибка "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 в 11:35
nilem Дата: Вторник, 20.01.2015, 11:59 | Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
посмотрите в ссылках (Tools -> References), подключена ли библ. Windows Script Host Object Model


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениепосмотрите в ссылках (Tools -> References), подключена ли библ. Windows Script Host Object Model

Автор - nilem
Дата добавления - 20.01.2015 в 11:59
Литраж Дата: Вторник, 20.01.2015, 12:07 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 15
Репутация: 0 ±
Замечаний: 0% ±

MS Office 2007
nilem, Спасибо, сейчас и ее подключу:)
 
Ответить
Сообщениеnilem, Спасибо, сейчас и ее подключу:)

Автор - Литраж
Дата добавления - 20.01.2015 в 12:07
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Объявление переменной типа File, FileSystemObject (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!