Зараз обговорюють

"Тобто є ряд завдань, які взагалі без рекурсії не наважуються."  - це як розуміти? Перефразуй, будь ласка. 

виправив, йшлося про те що деякі завдання можна вирішити лише при використанні рекурсії

Спасибі дуже корисна стаття

А ще щось планується подібного найближчим часом?


Дякую за підтримку, радий що Вам сподобалось!

Так маю вже майже дороблений проект по управлінні Audio файлом, на заміну стандартним клавішам управління HTML5, але ще не встиг відтестувати програвання файлів з інтернету, поки лише локально працює

Надіюсь найближчим часом дороблю й закину

Рахунки

webmoneyeur - E385818210641
usd - Z304643423050
uah - U354026817492
rub - R301704373231easypay80002677bitcoin1F5HRGroUtEQW9HBNbeew8iKh5KQ8vJxzw

Зворотній зв'язок

Для покращення роботи сайту надсилайте свої зауваження:
mailЗауваження
mailПропозиція

Статистика

UkrNET - поисково-информационный ресурс

VBA : Робота з файлами за допомогою діалогових вікон

FileDialog

VBA в Microsoft Office надає доступ до об'єкта FileDialog, що дозволяє забезпечити функціональність, подібну зі стандартними діалоговими вікнами Відкрити і Зберегти, які реалізовані у всіх додатках Office. Шляхом використання об'єктів FileDialog ви можете легко розробити призначений для користувача інтерфейс для вибору файлів або їх перейменування без залучення додаткових елементів управління ActiveX або рішень сторонніх розробників.

Для використання об'єкта FileDialog ви повинні спочатку звернутися до властивості FileDialog об'єкта додатка Application і задати аргумент для типу діалогу DialogType. Існує чотири типи діалогу для роботи з файлами.

Типи діалогів

  • Open Dialog (msoFileDialogOpen) - дозволяє користувачам вибрати один або більше файлів. Після здійснення вибору ви можете відкрити вибраний файл або файли у відповідній програмі шляхом використання методу Execute.
  • SaveAs Dialog (msoFileDialogSaveAs) - дозволяє користувачам вказати будь-якої єдиний файл. Після здійснення вибору ви можете зберегти поточний файл шляхом використання методу Execute.
  • File Picker Dialog (msoFileDialogFilePicker) - дозволяє користувачам вибрати один або більше файлів. Шляхи до файлів, обраним користувачам, зберігаються в колекції елементів FileDialogSelectedItems.
  • Folder Picker Dialog (msoFileDialogFolderPicker) - дозволяє користувачам вибрати теку. Шлях до обраної теки зберігається в колекції елементів FileDialogSelectedItems.

Методи діалогів

AllowMultiSelect - Вказує, може бути обраний лише один файл або декілька:

True - можна буде вибрати більше одного файлу для обробки (через Shift або Ctrl або простим виділенням мишею всередині вікна)

False - можна буде вибрати тільки один файл

Title

Текст заголовку вікна. Якщо вказати "Вибрати текстові або Excel файли", то саме цей текст буде в заголовку. Якщо не вказувати, то буде текст за замовчуванням (щось на кшталт "Відкриття документа")

Filters

Перераховуються типи файлів, які будуть виводитись в діалоговому вікні вибору. Для додавання типу файлу (розширення) необхідно використовувати метод Add:

.Filters.Add ([Description], [Extensions], [Position])

Description - опис типу файлів. Довільний текст, який вказує тип файлів. Наприклад "Малюнки" або "Файли Excel".

Extensions - розширення файлів. Безпосередньо перед розширенням обов'язково повинна стояти зірочка і точка: * .xls. Інакше діалог видасть помилку. Для перерахування кількох розширень використовується роздільник у вигляді точки-з-коми: "* .xls *; *. xla *" або "* .xls; *. xlsx; *. xlsm". Зірочка після розширення замінює будь-який набір символів або жодного. Наприклад, при вказівці "* .xls *" буде можливим вибрати будь-які файли, розширення яких починається на .xls: .xls, .xlsx, .xlsm, .xlsb і т.д., але не можна буде вибрати файли з розширенням .xla, .xlam і тим більше .doc або .txt. Якщо необхідно здійснити вибір будь-якого типу файлів, то необхідно просто очистити фільтр і не додавати ніякі типи: .Filters.Clear

Position - вказує, яким за рахунком в списку буде тип файлів. На малюнку нижче першим йде тип "Excel files", а другим "Text files":

Тип файлів, який буде показаний за замовчуванням при виклику діалогу визначається властивістю FilterIndex діалогу FileDialog.

Важливий момент: діалог, викликаний в одному сеансі Excel зберігає додані раніше типи файлів. Тому перед призначенням нових типів необхідно виконати очищення фільтра:

.Filters.Clear

Кожен новий тип файлів додається новим Add:

