Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Excel -> DBF, Данные из Excel в DBF 
:(
    Опции темы
AndrSB
Дата 2.3.2008, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 2.3.2008

Репутация: нет
Всего: нет



Добрый день, господа. Извините, если не туда постучался (1-й раз)

Если не затруднит, подскажите пожалуйста, каким скриптом c листа Excel с данными (Off 2003)
сотворить DBF-файл (Save as... не подходит). Или закачать данные в готовый DBF, т.к. пустышка DBF
с нужной структурой уже есть. Обязательно ли в 1-ой строке листа должны быть имена полей? 

Заранее спасибо.
PM MAIL   Вверх
Naghual
Дата 2.3.2008, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 7
Всего: 49



Чем вас не устраивает SaveAs ?
Это самый простой способ.

Наличие колонок обязательно для SaveAs


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
mihanik
Дата 2.3.2008, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 9
Всего: 109



Цитата(AndrSB @  2.3.2008,  17:50 Найти цитируемый пост)
Обязательно ли в 1-ой строке листа должны быть имена полей? 


По-моему, "да".


Цитата(AndrSB @  2.3.2008,  17:50 Найти цитируемый пост)
Save as... не подходит

Почему?
Возьмите включите макрорекордер, запишите всё в DBF-файл, потом посмотрите что получилось в коде...



--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
AndrSB
Дата 3.3.2008, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 2.3.2008

Репутация: нет
Всего: нет



Цитата(mihanik @  2.3.2008,  21:22 Найти цитируемый пост)
Возьмите включите макрорекордер, запишите всё в DBF-файл, потом посмотрите что получилось в коде...

Спасибо, но пошел несколько другим путем. И уперся в проблему:
Данные вставляются на лист, и DBF-файл сохраняется нормально, но пустой или с таким количеством
строк, которое изначально было в нем, а не с таким, которое копируем (в данном примере 9).
Подскажите, где просчитался?
Private Sub Export_Xbank_Click()
'Выгрузка данных с листа "zach" в DBF-файл
Dim e_x_patch As String
swn = ThisWorkbook.Name
e_x_patch = Worksheets("Банк").Range("C64") '(c:\visa_auto\templates\templ_xb.dbf)
Workbooks(swn).Activate
Worksheets("zach").Range("a2:br10").Copy
'Открываем DBF-пустышку
   Workbooks.Open Filename:=e_x_patch, ReadOnly:=False
   Application.ScreenUpdating = False
   Workbooks("templ_xb.dbf").Worksheets("templ_xb").Activate
   Worksheets("templ_xb").Range("a2").Select
ActiveSheet.Paste
Workbooks("templ_xb.dbf").Close
End Sub

PM MAIL   Вверх
Данкинг
Дата 3.3.2008, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 1
Всего: 130



Цитата(AndrSB @ 2.3.2008,  17:50)
Обязательно ли в 1-ой строке листа должны быть имена полей? 


Конечно, иначе откуда в DBF названия полей возьмутся.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
E_v_g
Дата 4.3.2008, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 15.11.2006

Репутация: нет
Всего: нет



Цитата(AndrSB @  3.3.2008,  19:38 Найти цитируемый пост)
Данные вставляются на лист, и DBF-файл сохраняется нормально, но пустой или с таким количествомстрок, которое изначально было в нем, а не с таким, которое копируем (в данном примере 9).


Перед копированием строк в DBF надо в нем сначала добавить нужное кол-во строк:

Код

Sub преобразовать_в_BANK_DBF()
  Dim wb_b As Object
  Dim ws_b As Object
  Dim wb_k As Object
............................
  Set wb_k = ActiveWorkbook.Worksheets(1) ' или ту страницу, откуда брать данные
  Set wb_b = Workbooks.Open(Filename:=MyDir + "\shablon.DBF")
  Set ws_b = wb_b.Worksheets(1)
  'посчитать число записей
  i = 2
  Do While (Trim(wb_k.Cells(i, 3)) <> "")
    i = i + 1
  Loop
  i = i - 2
  'добавить такое же число записей
  For j = 1 To i - 1
    ws_b.Rows("2:2").Insert Shift:=xlDown
  Next j  
  s = "2:" + Trim(str(2 + i - 1))
  wb_k.Rows(s).Copy
  s = "2:" + Trim(str(2 + i - 1))
  ws_b.Rows(s).Select
  ws_b.Paste
  PathBankDBF = .................... путь к файлу-результату
  ws_b.SaveAs Filename:=PathBankDBF, FileFormat:=xlDBF4, CreateBackup:=False
  wb_b.Close SaveChanges:=False
  MsgBox "Готово! " + Chr(13) + "Путь к файлу " + PathBankDBF
End Sub


Постоянно пользуюсь этим примером - работает. Во входном листе первая строка должна быть пустой. shablon.DBF - шаблон файла DBF с единственной строкой.
PM ICQ   Вверх
AndrSB
Дата 5.3.2008, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 2.3.2008

Репутация: нет
Всего: нет



E_v_g, 
Спасибо огромное! Работает.
+5 поставил бы тебе в репутацию, но еще не разрешают.
 smile  smile  smile 
PM MAIL   Вверх
Naghual
Дата 5.3.2008, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 7
Всего: 49



AndrSB, а как-же ваше

Цитата(AndrSB @  2.3.2008,  16:50 Найти цитируемый пост)
Save as... не подходит


?   smile 


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
mihanik
Дата 5.3.2008, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 9
Всего: 109



Цитата(Naghual @  5.3.2008,  19:06 Найти цитируемый пост)
AndrSB, а как-же ваше


Цитата(AndrSB @  2.3.2008,  16:50 )
Save as... не подходит



?     


Цитата(E_v_g @  4.3.2008,  09:13 Найти цитируемый пост)
ws_b.SaveAs Filename:=PathBankDBF, FileFormat:=xlDBF4, CreateBackup:=False


Вот именно... smile 


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
AndrSB
Дата 6.3.2008, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 2.3.2008

Репутация: нет
Всего: нет



Это значит, что я не до конца разобрался с возможностями "великого и могучего" и
сделал поспешные выводы. И т.к. у меня не получалось сохранять из xls в dbf, через
save as... с сохранением форматов и записей, я хотел найти обходной путь. Кстати,
мой пример работает вроде без save as..., загвоздка была в количестве записей.

Naghual, mihanik, - Гуру, не судите строго ламера. Каюсь, в невежестве,
но благодаря Вам, уже знаю больше. Спасибо.  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0562 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.