Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.09.2010, 11:47   #1
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию Объеденить ячейки с разными стилями шрифта

Приветствую всех

вот такая задача возникла.Исходное форматирование должно быть сохранено
обрабатывается порядка 20 файлов типа книга 1,
результат в Книга 2.В Книга 1 порядка 300 ячеек так надо обработать.даже не представляю,как сделать по шустрому
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 08.09.2010, 11:55   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
даже не представляю,как сделать по шустрому
Для того, чтобы получить информацию о форматировании ячеек - потребуется открывать каждый файл, что не есть "шустро". Другого варианта не вижу. Поправьте меня, если я не прав.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 08.09.2010, 12:07   #3
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Все верно,не хочеться по символам перебирать.Думал,а вдруг есть еще вариант
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 08.09.2010, 12:33   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
...не хочеться по символам перебирать...
Мне не совсем понятно, что Вам требуется? Пусть, требуется объединить значение ячеек "A1" и "B1" в ячейку "C1", при этом сохранить форматирование.
Для примера, сохраним имя, тип и размер шрифтов исходных ячеек. Можно так:
Код:
Sub Test()
    [C1] = [A1] & [B1]
    With [C1].Font
        .Name = [A1].Font.Name
        .Size = [A1].Font.Size
        .Bold = [A1].Font.Bold
    End With
    With [C1].Characters(Start:=Len([A1]) + 1, Length:=Len([B1])).Font
        .Name = [B1].Font.Name
        .Size = [B1].Font.Size
        .Bold = [B1].Font.Bold
    End With
End Sub
Т.е. помещаем сцепленный результат в требуемую ячейку, устанавливаем свойства ячейки = свойствам 1-й, затем, зная длины строк обоих ячеек, устанавливаем свойства для той части ячейки, которая содержит значение 2-й исходной.
Естественно, можно контролировать и устанавливать и другие (необходимые) свойства. Но при этом мы не перебираем все подряд символы.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 08.09.2010, 13:15   #5
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Спасибо,но не все переносится,как надо
Добавил еще свойств,но курсив и подчеркивание не проходит
Код:
Sub Test()
    [C1] = [A1] & [B1]
    With [C1].Font
        .Name = [A1].Font.Name
        .Size = [A1].Font.Size
        .FontStyle = [A1].Font.FontStyle
        .ThemeFont = [A1].Font.ThemeFont
        .Bold = [A1].Font.Bold
        .Underline = [A1].Font.Underline
        
    End With
    With [C1].Characters(Start:=Len([A1]) + 1, Length:=Len([B1])).Font
        .Name = [B1].Font.Name
        .Size = [B1].Font.Size
        .Bold = [B1].Font.Bold
        .FontStyle = [B1].Font.FontStyle
         .ThemeFont = [B1].Font.ThemeFont
        .Underline = [B1].Font.Underline
         
    End With
End Sub
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 08.09.2010, 13:26   #6
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
курсив и подчеркивание не проходит
Попробовал. Проходит. Выбрось из кода строки .ThemeFont =...
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 08.09.2010, 13:34   #7
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

попробуйте на моем,не хочет.
Не пойдет.значит будет две ячейки.А строки правее объеденю
Вложения
Тип файла: rar Стиль.rar (10.7 Кб, 12 просмотров)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 09.09.2010, 05:51   #8
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Предложенный вариант будет корректно работать только в том случае, когда объединяемые ячейки имеют разные, но постоянные свойства. Т.е. шрифт, подчеркивание, "жирность" и т.д. применены ко всей ячейке целиком. В Вашем примере внутри ячеек есть разные свойства шрифта. Действительно, кроме посимвольного контроля выхода нет.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 09.09.2010, 06:22   #9
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

Я бы попробовал сохранить в XML и потом обрабатывать его ...
Aent вне форума Ответить с цитированием
Старый 09.09.2010, 12:58   #10
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Благодарю за информацию.Я смотрел в сторону XML,обычна так храню настройки Проблемма,к счастью,решена.
Хозяин файлов решил подкорректировать неточности в своих файлах.Теперь ячейки объеденять нет необходимости
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно Объеденить запросы MSD БД в Delphi 4 12.05.2010 11:07
Замена шрифта части ячейки bukarenko Microsoft Office Excel 2 25.03.2010 18:43
Фреймы как объеденить в один??? p1nk HTML и CSS 3 05.03.2010 16:19
Selection - как объеденить??? Sensygirl Microsoft Office Excel 8 05.10.2009 18:03
Сортировка ячейки Excel по цвету шрифта из Delphi dixieswing Помощь студентам 0 03.08.2009 16:57