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

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

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

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

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


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

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

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

Рахунки

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

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

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

Статистика

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

VBA : Функції для роботи з файлами

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

Вбудовані функції для роботою з файлової системою, передбачені в VBA:

CurDir

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

Dim sCurDir As String
	sCurDir = CurDir("D")

Dir

дозволяє шукати файл або каталог за вказаним шляхом на диску.

Debug.Print Dir(sPath & "InBook1.xlsx")

Якщо в теці In існує файл Book1.xlsx тоді функція поверне його назва та тип в форматі String

Якщо файл відсутній тоді отримаємо пусту стрічку, тому краще перевіряти чи отримано назву файлу:

- для прикладу можна перевірити його на пустоту використовуючи порівняння з Empty

If Dir(sPath & "InBook1.xlsx") = Empty Then
    Debug.Print "Файл не знайдено"
End If

або перевірити довжину стрічки яка повертається

If Len(Dir(sPath & "InBook1.xlsx")) = 0 Then
    Debug.Print "Файл не знайдено"
End If 

Також дуже часто необхідно знайти книгу за її унікальним фрагментом в назві в цьому випадку достатньо використати символ (*)

Припустимо що кожного тижня в теці розміщується файл назва якого має стандартну частину "Book", а наступна частина назви може бути змінена, також формат файлу завжди буде Excel, але з розширенням *xlsx, *xlsm чи іншим

Debug.Print Dir(sPath & "InBook*.xl*")

при використанні даного коду функція Dir знайде файл який буде відповідати заданому шаблону та поверне повну його назву та тип. Якщо шаблон для пошуку встановити як *.* то буде повернуто 1-й файл у теці

Переглянути усі назви файлів в теці

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

Sub Test ()
Dim s As String
	s = Dir ( "D:\test\*.*")
	Debug.Print s
	Do While s <> ""
		s = Dir
		Debug.Print s
	Loop
End Sub

Результат роботи в Вікні Immadiate (Ctrl-G).


EOF

при операції запису в файл на диску ця функція поверне True, якщо ви перебуваєте в кінці файлу. Зазвичай використовується при роботі з текстовими файлами - .txt. При збереженні книг Excel краще використовувати стандартні методи: Save і SaveAs.


Error

дозволяє повернути опис помилки по її номеру. Генерувати помилку потрібно за допомогою методу RaiseError () спеціального об'єкта Err.

Dim ErrorNumber
For ErrorNumber = 51 To 64  ' цикл по номерам 51 - 64
	Debug.Print Error(ErrorNumber) 'виводимо опис помилки яка закріплена за відповідним номером
Next ErrorNumber

FileAttr

дозволяє визначити, як саме був відкритий Вами файл в файлової системі: на читання, запис, додавання, в двійковому або текстовому режимі і т.п. Застосовується для роботи з текстовими файлами, та повертає в форматі Long

Open "D:\Text1.txt" For [Метод] As # 1

Доступні методи відкриття файлу:

КодМетод
1Input
2Output
4Random
8Append
32Binary

застосування:

Open "D:\Text1.txt" For Random As 1 'Відкриваємо файл'
	Debug.Print FileAttr(1, 1) 'Повертає 4 (режим Random)
Close 1 ' Закриваємо файл

FileDateTime

дозволяє отримати інформацію про останній час звернення до зазначеного Вами файлу. Якщо до файлу після створення жодного разу не зверталися, то це буде час створення файлу. Якщо спробувати звернутися до вже відкритої книги - то буде отримано час відкриття книги, а не створення або збереження.

sFileDateTime = FileDateTime("D:\Text1.txt")

FileLen

дозволяє визначити довжину зазначеного файлу в байтах (скільки місця займає на диску).

mySize = FileLen("D:\MYFILE.txt")

FreeFile

дозволяє визначити наступну вільну цифру, яку можна використовувати як номер файлу при його відкритті.

Наприклад відкриємо декілька txt фалів (при відкритті створяться автоматично) та скориставшись покроковим виконанням коду (F8) можна буде переглянути, що функція FreeFile прийматиме значення які ще доступні для нумерації відкритих файлів.

Dim count As Integer
Dim fileNumber As Integer
For count = 1 To 5
    fileNumber = FreeFile() 'перевіряємо вільну цифру для присвоєння її файлу
    Open "D:\MYFILE" & count & ".txt" For Output As fileNumber 'відкриває файл і присвоює вільний номер визначений раніше
    Debug.Print ("Файлу MYFILE" & count & "присвоєно № " & fileNumber) 'виводить інформацію про присвоєння номера в вікно Immediate
    'Close (fileNumber)'Закриваємо файл
Next 

Якщо файли закривати в кінці циклу тоді FreeFile буде завжди приймати значення 1, тому що при відкритті файлу він завжди буде першим.


GetAttr

можливість звернутися до файлу до файлової системи і отримати інформацію про його атрибутах (прихований, доступний тільки для читання, архівний і т.п.)

КонстантаЗначенняОпис
vbNormal0Звичайний
vbReadOnly1Тільки для читання
vbHidden2Прихований
vbSystem4Системний файл. Немає прав на комп'ютерах Макінтош
vbDirectory16Каталог або тека
vbArchive32Файл змінився з моменту створення останньої резервної копії. Немає прав на комп'ютерах Макінтош
vbAlias64Зазначене ім'я файлу є псевдонімом. Доступно тільки на комп'ютерах Макінтош

myAttr = GetAttr("D:\MYFILE.txt")

Input

дозволяє вивантажувати інформацію з відкритого файлу. Наприклад, вивантажимо інформацію з файлу D:\MYFILE.txt і виведемо її в вікно Immediate наступним способом:

Dim InputData
Open "D:\MYFILE.txt" For Input As # 1 'Відкриваємо файл функцією Open () на читання'
Do While Not EOF(1) 'перебираємо доки не буде досягнуто кінця фалу'
	Line Input #1, InputData 'зчитує стрічку даних'
	Debug.Print InputData 'виводить отриманий рядок в вікно Immediate'
	'(Відкрити Immediate: Ctrl + G у вікні редактора VBA)'
Loop
Close # 1 'Закриваємо файл

Seek

повертає інформацію про позицію, з якої буде виконуватися наступна операція читання або вставки.


Dim myChar
Open "D:\MYFILE.txt" For Input As #1    'Відкриваємо файл функцією Open () на читання'
Do While Not EOF(1) 'Перебираємо доки не буде досягнуто кінця фалу'
    myChar = Input(1, #1) 'Зчитує наступний символ'
    Debug.Print Seek(1) 'Виводить отриману позицію в вікно Immediate'
Loop
Close #1 'Закриваємо файл

LOF (length of file)

дозволяє визначити довжину відкритого файлу в байтах.

Open "D:\MYFILE.txt" For Input As #1 'Відкриваємо файл'
Length = LOF(1) 'Визначаємо довжину відкритого файлу'
Debug.Print Length 'Виводить отриману довжину в вікно Immediate'
Close #1 'Закриваємо файл

view464like0dislike0 avatard_l4w clock 2016-07-05 23:38

Коментарі:



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

Про нас

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

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

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

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

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

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

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

Сайт

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

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


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

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

www.000webhost.com