Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Форма выбора файла. Добавлено: 29.09.04 18:42  

Автор вопроса:  Ruselus
Здравствуйте.
Мне вот приспичило в качестве переменной указывать имя файла с полным путем. Есть ли в VBA какая-нить стандартная формочка похожая на File.Open но чтобы просто возвращала полный путь с именем?


Ну и заодно еще пару повросов, чтобы не создавать новые темы.

Можно ли как нить в ExelXP (ну и др. офисные приложения) присобачить нормальный хелп, хотя бы от Office2k?
А то невозможно ниче найти и очень не удобно искать. =(

Есть ли какой нить способ разбить данные одной ячейки по нескольким, используя некий критерий?
Т.е. у меня есть ячейка в которой находится длинная строка (так называемая "Аналитика") в которой находится много данных (шифров) разделенных пробелом.
Если не понятно, то вот пример:
0101 ДОГОВОР№3476 29587 290480 ЗАО"ЧЕРЕЗЗАБОРНОГУИТ.Д."

Вот мне надо на автомате все это дело разбить по разным ячейкам. Пока что делаю так: копирую столбец с аналитикой в новый лист, сохраняю его в текстовый документ с разделителем табуляция, а потом делаю в рабочий лист импорт данных из этого текстового документа. Все это соответственно макросом...

Вопрос: может есть какой-нить более простой стандартный способ или у когонить уже есть код на VBA который это проделывает без юзания файлов.


Всем заранее фенкс.

Ответить

  Ответы Всего ответов: 12  

Номер ответа: 1
Автор ответа:
 User Unknown



Вечный Юзер!

ICQ: uu@jabber.cz 

Вопросов: 120
Ответов: 3302
 Профиль | | #1 Добавлено: 29.09.04 18:46
1. Workbooks.Open
2. MSDN
3. Поищи на сайте про парсинг строки на пробелы
4. Не знаю

Ответить

Номер ответа: 2
Автор ответа:
 Ruselus



Вопросов: 1
Ответов: 3
 Профиль | | #2 Добавлено: 29.09.04 18:49
Спасибо.
По первому уже подсказали:
Application.GetOpenFilename

2. А что такое MSDN?

3. спасибо.

4. Вопросов было всего 3. =))) Все равно спасибо.

Ответить

Номер ответа: 3
Автор ответа:
 Александр



Разработчик Offline Client

ICQ: 204034 

Вопросов: 106
Ответов: 1919
 Профиль | | #3 Добавлено: 29.09.04 18:57
:))
2) MSDN - это микрософтовская справочная система по языкам, находящимся в Visual Stud'ии
3) Попробуй функцию Split

Ответить

Номер ответа: 4
Автор ответа:
 Stas2k



Вопросов: 6
Ответов: 16
 Профиль | | #4 Добавлено: 30.09.04 10:33
Можно определить сколько пробелов (N) в строке. Зная позицию каждого пробела N+1 раз выдернуть из этой строки функцией Mid каждую отдельную строку. Выдернутое значение можно либо присваивать временным переменным (особенно если пробелов в каждой исходной строке одинаково, например 5) и потом разнести по ячейкам, либо сразу после выдергивания загонять в ячейки листа. И не нужны текстовые файлы.

Ответить

Номер ответа: 5
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #5
Добавлено: 30.09.04 13:29
Stas2k, со Split оно красивее и понятнее выглядит, хотя всё ты верно сказал.

2. MSDN в данном контексте звучит как RTFM :) Да, поиск не такой, как раньше. Но меня в VBA встроенная справка + Object Browser вполне устраивают. Да, правда накопилась у меня уже приличная коллекция документаци. У VBA с VB так много общего!

Ответить

Номер ответа: 6
Автор ответа:
 Ruselus



Вопросов: 1
Ответов: 3
 Профиль | | #6 Добавлено: 30.09.04 21:16
Ну мне пока именно VBA нужен и чаще всего приходится обращатся к обьектам специфическим для него...

Тут еще несколько вопросов поднабралось за рабочий день. Помогите если не влом. =)

1. Можно ли как нить отключить обновление экрана Экселя во время выполнения скрипта? А то седня дописал основной модуль обработки и запустил его сдуру сразу на все 250к позиций... =) Пол часа он у меня все это перелопачивал. Потом впринципе нашел как оптимизировать, до 4-х минут, но все равно вот думаю если отключить обновление - авось побыстрее будет...

2. Можно ли как нить отслеживать и перехватывать ошибки? Т.е. уже во время выполнния программы... Чтобы она при возникновении ошибки не вылетала а просто игнорила эту строку и работала дальше. Я точно знаю что эта строка у меня не обязательная.
Ну это я просто так, на будущее.
А возник вопрос у меня как. Долго думал, как можно проверить есть файл на месте (заранее задавал путь) или его там нету. Придумал пробывать его атрибуты считать (думал - считается - все ок, а нет - так переспросим у пользователя, а правильно ли он путь указал), но если путь указан не верно, прога просто вылетает в дебуг.

