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

Возможно ли средствами VBA использовать autofilter не открывая файл Excel?

15.07.2011, 13:08. Показов 3888. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Может кто сталкивался: возможно ли средствами VBA использовать autofilter не открывая файл Excel.
Есть файл A.xls. В нем через автофильтр выбираются значения, на основе которых делаются вычисления. Результаты помещаются в другой файл B.xls. VBA код (запускается в файле B.xls, выводит диалог для открытия файла А, делает вычисления , сохраняет результаты в B.xls, закрывает A.xls) работает. Проблема в том что A.xls не хочется "открывать"....a данные обязательно над фильтровать
Мож какие идеи как можно это сделать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.07.2011, 13:08
Ответы с готовыми решениями:

Возможно ли из написанных в Excel макросов создать как отдельный файл *.exe / VBA?
Здравствуйте! Помогите пожалуйста, возможно ли создать из своей работы в Excel отдельное...

Возможно ли создать .exe файл для формы созданой в Excel с применением VBA?
Помогите пожалуйста!!! :cry: Я создала тестовую оболочку с помощью VBA в Excel, можно ли создать...

Сохранение в Excel не открывая сам файл
private void excel_init(string write, int page) { try { ...

Как извлечь данные из Excel не открывая файл?
ВОПРОС Как извлечь данные из Excel не открывая файл? СЦЕНАРИЙ 1. В поле "ID" вводим...

9
Заблокирован
15.07.2011, 13:16 2
Цитата Сообщение от Svena Посмотреть сообщение
Проблема в том что A.xls не хочется "открывать"....a данные обязательно над фильтровать
выложите фрагмент кода, как вы открываете файл A.xls.
0
0 / 0 / 0
Регистрация: 11.07.2011
Сообщений: 7
15.07.2011, 13:20  [ТС] 3
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = True
        .InitialFileName = "*.xls"
        .Title = "Выберите файл"
          If .Show = False Then Exit Sub
          For Each oFile In .SelectedItems
                    Workbooks.OpenText Filename:=oFile
                    oAwb = Dir(oFile, vbDirectory)
                    Application.ScreenUpdating = False
                    Workbooks(oAwb).Activate
                    If Left(Workbooks(oAwb).Name, 11) = "Файл1" Then
                     from_файл1
                    End If
          Next oFile
      End With
0
Заблокирован
15.07.2011, 13:33 4
Svena,
т.е. всё у вас работает, но файл Excel вы не хотите открывать?
Я просто не сразу понял.
0
0 / 0 / 0
Регистрация: 11.07.2011
Сообщений: 7
15.07.2011, 13:39  [ТС] 5
да, я не хочу открывать файл А, но данные(autofilter) из него хочу получить. Просто в файле А куча листов с ссылками на другие файлы (ссылки могут быть "битыми", что для меня в принципе не играет роли, но выскакивает окно....). Но данные которые я из А извлекаю, они "родные" для A (.т.е просто числа)
0
2785 / 717 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
15.07.2011, 14:08 6
Не открывая файл, в нём нельзя изменить настройки фильтрации.

Однако в Вашем куске кода файл открывается в текстовом режиме, методом .OpenText
Попробуйте метод .Open, там есть параметр, запрещающий обновлять внешние ссылки в открываемом файле.

И вообще, мой опыт в Excel давно подсказывает, что внешние ссылки - полумеры для тех, кто не умеет работать с VBA и в конечном счёте зло))))
1
0 / 0 / 0
Регистрация: 11.07.2011
Сообщений: 7
15.07.2011, 15:04  [ТС] 7
Согласен по поводу ссылок... к сожаленью файл A приходит из внешнего мира
0
2785 / 717 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
15.07.2011, 15:34 8
Работаете с файлом из внешнего мира? В таком случае, если Вам не надо вносить изменений в этот файл, делаете себе копию, рвёте все внешние ссылки на копии файла и в таком виде с ним работаете. Меню Правка - Связи... [Разорвать] (для каждой из внешних связей). Как-то помнится писали макрос по разрыву множества связей с книгой, можно сделать и это.
0
11508 / 3794 / 681
Регистрация: 13.02.2009
Сообщений: 11,197
16.07.2011, 13:06 9
Не открывая файл, в нём нельзя изменить настройки фильтрации.
но можно считать данные и отфильтровать своим фильтром.
В VBA не существует метода получения значения из закрытого файла рабочей
книги. Однако вы можете воспользоваться возможностью управления ссылками на
файлы, которая предоставляется в Excel. В настоящем разделе описана функция VBA
(GetValue, показанная ниже), которая получает значение из закрытой книги.
Эта задача выполняется в результате вызова макроса XLM.
Код 1

Private Function GetValue(path, file, sheet, ref)
Dim arg As String
If Right(path, 1) <> "\" Then path = path & "\"
If Dir(path & file) = "" Then
GetValue = "Файл не найден"
Exit Function
End If
arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
Range(ref).Range("A1").Address(, , xlR1C1)
GetValue = ExecuteExcel4Macro(arg)
End Function

Функция GetValue имеет четыре аргумента:
¦ path – путь к закрытому файлу (например, "d:\files");
¦ file – название рабочей книги (например, "budget.xls");
¦ sheet – название рабочего листа (например, "Лист1");
¦ ref – ссылка на ячейку (например, "C4").
Следующая процедура демонстрирует, как используется функция GetValue.
В этой процедуре отображается значение ячейки А1 листа Лист1 файла 99Budget.xls
(папка XLFiles\Budget на диске c:.
Код 1
Sub TestGetValue()
p = "c:\XLFiles\Budget"
f = "99Budget.xls"
s = "Лист1"
a = "A1"
MsgBox GetValue(p, f, s, a)
End Sub

Ниже приведен еще один пример. Эта процедура считывает 1200 значений
(100 строк и 12 столбцов) из закрытого файла и помещает эти значения на активный
рабочий лист.
Код 1

Sub TestGetValue2()
p = "c:\XLFiles\Budget"
f = "99Budget.xls"
s = "Sheet1"
Application.ScreenUpdating = False
For r = 1 To 100
For c = 1 To 12
a = Cells(r, c).Address
Cells(r, c) = GetValue(p, f, s, a)
Next c
Next r
Application.ScreenUpdating = True
End Sub
0
1389 / 530 / 67
Регистрация: 10.04.2009
Сообщений: 8,721
16.07.2011, 14:10 10
Не открывая файл - можно считать данные
и в Вордовском, тхт тоже?, как?
0
16.07.2011, 14:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.07.2011, 14:10
Помогаю со студенческими работами здесь

Возможно ли средствами VBA узнать условия фильтра таблицы/запроса?
Добрый день! Кто-нибудь знает, возможно ли средствами VBA определить, по каким полям и какими...

Выборка в excel средствами VBA
Добрый времени суток, товарищи Профессионалы! Прошу Вас помощи в нелегкой мне задачи! Я совсем не...

Возможно ли средствами VBA удалить уже существующее имя ячейки рабочего листа?
Возможно ли средствами VBA удалить имя, уже существующее, ячейки рабочего листа ?

autofilter в vba
есть ли он или можно ли как нибудь из екселя его вытащить?при работе с екселевскими таблицами. ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru