Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2010, 23:57   #1
Demonmov
Пользователь
 
Регистрация: 20.01.2009
Сообщений: 43
По умолчанию Ошибка

Программа импортирует дбф в эксель. В фрагменте кода поиска дбф (инициализация userform)выдает ошибку run time error 424 object required. Не пойму в чем ошибка, выкладываю фрагмент кода, при погшаговом выполнении ошибка выскакивает на строке ComboBox.AddItem (s)

Private Sub UserForm_Initialize()
Dim s As String
Set fs = Application.FileSearch
With fs
.LookIn = "D:\test\"
.Filename = "*.dbf"
If .Execute > 0 Then
For i = 1 To .FoundFiles.Count
s = .FoundFiles(i)
ComboBox.AddItem (s)
Next i
Else
MsgBox "There were no files found."
Unload UserForm
End If
End With
End Sub
Demonmov вне форума Ответить с цитированием
Старый 28.04.2010, 06:17   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Ошибка возникает из-за того, что на форме отсутствует элемент управления с именем ComboBox

Попробуйте заменить ComboBox на ComboBox1
EducatedFool вне форума Ответить с цитированием
Старый 28.04.2010, 06:24   #3
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Добавлю, что во-первых, правильная запись
Код:
ComboBox1.AddItem s
т.е. без скобок. Во-вторых, я бы не стал применять метод FileSearch, ибо он отключен разработчиками Microsoft в версиях Office, старше 2003. Для надежности, лучше сделать, например, так:
Код:
Private Sub UserForm_Initialize()
    Dim myPath As String, myName As String
    myPath = "D:\test\": myName = Dir(myPath & "*.dbf")
    Do While myName <> ""
        ComboBox1.AddItem myName: myName = Dir
    Loop
    If ComboBox1.ListCount = 0 Then MsgBox "There were no files found."
End Sub
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 28.04.2010 в 06:30.
SAS888 вне форума Ответить с цитированием
Старый 28.04.2010, 09:37   #4
Demonmov
Пользователь
 
Регистрация: 20.01.2009
Сообщений: 43
По умолчанию

Сделал все как посоветовали, получилось, теперь возникает другая ошибка когда я выбираю файл, и нажимаю на кнопку. Ошибка "run time error 5 Invalid procedure call or argument" в строке

With ActiveSheet.ListObjects.Add(SourceT ype:=0, Source:=Array( _


Вот весь код программы:

Dim i As Integer

Private Sub CommandButton1_Click()
With ActiveSheet.ListObjects.Add(SourceT ype:=0, Source:=Array( _
"OLEDB;Provider=Microsoft.ACE.OLEDB .12.0;Password="""";User ID=Admin;Data Source=D:\test\;Mode=Share Deny Write;Extended Pro" _
, _
"perties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine Type=18;Jet O" _
, _
"LEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Pas" _
, _
"sword="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Je" _
, _
"t OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False" _
), Destination:=Range("$A$2")).QueryTa ble
.CommandType = xlCmdTable
.CommandText = Array("X")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.SourceDataFile = "D:\test\" + ComboBox1.List(ComboBox1.ListIndex)
.ListObject.DisplayName = ComboBox1.List(ComboBox1.ListIndex)
.Refresh BackgroundQuery:=False
End With
End Sub

Private Sub UserForm_Initialize()
Dim s As String
Set fs = Application.FileSearch
With fs
.LookIn = "D:\test"
.Filename = "*.dbf"
If .Execute > 0 Then
For i = 1 To .FoundFiles.Count
s = .FoundFiles(i)
ComboBox1.AddItem s
Next i
Else
MsgBox "There were no files found."
Unload UserForm
End If
End With
End Sub
Demonmov вне форума Ответить с цитированием
Старый 28.04.2010, 10:01   #5
Demonmov
Пользователь
 
Регистрация: 20.01.2009
Сообщений: 43
По умолчанию

Именил код, как советовали в другом посте, при нажимании на кнопку ошибка не выскакивает, но и дбф не импортируется



Dim i As Integer

Sub Main()
Dim fName As String, fso
With Application.FileDialog(msoFileDialo gOpen)
.Title = "Óêàæèòå ôàéë": .Show
If .SelectedItems.Count = 0 Then Exit Sub Else fName = .SelectedItems(1)
End With
Set fso = CreateObject("Scripting.FileSystemO bject")
With ActiveSheet.QueryTables.Add(Connect ion:=Array( _
"OLEDB;Provider=Microsoft.Jet.OLEDB .4.0;Password="""";User ID=Admin;Data Source=" & fso.GetParentFolderName(fName) & _
";Mode=Share Deny Write;Extended Properties="""";Jet", _
" OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine Type=18;Jet OLEDB:Database ", _
"Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="""";Jet O", _
"LEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compac", _
"t Without Replica Repair=False;Jet OLEDB:SFP=False"), Destination:=Range("A1"))
.CommandType = xlCmdTable
.CommandText = Array(fso.GetBaseName(fName))
.Refresh BackgroundQuery:=False
End With
End Sub

Private Sub UserForm_Initialize()
Dim myPath As String, myName As String
myPath = "D:\test\": myName = Dir(myPath & "*.dbf")
Do While myName <> ""
ComboBox1.AddItem myName: myName = Dir
Loop
If ComboBox1.ListCount = 0 Then MsgBox "There were no files found."
End Sub
Demonmov вне форума Ответить с цитированием
Старый 28.04.2010, 10:17   #6
Demonmov
Пользователь
 
Регистрация: 20.01.2009
Сообщений: 43
По умолчанию

Ой, извините, натупил, не подвязал к кнопке процедуру, уже все работает
Demonmov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Nero - ошибка драйвера DMA. ошибка CRC NecRoMat Софт 5 09.05.2012 01:29
Это ошибка Delphi или моя ошибка??? bloodeagle Общие вопросы Delphi 3 12.11.2009 15:26
Ошибка в статье = ошибка в рограмме. Alex Cones Общие вопросы Delphi 14 29.07.2009 18:17
Ошибка в Аfor i:=1 to SI do. Пишит что ошибка в SI Алексей_xXx Помощь студентам 2 29.05.2009 00:09
...Ошибка 101 (net::ERR_CONNECTION_RESET): Неизвестная ошибка... infrared Помощь студентам 0 16.04.2009 17:44