Мастер текста в Excel
Одним из решений стоящей передо мной задачи (суть, суть которой, на мой взгдляд, пока не существенна) является использование возможностей мастера текста, а именно разбиение данных на ячейки фиксированной ширины.
После копирования данных из внешнего (html) файла на странице в Excel создается один столбец ячеек. Однако, по смыслу он должен быть разбит на несколько (всякий раз по-разному) столбцов фиксированной ширины.
Я точно знаю, что Excel имеет такую возможность, которая реализована при открытии текстового файла при помощи мастера текстов. Однако, я не хочу сохранять результаты копирования в текстовый файл, т.к. при этом пропадает важная для меня цветовая информация.
По всей видимости, подобный механизм может быть реализован средствами VBA, однако, моих возможностей не хватает для этого.
Help me pls!
Господа!
Одним из решений стоящей передо мной задачи (суть, суть которой, на мой взгдляд, пока не существенна) является использование возможностей мастера текста, а именно разбиение данных на ячейки фиксированной ширины.
После копирования данных из внешнего (html) файла на странице в Excel создается один столбец ячеек. Однако, по смыслу он должен быть разбит на несколько (всякий раз по-разному) столбцов фиксированной ширины.
Я точно знаю, что Excel имеет такую возможность, которая реализована при открытии текстового файла при помощи мастера текстов. Однако, я не хочу сохранять результаты копирования в текстовый файл, т.к. при этом пропадает важная для меня цветовая информация.
По всей видимости, подобный механизм может быть реализован средствами VBA, однако, моих возможностей не хватает для этого.
Help me pls!
Все что ты выбираешь в мастере импорта текстовых файлов реализуется через следующую функцию: Application.Workbooks.OpenText
В твоем случае (для разбиения текста в столбце) надо использовать: Selection.TextToColumns - работает почти также
Справка там подробная, правда некоторые моменты могут вызвать трудности, я например целый день разбирался с параметром FieldInfo из Workbooks.OpenText , чтобы он правильно работал.. :-(
Справка там подробная, правда некоторые моменты могут вызвать трудности, я например целый день разбирался с параметром FieldInfo из Workbooks.OpenText , чтобы он правильно работал.. :-(
Спасибо за пояснение!
Но мне пока с трудом удаются простые функции в VBA - не говоря уже о тонкостях, с которыми зубры Visual Basik разбираются целыми днями!!!
А нет ли решения по проще?
Спасибо за пояснение!
Но мне пока с трудом удаются простые функции в VBA - не говоря уже о тонкостях, с которыми зубры Visual Basik разбираются целыми днями!!!
А нет ли решения по проще?
Зубры это к Cutty Sark :)
Функция есть функция, все равно с какой-нибудь придется разбираться и с этой обязательно все получиться ...
Ну уж если хочется по-другому, то я вижу только пока самый тупой вариант, все делать самому, вручную, т.е.:
1. Добавить пустые столбцы, куда тебе надо.
2. Считать значение из ячейки.
3. Проанализировать, разбить его на несколько строк. переменных (с помощью left, mid, InStк и пр.)
4. Присвоить ячейке каждого из столбца нужный кусок.
5. Опуститься на строку ниже и все повторить (с п. 2) теперь уже для этой ячейки.
Не знаю, что для тебя будет проще .... (:)-)
Не знаю, что для тебя будет проще .... (:)-)
Действительно, простое решение - самое лучшее!
Символы в строке разделены пробелами - и сумма символов и пробелов во всех ячейках одинакова!
Т.е. легко можно растащить ячейку на отдельные символы, при этом сохранится соответствие столбцов!
Единственное - не совпадает цветовая палитра (некоторые символы в ячейке выделяются красным или серым цветом), но с этим уже ничего не поделаешь!
Спасибо за совет, если придет в голову мысль как можно автоматизировать распознание цвета отдельного символа в ячейке, напиши, пожалуйста!
Спасибо за совет, если придет в голову мысль как можно автоматизировать распознание цвета отдельного символа в ячейке, напиши, пожалуйста!
Для этого можно использовать следующее свойство объекта Range:
Worksheets("Sheet1").Range("B1").Characters(5, 5).Font.(Color/ColorIndex/ и т.д.)
Т.е. объект Characters возвращает указанное число символов из ячейки и позволяет устанавливать/просматривать их формат: цвет, шрифт, жирность и т.д.
Так на чем остановилась дискуссия? С TextToColumns я работал, так что могу подсказать, если еще надо...
Ну вот, стоит приболеть на три дня, как сразу столько интересного. :)
Так на чем остановилась дискуссия? С TextToColumns я работал, так что могу подсказать, если еще надо...
Я рад, чтоты поправился!
Надо, то надо, но пока, я считаю, что проще поправить ручками несколько циферок, чем разбираться с новым для меня VBA.
Однако, если дело дойдет до передачи файла другим людям, то, видимо, придется доводить его до ума...
Я не знаю, чем вызвана моя боязнь VBA (хотя прошло уже достаточно много времени):
- то ли, моим нежеланием тратить на это свое время (ведь одними вашими советами сыт не будешь - тут надо самому землю рыть...);
- то ли отвращением, которое я испытываю к предупреждению о безопасности при открытии файла с макросами (я знаю как его отключить!);
- то ли желанием использовать богатство стандартных возможностей Excel - а оно достаточно велико;
- несмотря на то, что я постоянно натыкаюсь на его границы, и мне приходится думать и спрашивать советов как решить проблему подручными средствами;
До сих пор мне удавалось решить большинство вопросов средствами Excel; конечно, не так красиво, как это могло бы выглядеть в VBA, но тем не менее удачно.
Еще раз благодарю всех за помощь.
Буду рад любым высказываниям и предложениям в рамках этой темы.
А по поводу защиты - я ее отключил. 99,9% общаюсь со своими собственными макросами, поэтому она мне и не нужна. А оставшиеся 0,01% можно и Касперским предпровериться... 8)
Да, кстати, при открытии хтмл-файла в 97-м и 2000-м Экселе результат может существенно отличаться - сам неоднократно с этим сталкивался. Об этом тоже лучше помнить.