.Filters.Add "Excel files", "* .xls *; *. xla *", 1 'додаємо можливість вибору файлів Excel
.Filters.Add "Text files", "* .txt", 2 'додаємо можливість вибору текстових файлів

FilterIndex

Призначає тип файлів, який буде обраний за замовчуванням з усіх перерахованих в колекції Filters при виклику діалогу

InitialFileName

Цим параметром можна задати початкову теку, на якій буде відкритий діалог:

.InitialFileName = "C:\Temp"

Якщо при цьому ще додати ім'я файлу, то в поле діалогу Файл буде так само виведено це ім'я:

.InitialFileName = "C:\TempКнига1.xlsx"

Я особисто не рекомендую вказувати ім'я файлу, тому що після показу діалогу цей файл автоматично буде обраний, що не завжди буває правильним. Але все залежить від завдань. Якщо користувач не вибере самостійно жодного файлу, то відповіддю діалогу буде саме файл з вказаним ім'ям (Книга1.xlsx). Якщо такого файлу не виявиться в теці, то діалог видасть попередження, що такого файлу немає.

InitialView

Даний параметр визначає зовнішній вигляд і структуру вікна діалогу. Доступно 9 варіантів:

- msoFileDialogViewDetails

- msoFileDialogViewLargeIcons

- msoFileDialogViewList

- msoFileDialogViewPreview

- msoFileDialogViewProperties

- msoFileDialogViewSmallIcons

- msoFileDialogViewThumbnail

- msoFileDialogViewTiles

- msoFileDialogViewWebView

ПриміткаПри використанні даного параметра слід враховувати, що на різних операційних системах можуть бути доступні не всі варіанти. Тому перш ніж використовувати краще переконатися, що на кінцевих ПК підтримується вказаний тип. В принципі нічого страшного не станеться - буде просто показано вікно з видом за замовчуванням. Але куди правильніше в розробці дотримуватися однотипного виду на всіх ПК.

SelectedItems

Повертає колекцію вибраних файлів. На відміну від Application.GetOpenFilename завжди повертається масив рядків, тому можна завжди використовувати цикл для відкриття файлів, навіть якщо параметр AllowMultiSelect встановлений в False:

Приклад застосування:

Set fDialog = Application.FileDialog(msoFileDialogOpen)
With fDialog
    .AllowMultiSelect = True
    .Show
    For Each file In .SelectedItems
        Debug.Print file
	'Workbooks.Open file для відкриття книги'
    Next
End With 

або

Application.FileDialog(msoFileDialogOpen).AllowMultiSelect = True
Application.FileDialog(msoFileDialogOpen).Show
Set fileList = Application.FileDialog(msoFileDialogOpen).SelectedItems
For Each file In fileList 'перебираємо усі вибрані файли
    Debug.Print file
    'Workbooks.Open file для відкриття книги'
Next 

Нумерація рядків в SelectedItems завжди починається з 1

Show

Мабуть, найважливіший метод в діалозі - відповідає за показ діалогу. При цьому метод Show повертає відповідь у вигляді цілого числа:

-1 - Вибір файлів був зроблений і натиснута кнопка Відкрити

0 - була натиснута кнопка скасування

Це можна (точніше потрібно!) Використовувати, щоб не продовжувати виконання коду, якщо натиснута кнопка Скасування:

Set fDialog = Application.FileDialog(msoFileDialogOpen)
With fDialog
    .AllowMultiSelect = True
    If .Show = 0 Then
        MsgBox "Не було вибрано жодного файлу!"
        Exit Sub 'була натиснута кнопка скасування'
    Else
        For Each file In .SelectedItems
            Debug.Print file
			'Workbooks.Open file для відкриття книги'
        Next
    End If
End With 

Примітка: Всі об'єкти FileDialog є модальними діалогами, тому, як тільки якесь діалогове вікно виводиться на екран, виконання будь-якого програмного коду припиняється доти, поки дане діалогове вікно не буде закрито.

Execute

Після виклику методу Show з метою виведення діалогового вікна, в тому випадку, якщо це діалогове вікно має тип msoFileDialogOpen або msoFileDialogSaveAs, ви можете виконати метод Execute для здійснення дії за замовчуванням для відкриття або збереження елементів. Наприклад, якщо діалогове вікно має тип msoFileDialogOpen, ви можете викликати метод Execute для відкриття файлу, чи файлів обраних користувачем.

Application.FileDialog(msoFileDialogOpen).AllowMultiSelect = True 'дозволяє вибрати кілька файлів
Application.FileDialog(msoFileDialogOpen).Show
Application.FileDialog(msoFileDialogOpen).Execute

Оскільки доступ до діалогового вікна для роботи з файлами може бути здійснений тільки шляхом звернення до властивості FileDialog об'єкта Application усіх програм Office, для використання будь-якого такого діалогового вікна в Office потрібно, щоб вже був запущений екземпляр відповідного додатку Office. Отже, ви не можете використовувати діалогові вікна Office для роботи з файлами з додатків, що не входять в сімейство Microsoft Office, без застосування процедури автоматизації для потрібного додатка Office.


GetOpenFilename

це спрощений спосіб роботи з вікном відкриття файлів. Найпростіший спосіб відкрити діалогове вікно Open і отримати інформацію про те, що вибрав користувач (у вигляді строкової змінної з інформацією про ім'я файлу з повним шляхом), виглядає так:

Application.GetOpenFilename([FileFilter], [FilterIndex], [Title], [ButtonText], [MultiSelect])

FileFilter - Вказуються типи файлів, які будуть виводитись в діалоговому вікні вибору. Наприклад, якщо вказати "Excel files (*. xls *), *. xls *", то можливо буде вибрати тільки файли Excel (з розширенням, що починається на .xls - .xls, .xlsx, .xlsb, .xlsm і т. д.). Якщо вказати "Text files (*. txt), *. txt", то можна буде вибрати тільки текстові файли з розширенням .txt. Так само можна вказати більше одного типу розширень: "Excel files (*. xls *), *. xls *, Text files (*. txt), *. txt". За замовчуванням тип файлів в діалоговому вікні буде належати першому зазначеного типу файлів (*. xls *). Але можна вказати будь-який з перерахованих типів за допомогою аргументу FilterIndex. Так само можна вказати вибір будь-яких типів файлів: "All files (*. *), *. *"

FilterIndex - Якщо аргументом FileFilter вказано більше одного типу файлів (розширень), то цей аргумент вказує який саме тип використовувати. Наприклад, наступний рядок за замовчуванням призначає вибір текстових типів файлів:

fileName = Application.GetOpenFilename("Excel files(*.xls*),*.xls*,Text files(*.txt),*.txt", 2, "Вибрати текстові або Excel файли", , True)

Title - Текст заголовку вікна. Якщо вказати "Вибрати текстові або Excel файли", то саме цей текст буде в заголовку. Якщо не вказувати, то буде текст за замовчуванням (щось на кшталт "Відкриття документа")

ButtonText - Даний аргумент доступний тільки для ПК під управлінням Macintosh (MAC). Призначає текст для кнопки діалогового вікна Відкрити. Для власників Windows цей текст завжди буде "Відкрити"

MultiSelect - Вказує, може бути обраний лише один файл або декілька:

True - можна буде вибрати більше одного файлу для обробки (через Shift або Ctrl або простим виділенням мишею всередині вікна)

False - можна буде вибрати тільки один файл

За замовчуванням приймає значення False

Примітка: При пустих параметрах буде доступний вибір усіх файлів, а Title прийме значення "Відкриття документу"

Приклад:

fileName = Application.GetOpenFilename("Excel files(*.xls*),*.xls*", 1, "Виберіть потрібні файли Excel", , True)
If VarType(fileName) = vbBoolean Then
    MsgBox "Не було вибрано жодного файлу!"
    Exit Sub
Else
    For Each file In fileName
        Debug.Print file		
		'Workbooks.Open file для відкриття книги'
    Next
End If 

GetSaveAsFilename

такий же по функціональності спосіб, який працює з вікном Save As.
fileName = Application.GetSaveAsFilename()
If fileName <> False Then
    Debug.Print fileName
	'ThisWorkbooks.SaveAs fileName можна замінити на Active для збереження активної робочої книги'
End If 

Примітка: При такому збереженні потрібно також прописувати формат файлу в якому зберігаються дані!


view660like0dislike0 avatard_l4w clock 2016-06-30 19:43

Коментарі:



Для даної статті відсутні коментарі

Про нас

"Programmers World" розроблено з метою полегшення в освоєнні навичок програмування, та поширення матеріалів з сфери ІТ Українською мовою.

Кожен бажаючий може безкоштовно користуватися ресурсами сайту, щоб:

- Вивчати теоретичні аспекти мов програмування

- Переглядати практичне застосування теорії при виконанні різних міні проектів з відкритим кодом

- Розміщати свої завдання на форумі для допомоги в їх реалізації, або готового коду який може бути корисний іншим користувачам

- Спілкуватись з іншими користувачами та обмінюватись досвідом

Сайт функціонує на безопланій основі та ентузіазмі розробника, якщо Ви бажаєте долучитись до розвитку даного проекту то можете пожертвувати кошти на рахунки розміщені в блоці "Допомога сайту".

Сайт

Зареєстровані користувачі можуть скористатися системою діалогів, в профілі користувача, для отримання потрібної інформації. Написати!

Також Ви можете використати форми відправки Зауважень та Пропозицій.


Електронна пошта

Ви можете звертатись на нашу поштову скриньку site.programmersworld@gmail.com

www.000webhost.com