3. Тут же возникае вопрос. А как можно проверить наличие файла по определенному пути?

4. Как можно определить длинну столбца или строки? Т.е. мне нужно задать крайние границы обработки ячеек но я не знаю как. Пока ввожу это вручную. Пробывал выделять столбец и применять к нету count но что-то у меня не получилось. =((

5. Можно ли заставить Эксель сохранить файл поверх другого, но чтоб он даже не спрашивал подтверждения?

Всем огромный фенкс, особенно тем, кому не влом отвечать на мои вопросы. =)

З.Ы. А вот я тут думал, MSDN наверное 100% на инглише. А нет никакой документации где бы обьяснялись основные свойства и назначения функций и объеков на русском? А то я читать на английском то читаю, но как-то медленно, из-за этого сильно дело тормозится...
Справочник там какой электронный или еще что...

Ответить

Номер ответа: 7
Автор ответа:
 ActiveX



Вопросов: 0
Ответов: 73
 Профиль | | #7 Добавлено: 30.09.04 22:33
Цитата :
0101 ДОГОВОР№3476 29587 290480 ЗАО"ЧЕРЕЗЗАБОРНОГУИТ.Д."
Вот мне надо на автомате все это дело разбить по разным ячейкам

Ответ :
Как много гениев в одном месте собралось, но никто может применить самый простой и действенный метод :

ActiveCell.TextToColumns Destination:=ActiveCell
' возможно потребуются дополнительные параметры (см. help)
___________________
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас.

Ответить

Номер ответа: 8
Автор ответа:
 Stas2k



Вопросов: 6
Ответов: 16
 Профиль | | #8 Добавлено: 02.10.04 13:55
Отключение обновления экрана: Application.ScreenUpdating=False
Чтобы твоя программа работала быстрее сделай так, чтобы не перемещаться по ячейкам, а использовать ссылки на них. Например, присвоить ячейке "C2" значение 328 можно так: ActiveSheet.Cells(2,2)=328. Также можно загонять формулы и считывать атрибуты ячеек.
Отлов ошибок с помощью On Error GoTo Err, также читай справку.
Отключение вывода предупреждающих сообщений: Application.DispayAlerts=False
To ActiveX: Хорошо, что ты знаешь "самый простой и действенный способ", но зачем ёрничать? Форум для того и есть, чтобы обмениваться опытом.

Ответить

Номер ответа: 9
Автор ответа:
 ActiveX



Вопросов: 0
Ответов: 73
 Профиль | | #9 Добавлено: 02.10.04 14:16
To Stas2k :
Сарказм необходим для того, чтобы заставить людей изучать MS Excel дабы впоследствии на форуме не возникало "бредовых" ответов на элементарные вопросы, которые можно решить стандартными средствами, даже не прибегая к помощи VBA.

Ответить

Номер ответа: 10
Автор ответа:
 night-roll



Вопросов: 36
Ответов: 326
 Профиль | | #10 Добавлено: 02.10.04 15:54
а ещё есть архив этого форума, где можно найти ответы на некоторые вопросы (а может быть и все, пользуясь кнопочкой (см. ниже)

To Ruselus: не рекомендую задавать вопросы, если ответы на них ты собираешься использовать не сразу (а так, через время), по своему опыту могу сказать, что забывается или зачастую долго не понимается.
----------------------------------------
только, если ты вынашиваешь свой вопрос-проблему-затруднение, только тогда ты поймёшь его(её) как надо, а ответ будет как сладкий пряник после голодовки.
P.S. давайте проблемы мучать:)

Ответить

Номер ответа: 11
Автор ответа:
 Ruselus



Вопросов: 1
Ответов: 3
 Профиль | | #11 Добавлено: 02.10.04 17:35
To ActiveX => Большое спасибо за ответ.
Однако чтобы прервать ваш спор, вставлю цитату моего вопроса...

Вопрос: может есть какой-нить более простой стандартный способ или у когонить уже есть код на VBA который это проделывает без юзания файлов.


Т.е. потому и спросил потому что не знал. =)


To => night-roll
Да не, эти все вопросы как раз и возникают в процессе моей попытки написать конкретную прогу. К томуже я уже давно взял в привычку, все полученые мной ответы складировать в свой личный FAQ.

А ищу я обычно не на форумах а вообще в инете, некоторые вещи увы найти не удается. =(
Видимо из-за неправильной постановки вопроса.

Ответить

Номер ответа: 12
Автор ответа:
 ActiveX



Вопросов: 0
Ответов: 73
 Профиль | | #12 Добавлено: 02.10.04 20:50
To Ruselus
Вопросы потому и задаются, что нет ответа или ответ не устраивает человека их задавшего, так что я сразу понял что именно Вам нужно поэтому и вынужден был вмешаться.
P.S. Спора никакого нет. А есть (было) послание человека (Stas2k) чьё самолюбие было ущемлено.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам