Идею понял, Вот мой код, он выдает ошибку при больших числах, если бы можно было бы при ошибке перейти к следующему элементу(предотвратив появление ошибки:если ошибка, то просто перейти к следующему элементу).
Вот дела, мой код говорит, что В Шрифте MS Mincho 256 символов, А (таблица символов) на Windows 7 говорит что их больше 300, Почему так?Может быть в vba Шрифтах неполные шрифты(мало вероятно)!?!
Афигеть сколько работы и как сложно! И что, в этих результатах есть какая-то практическая польза? Хотя я себе как пример сохранил, может когда нибудь будет практическая польза от фрагментов этого кода Спасибо anvg
Игорь Работы не так уж и много константы и определения API взяты через copy/paste, основная идея отсюда , кое-что дописал. А пригодится, по моему мнению, может для определения есть ли требуемый диапазон юникода (языка) в данном шрифте (определяется в массиве GlyphRanges). Зачем же нужно само по себе количество символов и для меня загадка, может ТС сообщит?
Т.е. практически можно например сказать юзеру, что вот в этой ячейке выставленный фонт не совместим с кодом, т.к. не сможет корректно отобразить результат работы? Возможно... Но проще выставить молча кодом нужный фонт и не париться Ну или чтоб юзер совсем не отупел - пусть сам подумает, почему вместо кириллицы например звездочки и самолётики с шрифтом wingdings
Anvg, я скачал Ваш примерчик, у меня в коде красные фрагменты, vba ругается:
Цитата
The code in this project must be updated for use on 64 bit systems.Please review and update Declare statements and then mark them with the PtrSafe attribute.
Скажу, что на компьюторе: Windows 7, 64 bit, MS Office 2007
Ну или чтоб юзер совсем не отупел - пусть сам подумает
Согласен. Только чем более профессионален пользователь в своей области, тем проще с ним работать - ему важен смысл и учёт нюансов, а не визуальный жёсткий каркас. Он то сможет подобрать шрифт, а вот ..., для таких как раз и приходится программно подбирать, чтобы не дёргал, а почему у меня самолётики . Такой от жёсткой схемы отойти не сможет. Шаг влево вправо - всё смысл потерян. Кстати, судя по этой статье результат всё же не число символов в шрифте. Похоже, чтобы однозначно сказать - нужно читать описание файлов TrueType и OpenType и анализировать файл шрифта напрямую. usersuperpupsik Мне кажется или это на самом деле, вы меня обманываете с версией Excel? В Excel 2007 нет PtrSafe. Скорее всего у вас 64бит версия или 2010 или 2013. Для GetFontUnicodeRanges объявление будет
Для остальных скачайте и используйте. И не забудьте тип переменных hDC, hFont объявить как LongPtr и использовать CLngPtr(Application.Hwnd) как аргумент для GetDC. P. S. Вы так и не удовлетворили наше любопытство зачем вам нужно знать
Цитата
Как узнать количество символов в конкретном шрифте?
P. S. Вы так и не удовлетворили наше любопытство зачем вам нужно знать
Просто хочу узнать какой Font содержит больше всего, а какой меньше всего символов.
Цитата
Скорее всего у вас 64бит версия или 2010 или 2013
Вы правы, у меня MS Office 2010.При включении программы каждый раз показывает версию, как я не учел это!!! Я немного изменил Ваш код, anvg, и теперь всё работает.(Проверил на Windows 7 , 64 bit, MS Office 2010) Спасибо Вам Огромное, anvg, буду проверять шрифты...
Что ж, тогда успехов! Только не забудьте, что результат не физическое количество символов в шрифте, а количество символов юникода. То есть латинский алфавит, например, является базой для алфавитов многих языков, поэтому физические буквы a-z учитываются в каждом языковом диапазоне юникода. То есть, допустим 26 букв латиницы физически в шрифте, а шрифт поддерживает 10 языковых диапазонов юникода, тогда результат будет 260 символов.