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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2009, 07:21   #1
komar73
Пользователь
 
Регистрация: 24.01.2009
Сообщений: 66
По умолчанию Испарвление Записаного макроса импорта с DBF

Помогите пожалуйста. Я записал макрос который создает таблицу в excel из файла dbf. Что здесь нужно поменять чтобы при выполнении этого макроса запрашивало выбор файла с этой дериктории

With ActiveSheet.ListObjects.Add(SourceT ype:=0, Source:=Array( _
"OLEDB;Provider=Microsoft.ACE.OLEDB .12.0;Password="""";User ID=Admin;Data Source=D:\Abonent\сберкасса\;Mode=S hare 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("PL_1803")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.SourceDataFile = "D:\Abonent\сберкасса\PL_1803.D BF"
.ListObject.DisplayName = "Таблица_PL_1803"
.Refresh BackgroundQuery:=False
End With
Columns("D:U").Select
Selection.Delete Shift:=xlToLeft
Range("Таблица_PL_1803[[#All],[NOM]]").Select
ActiveSheet.ListObjects("Таблица_PL _1803").TableStyle = ""
komar73 вне форума Ответить с цитированием
Старый 24.03.2009, 09:02   #2
Юнлинг
Форумчанин
 
Регистрация: 17.10.2008
Сообщений: 239
По умолчанию

Данный макрос ты записал с помощью макрорекодера. Видимо по этой причине ты не знаешь что делать дальше. Я бы поступил иначе.
Для решения в первую очередь необходимо создать Userform, поместить туда кнопку и ComboBox/
После чего проинициализировать Userform и набрать масив для комбобокса
Код:
dim i as integer
Private Sub UserForm_Initialize()
dim s as string
Set fs = Application.FileSearch
With fs
    .LookIn = "D:\Abonent\сберкасса"
    .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
Изменяем одну строку написанного макрорекодером макроса, а именно
Цитата:
Сообщение от komar73 Посмотреть сообщение
;
.SourceDataFile = ...
на
Код:
      .SourceDataFile = "D:\Abonent\сберкасса\"+Combobox.List(Combobox.ListIndex)

Последний раз редактировалось Юнлинг; 24.03.2009 в 09:05.
Юнлинг вне форума Ответить с цитированием
Старый 24.03.2009, 09:18   #3
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Во избежании возможных проблем, я бы не стал использовать метод Application.FileSearch (на сколько мне известно, в Excel 2007 он отключен).
Лучше Do...Loop.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 24.03.2009, 09:46   #4
komar73
Пользователь
 
Регистрация: 24.01.2009
Сообщений: 66
По умолчанию

Cоздал Userform, поместил туда кнопку и ComboBox. Как проинициализировать Userform и где набирать масив для комбобокса?
komar73 вне форума Ответить с цитированием
Старый 24.03.2009, 09:48   #5
Юнлинг
Форумчанин
 
Регистрация: 17.10.2008
Сообщений: 239
По умолчанию

Цитата:
Сообщение от komar73 Посмотреть сообщение
Cоздал Userform, поместил туда кнопку и ComboBox. Как проинициализировать Userform и где набирать масив для комбобокса?
Если работешь в 2007 OFFICE обратись к SAS888. Он скажет как.
Если Office 2003 или XP, я тебе привел макрос инициализации и заполнения комбобокса.
Юнлинг вне форума Ответить с цитированием
Старый 24.03.2009, 10:09   #6
komar73
Пользователь
 
Регистрация: 24.01.2009
Сообщений: 66
По умолчанию

Я наверное чтото не правильно сделал. Вот образец
Вложения
Тип файла: rar 3333.rar (13.9 Кб, 13 просмотров)
komar73 вне форума Ответить с цитированием
Старый 24.03.2009, 10:20   #7
Юнлинг
Форумчанин
 
Регистрация: 17.10.2008
Сообщений: 239
По умолчанию

Цитата:
Сообщение от komar73 Посмотреть сообщение
Я наверное чтото не правильно сделал. Вот образец
Исправлять твою прогу у меня просто нет времени, но ошибки я тебе укажу.
Первая. В инициализации у тебя лишний
Код:
END SUB
удали его.
Второе нет реакции на нажатую клавишу. Необходимо макрос из модуля ISEL перенести в процедуру
Код:
Private Sub CommandButton1_Click()
СЮДА
end sub
модуль можно удалить или сделать автозапуск
Юнлинг вне форума Ответить с цитированием
Старый 24.03.2009, 12:15   #8
komar73
Пользователь
 
Регистрация: 24.01.2009
Сообщений: 66
По умолчанию

Ничего не получилось
komar73 вне форума Ответить с цитированием
Старый 24.03.2009, 14:06   #9
Юнлинг
Форумчанин
 
Регистрация: 17.10.2008
Сообщений: 239
По умолчанию

Цитата:
Сообщение от komar73 Посмотреть сообщение
Ничего не получилось
Выпала минутка я подправил твой макрос.
Необходимо попробывать в пошаговом режиме, на ошибки.
Кстати у тебя была еще одна ошибка, а именно ты внутри процедуры change_combobox бездумно вставил процедуру из второго поста. Этого делать нельзя.
Вложения
Тип файла: rar 3333.rar (11.0 Кб, 29 просмотров)
Юнлинг вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание билетов путем импорта из таблицы mistx Microsoft Office Excel 2 25.02.2009 09:02
Запуск макроса с параметрами из другого макроса Saladin Microsoft Office Excel 2 19.01.2009 09:43
Автоматизация импорта процедур nerh Общие вопросы Delphi 1 13.10.2008 22:56
Запись макроса valerij Microsoft Office Excel 5 01.12.2007 00:49
сохранение результата выборки из DBF файла в DBF файл с такой же структурой таблицы GazimagomedovM БД в Delphi 5 06.11.2007 17:58