Ако ваш ВБА процедура мора да пита корисника за име фајла, ви могли да користите функцију ИнпутБок и омогућава кориснику Екцел да мало куцање. Међутим, оквир за унос обично није најбоља алатка за овај посао, јер је већини корисника тешко да запамти путање, обрнуте косе црте, називе датотека и екстензије датотека. Другим речима, превише је лако зезнути када куцате име датотеке.
За боље решење овог проблема, користите метод ГетОпенФиленаме објекта Апплицатион, који обезбеђује да ваш код добије исправан назив датотеке, укључујући њену комплетну путању. Метод ГетОпенФиленаме приказује познати оквир за дијалог Опен (прекид звона за оквир за дијалог Екцел се приказује када изаберете Датотека → Отвори → Прегледај).
Метод ГетОпенФиленаме заправо не отвара наведену датотеку. Овај метод једноставно враћа име датотеке које је изабрао корисник као стринг. Затим можете написати код да радите шта год желите са именом датотеке.
Синтакса за метод ГетОпенФиленаме
Званична синтакса методе ГетОпенФиленаме је следећа:
објецт.ГетОпенФиленаме ([филтер филе], [филтерИндек],
[наслов],[буттонТект], [више избора])
Метод ГетОпенФиленаме узима опционе аргументе у наставку.
Расправа |
Шта ради |
ФилеФилтер |
Одређује типове датотека које се појављују у оквиру за дијалог
(на пример, *.ТКСТ). Можете навести неколико филтера које корисник
може изабрати. |
ФилтерИндек |
Одређује који од фајлова филтера се
подразумевано приказује у оквиру за дијалог . |
Наслов |
Одређује наслов за насловну
траку дијалога . |
БуттонТект |
Занемарено (користи се само за Мацинтосх верзију Екцел-а). |
Више избора |
Ако је тачно, корисник може да изабере више датотека. |
Пример ГетОпенФиленаме
Аргумент филеФилтер одређује шта се појављује на падајућој листи Тип датотеке у оквиру за дијалог. Овај аргумент се састоји од парова стрингова филтера датотека иза којих следи спецификација филтера датотеке са џокер знаком, са зарезима који раздвајају сваки део и пар. Ако је изостављен, овај аргумент подразумевано подразумева следеће:
Све датотеке (*.*), *.*
Обратите пажњу да се овај низ састоји од два дела, одвојена зарезом:
Све датотеке (*.*)
и
*.*
Први део овог низа је текст приказан на падајућој листи Филес оф Типе. Други део одређује које датотеке дијалошки оквир приказује. На пример, *.* означава све датотеке.
Код у следећем примеру отвара оквир за дијалог који од корисника тражи име датотеке. Процедура дефинише пет филтера датотека. Приметите да се ВБА секвенца за наставак линије користи за подешавање променљиве Филтер; то помаже да се поједностави овај прилично компликован аргумент.
Суб ГетИмпортФилеНаме ()
Дим Финфо Ас Стринг
Дим ФилтерИндек Ас Лонг
Дим Титле Ас Стринг
Дим ФилеНаме као варијанта
' Поставите листу филтера датотека
ФИнфо = „Текстуалне датотеке (*.ткт),*.ткт“ & _
„Лотус датотеке (*.прн),*.прн“, & _
„Датотеке раздвојене зарезима (*.цсв),*.цсв“, & _
„АСЦИИ датотеке (*.асц),*.асц“, & _
"Све датотеке (*.*),*.*"
' Подразумевано прикажи *.*
Индекс филтера = 5
' Поставите наслов дијалога
Наслов = „Изаберите датотеку за увоз“
' Добијте име датотеке
ФилеНаме = Апплицатион.ГетОпенФиленаме (ФИнфо, _
Индекс филтера, наслов)
' Руковати повратним информацијама из дијалога
Ако је ФилеНаме = Фалсе Онда
МсгБок „Није изабрана ниједна датотека.“
Иначе
МсгБок „Изабрали сте“ & Име датотеке
Крај Ако
Енд Суб
Ево дијалога који Екцел приказује када извршите ову процедуру. Изглед се може разликовати у зависности од верзије оперативног система Виндовс коју користите и опција приказа које сте подесили.

Метод ГетОпен Филенаме приказује прилагодљив оквир за дијалог и враћа путању и име изабране датотеке. Не отвара датотеку.
У правој апликацији, урадили бисте нешто значајније са именом датотеке. На пример, можда ћете желети да га отворите користећи изјаву као што је ова:
Воркбоокс.Опен ФилеНаме
Приметите да је променљива ФилеНаме декларисана као тип података Вариант. Ако корисник кликне на Откажи, та променљива садржи логичку вредност (Фалсе). У супротном, ФилеНаме је стринг. Стога, коришћење типа података Вариант обрађује обе могућности.