Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/19: Рейтинг темы: голосов - 19, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 25.08.2011
Сообщений: 7

Переключение между базами данных. (VBA, Excel 2010)

25.08.2011, 18:29. Показов 3808. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Человек я всю жизнь проходящий мимо программирования, и пытающийся решить проблемы стандартными возможностями Excel, всё таки столкнулся, со сложностью, и уже необходимость познания VBA. Таки пришлось вспоминать что в университете преподавали, однако память дырявая.
Задача моя выглядит следующим образом:

1)Есть папка с данными. там файлы csv. количество файлов периодически увеличивается.
Нужен код для кнопки, чтобы при нажатии сканировалась папка, и все имеющиеся там файлы данных подключались к книге.

2)В экселе создаётся выпадающий список с подключёнными файлами данных.
Выбрав один из них, он автоматически вставляется на определённый лист в книге.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.08.2011, 18:29
Ответы с готовыми решениями:

Работа с базами данных в Excel + VBA
Приветствую всех! Нужна помощь для выполнения домашней работы по работе с базой данных ( Excel + VBA ) Задание. Розыгрышь ДЖЕК ПОТА...

Передача данных между базами данных в пределах одного экземлпяра
Доброго времени суток! ПОДСКАЖИТЕ,пожалуйста, с помощью чего передавать данные из одной БД в другую в пределах одного экземпляра сервера...

VBA в Excel 2010
работаю с Excel 2010 всего 1ч, а поправить макрос надо срочно, пожалуйста,помогите! Не удается найти какую настройку надо изменить, чтобы...

15
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,327
25.08.2011, 18:59
Цитата Сообщение от jerja Посмотреть сообщение
все имеющиеся там файлы данных подключались к книге.
это как??
0
0 / 0 / 0
Регистрация: 25.08.2011
Сообщений: 7
25.08.2011, 19:50  [ТС]
Это то что постоянно приходится делать:
Вкладка "данные" - "подключения" - "добавить", и потом идёшь по компьютеру, заходишь в папочку, и указываешь появившейся ещё один csv файл, со всем соглашаешься, уточняешь что точка с запятой разделитель клеток и готово.
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,327
25.08.2011, 19:51
на запись не пробовали ставить??
0
0 / 0 / 0
Регистрация: 25.08.2011
Сообщений: 7
25.08.2011, 19:53  [ТС]
Если первую часть и не сложно проделывать в ручную, поскольку файлы не так часто появляются,
то со второй частью хуже. Вот она более важна.
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,327
25.08.2011, 19:57
тем не менее
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
на запись не пробовали ставить??
1
0 / 0 / 0
Регистрация: 25.08.2011
Сообщений: 7
25.08.2011, 20:09  [ТС]
Попробовал.
При установке на запись не даёт возможности выбора файла для подключения, а просто ещё раз подключается к тому же файлу

Добавлено через 8 минут
Залез в код макроса, и начал понимать его суть.
А соответственно и уместный ваш вопрос.

вечерком попишу разные макросы на автозаписывании потом попытаюсь соединить.
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
26.08.2011, 07:26
jerja,
т.е. вручную вы делаете так:
вкладка Данные - группа Подключения - Подключения - Добавить... - Найти другие... - выбираете файл - появляется Мастер текстов (импорт) - на втором шаге выбираете разделить точка с запятой - Готово - Закрыть. В итоге в книге Excel ничего не происходит (данные не добавляются на лист).

Дальше что вы делаете, чтобы данные появились на листе в нужном месте?
0
0 / 0 / 0
Регистрация: 25.08.2011
Сообщений: 7
26.08.2011, 09:27  [ТС]
В меню Данные есть Существующие подключения
В них двойной щелчёк на нужном подключении, и указываю с какой ячейки начать вставлять.
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
26.08.2011, 09:46
Файлы csv это текстовые файлы и мне было бы проще открывать и обрабатывать их именно как текстовые. На открытие книги(или можно на кнопочку) написать макрос переборя файлов в нужной папке(можно выводить диалог выбора папки, а можно просто файл ложить рядом с папкой и путь не запрашивать). Макрос переберёт все файлы в папке и создаст список. При выборе названия файла сразу или по кнопке нужный файл считается и загрузится куда надо. При таком варианте вохможна дополнительная обработка даннык

Добавлено через 16 минут
вот так создастся список файлов *.csv находящихся в папке FOLD, которая находится рядом с рабочим файлом:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Sub P1()
Dim Путь As String, Файл As String
Dim R As Integer
Cells.ClearContents
Путь = ActiveWorkbook.Path & "\FOLD\"
Файл = Dir(PathName:=Путь & "*.csv")
Do Until Файл = ""
R = R + 1
Cells(R, 1).Value = Файл
Файл = Dir
Loop
End Sub
Добавлено через 2 минуты
или, что бы путь полный показывался:
Visual Basic
1
Cells(R, 1).Value = Путь & Файл
1
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
26.08.2011, 10:44
Цитата Сообщение от jerja Посмотреть сообщение
В экселе создаётся выпадающий список
а что подразумевается под выпадающим списком? Мне известны 3 вида выпадающего списка, которые можно сделать в Excel.

1 вариант выпадающиего списка:
  1. на листе Excel размещается список (в одном столбце пункты: Пункт1, Пункт2 и т.д.);
  2. затем активной делается ячейка, где должен быть выпадающий список. Далее: вкладка Данные - группа Работа с данными - Проверка данных - вкладка Параметры - Тип данных: Список - Источник: выделяете список (там где Пункт1, Пункт2 и т.д.) - OK.

2 вариант выпадающего списка:

это элемент управления формы. Чтобы его сделать:
вкладка Разработчик - группа Элементы управления - Вставить - Элементы управления формы - Поле со списком (Элемент управления формы) - щёлкаете на листе и растягиваете.

3 вариант выпадающего списка:

это элемент управления ActiveX. Чтобы его сделать:
вкладка Разработчик - группа Элементы управления - Вставить - Элементы ActiveX - Поле со списком (Элемент ActiveX) - щёлкаете на листе.
0
0 / 0 / 0
Регистрация: 25.08.2011
Сообщений: 7
26.08.2011, 14:20  [ТС]
Цитата Сообщение от Busine2009 Посмотреть сообщение
а что подразумевается под выпадающим списком?
второй и третий варианты, их перетаскивать удобно.

Добавлено через 1 час 0 минут
Хотя, на самом деле, не принципиально. подходит любой тип выпадающего списка, лишь бы работало.

Добавлено через 5 минут
Цитата Сообщение от Alex77755 Посмотреть сообщение
Файлы csv это текстовые файлы и мне было бы проще открывать и обрабатывать их именно как текстовые. На открытие книги(или можно на кнопочку) написать макрос переборя файлов в нужной папке(можно выводить диалог выбора папки, а можно просто файл ложить рядом с папкой и путь не запрашивать). Макрос переберёт все файлы в папке и создаст список. При выборе названия файла сразу или по кнопке нужный файл считается и загрузится куда надо. При таком варианте вохможна дополнительная обработка даннык
Хорошо. по вашему коду список файлов выводится, на основе этого списка можно составить выпадающее меню любого из трёх типов, а вот как дальше, чтобы при выборе имени файла подключалась новая база данных за место предыдущей.

Добавлено через 54 минуты
Вот как выглядит код макроса авто записи моих действий

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Sub Gazsin13()
'
' Gazsin13 Gazsin
'
 
 
    With ActiveWorkbook.Connections("datalog_real")
        .Name = "datalog_real"
        .Description = ""
    End With
    Range("A1:S1584").Select
'напрягает этот диапазон, поскольку это есть диапазон всех задействованных
' в данный момент ячеек (в которых хот что-то есть).
'в разных файлах диапазон разный, его нельзя наверное так чётко прописывать.
    With Selection.QueryTable
        .Connection = _
        "TEXT;C:\Users\Jegor\Documents\kollaid experiments\DATAK\datalog_13.07.2011_kollaid_1ten.csv"
'фаил должен указываться в зависимости от того, какой я выбрал в выпадающем списке
        .TextFilePlatform = 1251
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
    Range("C4").Select
    
End Sub
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
26.08.2011, 14:36
15 строка вашего кода:
Цитата Сообщение от jerja Посмотреть сообщение
With Selection.QueryTable
это делается через пользовательский интерфейс вот так:
вкладка Данные - группа Получение внешних данных - Из текста. В результате на листе появляются данные.
Первоначально речь просто о создании подключения.
Т.е. без разницы, как?

Просто даже примеров нет в справке по VBA, как создать просто подключение без размещения данных на листе.
0
0 / 0 / 0
Регистрация: 25.08.2011
Сообщений: 7
26.08.2011, 15:15  [ТС]
Цитата Сообщение от Busine2009 Посмотреть сообщение
это делается через пользовательский интерфейс вот так:
вкладка Данные - группа Получение внешних данных - Из текста. В результате на листе появляются данные.
Первоначально речь просто о создании подключения.
Т.е. без разницы, как?
Не совсем так.
Процедура с подключением делается только один раз, и более не нужна. А вот потом, надо просто менять файл к которому подключаемся и сразу обновить данные.

Добавлено через 9 минут
то есть исходим из того, что подключение добавлять не надо, и создавать не надо.
Надо менять файл подключения на файл который выбран в выпадающем списке.

Прошу прощения, сначала не совсем точно изложил суть проблемы, поскольку поскольку сам путал: подключение, и фаил подключения. оказывается вещи разные.
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
26.08.2011, 21:09
а вот как дальше,
А зачем, собственно, что-то подключать?
Файл текстовой. Путь известен.
Считываем одной строкой в переменную и работаем с ней.
обрабатываем если надо и вываливаем на нужный лист в нужное место
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
26.08.2011, 21:23
jerja,
то, что вы хотите сделать, можно сделать с помощью самого Excel без VBA?
Если можно, то опишите последовательность действий: вкладка такая-то, группа такая-то, кнопка такая-то.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.08.2011, 21:23
Помогаю со студенческими работами здесь

VBA в Excel 2010
Согласно HELP Excel 2010, встроенным языком программирования является VBA 7. Означает ли это, что основой этого языка является Visual...

Не доступен VBA из Excel 2010
Привет, форум. Сабж. Подскажите, как лечить. Спасибо. П.С. Я настраивал доступ к книге через Рецензирование - Защитить лист /...

Перенос данных между базами
Всем форумчанам привет! Хм.... Нужна помощь, правда пока не знаю как объяснить... но, --есть 2 базы данных, n-строк и t-столбцов, ...

передача данных между базами
Здраствуйте. Такая проблема. Есть две баps drupal и gaz. Нужно пользователей из базы drupal перенести в gaz. Причем в таблице users друпала...

Различия между базами данных
Здравствуйте. Скажите, пожалуйста, есть ли разница синтаксиса MySQL и Oracle Database? То есть если у меня есть готовые скрипты для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru