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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2010, 10:09   #1
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
По умолчанию Переделать макрос экселя под аксесс

Здравствуйте ув. знатоки!
Была токая подымал такую тему: http://programmersforum.ru/showthread.php?t=120673
И теперь задумался, если данные будут постоянно рости, экселю будет же со временем очень тяжело работать. Решил попробовать сделать БД в аксессе. Вот макрос который сохранял данные в эксель:

Sub cells1()
Dim iyear As String, idate As Date, adr As String, Fname As String
Dim Wsh As Worksheet, wb As Object, x, i As Long, fg_ As String, fm_ As String
Application.ScreenUpdating = False
If MsgBox("Сохранить птичник в БД?", vbYesNo, "Подтверждение") = vbYes Then
Set Wsh = ThisWorkbook.ActiveSheet: iyear = CStr(Year([a1])): idate = [a1]

Workbooks.Open (ThisWorkbook.Path & "\Archive\БД.xls"): On Error GoTo Handler
With Workbooks("БД.xls").Sheets(iyear)
.Unprotect "znwf33gnbntrf21"
x = .Range("A1:BN" & .cells(Rows.Count, 3).End(xlUp).Row).Value
For i = 2 To UBound(x, 1) Step 62
If x(i, 1) = idate And x(i, 2) = Wsh.[b1] Then
If MsgBox("Совпадение даты. Заменить птичник в БД?", vbYesNo) = vbYes Then
Wsh.Range("A1:BN62").Copy .Range("A" & i)
End If: Exit For
End If
Next i
If UBound(x, 1) = 1 Then
Wsh.Range("A1:BN62").Copy .Range("A2")
ElseIf i > UBound(x, 1) Then
Wsh.Range("A1:BN62").Copy .Range("A" & i)
End If
.Protect "znwf33gnbntrf21", Contents:=True, Scenarios:=True, AllowFiltering:=True
On Error GoTo 0
End With
With Workbooks("БД.xls"): .Close True: End With: End If

If MsgBox("Сохранить птичник в Архив?", vbYesNo, "Подтверждение") = vbYes Then
Fname = ThisWorkbook.Path & "\Archive"
On Error Resume Next
MkDir Fname
fg_ = Format(idate, "yyyy"): fm_ = Format(idate, "mmmm")
If idate <> Empty Then
If Wsh.Visible = -1 Then
Wsh.Copy
Set wb = ActiveWorkbook
With wb
.Sheets(1).Shapes(1).Delete
.SaveAs Fname & "\" & fg_ & "\" & fm_ _
& "\" & Wsh.Name & " (" & idate & ").xls", xlNormal
.Close
End With
End If
MsgBox "Лист " & Wsh.Name & " в виде файла сохранен в папку " & Fname
End If
End If
Application.ScreenUpdating = True
Exit Sub
Handler:
MsgBox "Лист с таким годом не найден" & vbCrLf & Err.Description
End Sub

Я немного изменил структуру таблици экселя, так чтобы потом из аксесса можно было выгрузить данные в эксель, и применить сводную таблицу экселя.
Я первый раз сталкиваюсь с БД, и прошу посмотреть, что нужно исправить и вообще правильно ли я делаю?
В примере есть 2-ва птичника, нужн о будет при нажатии на "кнопку сохранить", сохранять диапозон А4:DH55 в бд.
Посоветуйте пожалуйста, что мне нужно изменить, переделать, подправить?
Может у кого, какие примеры есть подобных манипуляций?
И кстати, таблица и БД будут лежать в сетевой папки, так чтобы другие пользователи могли смотреть что происходит.
Заранее огромное спасибо!
Вложения
Тип файла: zip Пример.zip (57.9 Кб, 12 просмотров)
Единственный способ стать умнее, играть с более умным противником...
staniiislav вне форума Ответить с цитированием
Старый 07.12.2010, 10:51   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Во вложении есть примеры кода на добавление.изменение.удаление записей.Работа не завершена
Первым делом запустите скрипт pusk,для регистрации контрола.

По вашей базе должен огорчить,такая таблица не подходит.Их как минимум должнл быть 5.
Вам работы хватает.
Вложения
Тип файла: rar ФВ.rar (162.8 Кб, 21 просмотров)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 07.12.2010, 11:19   #3
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
Подмигивание

Спасибо. Буду учить базы данных )))
Единственный способ стать умнее, играть с более умным противником...
staniiislav вне форума Ответить с цитированием
Старый 09.12.2010, 09:28   #4
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
По умолчанию

А почему 5-ть таблиц? как правильно составить структуру БД?
Единственный способ стать умнее, играть с более умным противником...
staniiislav вне форума Ответить с цитированием
Старый 09.12.2010, 11:49   #5
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

считаем.на скорую руку.
таблица учета птичников.
таблица движения циплят
таблица или скорее всего таблицы всевозможных операций с ними.
таблица Кормоконверсия
таблица комумальных платежей
+ запросы на расчет различных данных и показателей

Установите себе шаблон Борей в Ацессе и посмотрите его пример организации базы данных
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 10.12.2010, 10:16   #6
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
По умолчанию

Спасибо. Похоже я далекий от этой темы
Что-то буду придумывать
Единственный способ стать умнее, играть с более умным противником...
staniiislav вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно переделать макрос под меня ganebal Microsoft Office Excel 0 22.11.2010 19:52
Переделать макрос. Дмитрий Фукс Microsoft Office Excel 6 12.05.2010 09:10
Как запустить макрос экселя из макроса ворда... Rossoman Microsoft Office Excel 1 08.05.2010 20:51
переделать под windows al072 C/C++ Сетевое программирование 13 16.02.2010 20:57
Переделать программу под структуры. Си++ Влад-mego Помощь студентам 0 12.04.2009 22:14