|
|
|
заиметь полное имя любого файла в переменной (VBA Excel)
|
|||
|---|---|---|---|
|
#18+
Как можно забрать в переменную полное имя любого файла, например text.txt, желательно вызвав окно файлового браузера и вручную указывая на файл. необходимо, чтобы он не сам открывался, а передавалось только его имя в переменную, для дальнейшей обработки. Все это в модуль VBA. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2011, 00:34 |
|
||
|
заиметь полное имя любого файла в переменной (VBA Excel)
|
|||
|---|---|---|---|
|
#18+
Learning_Oracle, чувствую в этом желательно вызвав окно файлового браузера и вручную указывая на файл и есть камень преткновения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2011, 08:08 |
|
||
|
заиметь полное имя любого файла в переменной (VBA Excel)
|
|||
|---|---|---|---|
|
#18+
Изучай CommonDialogControl. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2011, 08:37 |
|
||
|
заиметь полное имя любого файла в переменной (VBA Excel)
|
|||
|---|---|---|---|
|
#18+
Learning_Oracle, Сделай ссылку: Tools -> References -> Microsoft Scripting Runtime. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2011, 09:00 |
|
||
|
заиметь полное имя любого файла в переменной (VBA Excel)
|
|||
|---|---|---|---|
|
#18+
Yudzhin, К чему такие сложности? :-) Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2011, 11:08 |
|
||
|
заиметь полное имя любого файла в переменной (VBA Excel)
|
|||
|---|---|---|---|
|
#18+
The_Prist, Те же яйца - только в профиль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2011, 11:14 |
|
||
|
заиметь полное имя любого файла в переменной (VBA Excel)
|
|||
|---|---|---|---|
|
#18+
Yudzhinе же яйца - только в профиль.Ну это да. Только мой вариант не использует "тяжелый" FSO для такой задачи. Считаю это неоправданным расходованием ресурсов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2011, 11:45 |
|
||
|
заиметь полное имя любого файла в переменной (VBA Excel)
|
|||
|---|---|---|---|
|
#18+
The_PristYudzhinе же яйца - только в профиль.Ну это да. Только мой вариант не использует "тяжелый" FSO для такой задачи. Считаю это неоправданным расходованием ресурсов. Расходы ресурсов? Цифры, сравнения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2011, 12:26 |
|
||
|
заиметь полное имя любого файла в переменной (VBA Excel)
|
|||
|---|---|---|---|
|
#18+
The_PristК чему такие сложности? :-) Код: plaintext 1. 2. 3. Тогда уж sFullFileName = False , а не "False" . А если я выберу файл False??? :D ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2011, 13:17 |
|
||
|
заиметь полное имя любого файла в переменной (VBA Excel)
|
|||
|---|---|---|---|
|
#18+
YudzhinТогда уж sFullFileName = False , а не "False" . А если я выберу файл False??? :DНу может Вы попробуете выбрать файл "False", а потом уже будете возмущаться? Попробуйте свой метод sFullFileName = False и посмотрите, что у Вас получится хорошего. И предлагаю изучить мат.часть в области того, какие типы данных хранятся в переменной в зависимости от их типа. Я объявил переменную sFullFileName As String. Следовательно она никак не может хранить в себе тип данных Boolean, на который Вы ссылаетесь в своем посте, указывая на мою "неграмотность" в листинге. Я Вас не отговариваю от использования FSO - это дело Ваше. Я предложил альтренативный вариант и если Вам он не нравится - держите, пожалуйста, свои эмоции при себе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2011, 15:03 |
|
||
|
заиметь полное имя любого файла в переменной (VBA Excel)
|
|||
|---|---|---|---|
|
#18+
[quot The_Prist]YudzhinТогда уж sFullFileName = False , а не "False" . А если я выберу файл False??? :DНу может Вы попробуете выбрать файл "False", а потом уже будете возмущаться? Попробуйте свой метод sFullFileName = False и посмотрите, что у Вас получится хорошего. И предлагаю изучить мат.часть в области того, какие типы данных хранятся в переменной в зависимости от их типа. Я объявил переменную sFullFileName As String. Следовательно она никак не может хранить в себе тип данных Boolean, на который Вы ссылаетесь в своем посте, указывая на мою "неграмотность" в листинге. [quot] Я знаю, что GetOpenFilename возвращает Variant. Я думал, что GetOpenFilename возвращает ТОЛЬКО название файла, что оказалось не так - он возвращает полный путь. Вот здесь я и оплошал. :) Это я увидел в Immediate Window. А про типы данных я знаю, что в Варианте может и Булеан, и Стринг храницо, так что мат.часть я знаю. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2011, 15:14 |
|
||
|
заиметь полное имя любого файла в переменной (VBA Excel)
|
|||
|---|---|---|---|
|
#18+
YudzhinЯ знаю, что GetOpenFilename возвращает VariantGetOpenFilename может и возвращает, но у меня значение передается и хранится в заранее объявленной переменной, которой присвоен конкретный тип. А поменять тип объявленной переменной GetOpenFilename не в силах :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2011, 15:20 |
|
||
|
заиметь полное имя любого файла в переменной (VBA Excel)
|
|||
|---|---|---|---|
|
#18+
The_PristGetOpenFilename может и возвращает, но у меня значение передается и хранится в заранее объявленной переменной, которой присвоен конкретный тип. А поменять тип объявленной переменной GetOpenFilename не в силах :-) А тебе пофиг, что возвращает функция? Ну и что, что не может поменять? А если бы GetOpenFilename возвращал, например, объект Worksheet, то как бы ты сохранил его в переменной String? :) Учи мат.часть! По твоей логике попробуй выполнить следующую процедуру, если тебе пофиг что возвращает GetOpenFilename: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2011, 15:34 |
|
||
|
заиметь полное имя любого файла в переменной (VBA Excel)
|
|||
|---|---|---|---|
|
#18+
Yudzhin, Офф.Может не будем на личности переходить? Мне лично Ваше мнение не важно - не надо меня учить. Если Вы выдергиваете из написанного только то, что надо вам - это Ваше дело. Я не писал что мне пофиг - я знаю что возвращает GetOpenFilename и применил как полагается. Теперь к Вам просьба - покажите, как с помощью GetOpenFilename получить объект Worksheet? Или попробуйте выполнить мой код так, чтобы ошибка появилась. Вот как получится - так у уже и можете рассказывать мне: авторА тебе пофиг, что возвращает функция? Сравнивать Ваш последний код с моим - бред, т.к. у меня заведомо будет получен либо путь к файлу, либо "False", а в Вашем - заведомо нарушено присвоение значения переменным. У меня ничего не нарушено и отрабатывает как надо. Если Вас это так раздражает - я не принуждаю использовать мой код. Не понимаю только зачем надо было писать, что мой код не рабочий(про какие-то там файлы "False" упоминать) если даже не удосужились опробовать, и тем более не зная в полной мере про возвращаемые GetOpenFilename значения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2011, 15:50 |
|
||
|
заиметь полное имя любого файла в переменной (VBA Excel)
|
|||
|---|---|---|---|
|
#18+
а Липецк это в Челябинской области? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2011, 15:54 |
|
||
|
заиметь полное имя любого файла в переменной (VBA Excel)
|
|||
|---|---|---|---|
|
#18+
The_Prist, Тогда нестыковка: The_PristGetOpenFilename может и возвращает и The_PristЯ не писал что мне пофиг - я знаю что возвращает GetOpenFilename Как это понять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2011, 16:05 |
|
||
|
заиметь полное имя любого файла в переменной (VBA Excel)
|
|||
|---|---|---|---|
|
#18+
Ципихович Эндрю, Нет, это деревня в Ярославле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2011, 16:06 |
|
||
|
заиметь полное имя любого файла в переменной (VBA Excel)
|
|||
|---|---|---|---|
|
#18+
Yudzhin, А полностью из слов фразы Вы складывать не умеете? Или до конца дочитывать? The_PristGetOpenFilename может и возвращает, но у меня значение передается и хранится в заранее объявленной переменной, которой присвоен конкретный тип - и это не одно и то же, что пофиг. Я знаю, что данная функция возвращает и явно указал, что даже если GetOpenFilename возвращает Variant, то внутри моей переменной он преобразуется в конкретный тип(в данном случае String). И данное преобразование никакого ущерба коду не несет. А вот Вы мне так и не показали, как же можно в моем коде вызвать ошибку. И не показали, как же мне с помощью обсуждаемой функции получить объект Worksheet. Я все еще с нетерпением жду этих ответов, т.к. мне действительно интересно как это можно сделать. А Вам явно уже удалось, судя по Ваших же словам: авторА если бы GetOpenFilename возвращал, например, объект Worksheet, то как бы ты сохранил его в переменной String? :) Учи мат.часть! Очевидно, я не все свойства и аргументы данной функции знаю, но так полагаю, что их знаете Вы. Вот когда покажете как это сделать - тогда и можете мне говорить про мат.часть. Пока что только Вы в данной области не очень осведомлены, судя по Вашим высказываниям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2011, 16:26 |
|
||
|
заиметь полное имя любого файла в переменной (VBA Excel)
|
|||
|---|---|---|---|
|
#18+
The_Prist, The_PristGetOpenFilename может и возвращает, но у меня значение передается и хранится в заранее объявленной переменной, которой присвоен конкретный тип Ещё раз повторю вопрос: что означают слова "может и возвращает"? Cлово "может" в Вашем случае - это вводное слово, которое означает, что Вы сомневаетесь. Может, возвращает. Может, не возвращает. Вот и логика: мне всё равно, что там функция возвращает - самое главное, что она должна быть String. :D The_PristА вот Вы мне так и не показали, как же можно в моем коде вызвать ошибку. Я ж написал, что я ошибся. Но я ошибся не типах, а в том, что возвращается ПОЛНЫЙ путь к файлу, а не название файла. The_PristИ не показали, как же мне с помощью обсуждаемой функции получить объект Worksheet. YudzhinА если бы GetOpenFilename возвращал, например, объект Worksheet, то как бы ты сохранил его в переменной String? :) Учи мат.часть! Ключевое слово - "если бы". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2011, 16:54 |
|
||
|
заиметь полное имя любого файла в переменной (VBA Excel)
|
|||
|---|---|---|---|
|
#18+
Офф.YudzhinЕщё раз повторю вопрос: что означают слова "может и возвращает"? Cлово "может" в Вашем случае - это вводное слово, которое означает, что Вы сомневаетесь. The_PristYudzhinЯ знаю, что GetOpenFilename возвращает VariantGetOpenFilename может и возвращает, но у меня значение передается и хранится в заранее объявленной переменной, которой присвоен конкретный тип. А поменять тип объявленной переменной GetOpenFilename не в силах :-)Ключевая связка фраз: "GetOpenFilename возвращает Variant - GetOpenFilename может и возвращает" Пояснять дальше? Думаю да, т.к. Вы опять прочтете только то, что хотите, а не то, что написано. Вы написали, что GetOpenFilename возвращает Variant, на что я ответил, что она-то может и возвращает, но я его преобразую в нужный мне тип. Таким образом в моей фразе слово "может" имеет более связующий смысл, нежели отражение моего сомнения. Единственное, не знаю как Вам донести значение слова "возвращает"? Может Вам в форум по русскому языку обратиться? YudzhinКлючевое слово - "если бы".если бы у бабушки были яйца - была бы не бабушка, а дедушка. Какое тогда имеет отношение Ваше высказывание к моему коду и к данной теме? Если бы GetOpenFilename умел возвращать объект Worksheet - был бы другой код. Хотя вот как раз здесь не уверен, т.к. этого нет и с точностью сказать ничего нельзя. Я все еще жду пример того, как в моем коде можно вызвать ошибку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2011, 17:16 |
|
||
|
заиметь полное имя любого файла в переменной (VBA Excel)
|
|||
|---|---|---|---|
|
#18+
The_Prist, Короче, я не буду больше ничего объяснять, а только укажу на 100% неверное Ваше рассуждение: Код: plaintext 1. 2. Поясняю по шагам Ваши действия с функцией: 1. Сначала функция GetOpenFilename возвращает Variant. 2. После того, как Вы получили Variant, Вы преобразуете его в String (неявно, конечно). Итак, нет такого "может, возвращает Variant" - ОНА ВОЗВРАЩАЕТ VARIANT! Тема закрыта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2011, 17:23 |
|
||
|
заиметь полное имя любого файла в переменной (VBA Excel)
|
|||
|---|---|---|---|
|
#18+
Мне не надо пояснять по шагам действия с функцией - я их давно уже сам расписал, а Вы это читать не захотели. Вы просто цепляетесь к словам. Но раз цепляетесь - тогда уж тема не закрыта. ПОКАЖИТЕ ПРИМЕР , где бы мой код вызвал ошибку. Раз уж Вы сами упомянули про ЕСЛИ - будьте любезны в полной мере это обосновать и привести примеры этих самых ЕСЛИ. Я, в отличии от Вас, не писал, что Ваш код нерабочий и вызывает ошибки при всяких "False". Так что жду от Вас пример, как от человека, очень тщательно рассматривающего каждое слово. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2011, 17:29 |
|
||
|
заиметь полное имя любого файла в переменной (VBA Excel)
|
|||
|---|---|---|---|
|
#18+
YudzhinИтак, нет такого "может, возвращает Variant" - ОНА ВОЗВРАЩАЕТ VARIANT!Как раз вот эта Ваша фраза и говорит о том, что Вы выцепили из моей фразы только то, что надо Вам, а не то, что написано. Я не отрицал, что функция возвращает Variant. Я написал, что я этот Variant привожу к нужному мне типу в переменной. Притом мое высказывание лишь поясняло, почему у меня написано "False", а не False. И пояснял я это не потому, что думал, что этого не знаете Вы, а потому, что это ФОРУМ и читать тему могут другие люди, которым это может понадобиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2011, 17:34 |
|
||
|
заиметь полное имя любого файла в переменной (VBA Excel)
|
|||
|---|---|---|---|
|
#18+
The_Prist, Хорошо, отвечу завтра. Пора домой. :) Напоследок я ешё раз скажу, что я БЫЛ НЕПРАВ, что Ваша процедура не работает и пояснил, из-за чего вышло недоразумение. Я решил разобраться и увидел в Immediate Window, что GetOpenFilename возвращает ПОЛНЫЙ путь! Поэтому если даже и выбрать файл False, то это ничего страшного. Просто Вы написали "False" - в кавычках, а это - строковая переменная. Это меня и сбило с толку. За это я извиняюсь, что не проверил. Вот так было бы яснее: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2011, 17:46 |
|
||
|
заиметь полное имя любого файла в переменной (VBA Excel)
|
|||
|---|---|---|---|
|
#18+
YudzhinВот так было бы яснее:Если бы Вы нормально об этом спросили - я бы пояснил как угодно, лишь бы донести суть. Но Вас чем-то задел не только этот код, но и слова "может" и прочее. Про то, что Вам что-то неясно или что-то сбило с толку я слышу впервые. Этой фразой: авторИ предлагаю изучить мат.часть в области того, какие типы данных хранятся в переменной в зависимости от их типа.не собирался как-то задеть Вас. Просто действительно это азы: переменная может хранить данные только тот типа, который ей присвоили, если это не переменная типа Variant. В моем коде переменных данного типа нет. И я даже не думал, что неявное преобразование мной типа данных может ввести в заблуждение. P.S. А FSO все же медленный в работе. И для инфо: Ваш код не будет работать в версии офиса младше 2003. Т.к. метод Application.FileDialog появился именно в 2003. Как ни прискорбно, но многие все еще работают на 2000... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2011, 17:56 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=37201572&tid=2177002]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
152ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 230ms |
| total: | 470ms |

| 0 / 0 |
