Unicode елемент във Visual Basic ( Word )
7 отговора
0 прегледа
Unicode елемент във Visual Basic ( Word )
Моя проблем беше разискван във форума на HardwareBg, но не се стигна до решаване му. Затова се обръщам към вас тъй като това е форум точно за VB. Правя copy-paste за да не се налага за преразказвам всичко. Благодаря предварително.
Dark Water;
Първо да уточня че става въпрос за скриптове писани на вградения visual basic във Word 2003. Та тези скриптове обработват определени текстове и извършват разни работи, които не са интересни тук. Един елемент от тази обработка е, че при определена последователност от букви скрипта слага кавички. При настоящото положение скрипта слага ( “ или по Unicode 201c ), но ми се наложи да преинсталирам единия от компютрите и сега горкия показва това ( „ или по Unicode 201e ). Всичко това при един и същи ред, а именно WordBasic.EditReplace Find:="****", Replace:=Chr$(34), ReplaceAll:=1, Wrap:=1 който по моите разбирания би трябвало да да си вземе от ANSII таблицата ето тези кавички ( " ), въобще мазало. След кратко мислене реших ,че всички тези кавички са грешни и най-подходящите ще са ето тези ( ” или по Unicode 201d ), и тук настана проблем. Според хелпа на VB ( аз не съм ги писал тези скриптове обаче ми и така по хелпа по хелпа що годе се оправямбеше казано, че са мое задължение ) за да вкарам Unicode елемент вместо Chr$(34) трябва да е ChrW(кода на елемента). Да де ама не, както и да го напиша винаги ми дава грешка във синтаксиса. Така че от тук ако можете да ми помогнете, ще съм ви много благодарен. Това 201D съм го взел от [линк] . Обработката става с TimeNewRoman. Ако имате още въпроси веднага ще отговоря.
Edit: Виждам че във форума няма как да излязат тези кавички които съм показал, но могат да се видят във Character Map, като там се водят U+ кода.
Edit2: Да, опитва се 201D да вкарам като параметър. Тази вечер съм на работа и ще пробвам както ти си ми показал и ще видя дали ще се получи, и ако не ще напишя точно коя е грашката. Във хелпа на VB никъде не пише, че трябва да е десетична БС, доста тъпо.
Zstoev;
Би ли казал каква точно грешка ти дава и каде?
Опитваш да ползваш 201D като параметър на ChrW ли?
Ако е така трябва да преобразуваш 201D в десетична бройна система.
Пробвай с това Replace:=ChrW(8221)
Dark Water;
Така този код който ми даде го прие програмата само, че проблема остана. Продължава да си слага 201Е и не се съобразява със кода. Когато обаче е във отделен скрип, който слага само кавички всичко е ок. Въобще от къде ги взима тея кавички незнам и как така Word-a игнорирва кода незнам. Ако имаш идея помощ!
Icaci;
Моите 2 евроцента по въпроса: вероятно ставаш жертва на регионалните настройки на Word-а. Американците и англичаните слагат горни отваряща и затваряща кавички, а в България е прието отварящата кавичка да е долна. Когато си задал Bulgarian в регионалните настройки на Windows, то Ворд се съобразява донякъде с тях и вероятно замества отварящата горна кавичка с долна такава. По време на писане го прави със сигурност, а защо го прави и при заместване - идея нямам
Шестнадесетичните константи във Visual Basic и VBA се пишат като &H<числото>. В твоя случай: ChrW(&H201C), ChrW(&H201E) и т.н.
Dark Water;
Първо искам да се извиня, че не писах няколко дена, но просто не бях на работа и нямаше как да проверя дали е вярно това за регионалните настройки, и отговора е явно не. И на двата компютъра са едни и същи, България, България, България. Явно и това не е. Пробвах със изключване на autocorrect, autoformat и това не оправи проблема. Вече се изчерпих от идеи. Някой ако е работил със VB да даде някаква идея?
Dark Water;
Първо да уточня че става въпрос за скриптове писани на вградения visual basic във Word 2003. Та тези скриптове обработват определени текстове и извършват разни работи, които не са интересни тук. Един елемент от тази обработка е, че при определена последователност от букви скрипта слага кавички. При настоящото положение скрипта слага ( “ или по Unicode 201c ), но ми се наложи да преинсталирам единия от компютрите и сега горкия показва това ( „ или по Unicode 201e ). Всичко това при един и същи ред, а именно WordBasic.EditReplace Find:="****", Replace:=Chr$(34), ReplaceAll:=1, Wrap:=1 който по моите разбирания би трябвало да да си вземе от ANSII таблицата ето тези кавички ( " ), въобще мазало. След кратко мислене реших ,че всички тези кавички са грешни и най-подходящите ще са ето тези ( ” или по Unicode 201d ), и тук настана проблем. Според хелпа на VB ( аз не съм ги писал тези скриптове обаче ми и така по хелпа по хелпа що годе се оправямбеше казано, че са мое задължение ) за да вкарам Unicode елемент вместо Chr$(34) трябва да е ChrW(кода на елемента). Да де ама не, както и да го напиша винаги ми дава грешка във синтаксиса. Така че от тук ако можете да ми помогнете, ще съм ви много благодарен. Това 201D съм го взел от [линк] . Обработката става с TimeNewRoman. Ако имате още въпроси веднага ще отговоря.
Edit: Виждам че във форума няма как да излязат тези кавички които съм показал, но могат да се видят във Character Map, като там се водят U+ кода.
Edit2: Да, опитва се 201D да вкарам като параметър. Тази вечер съм на работа и ще пробвам както ти си ми показал и ще видя дали ще се получи, и ако не ще напишя точно коя е грашката. Във хелпа на VB никъде не пише, че трябва да е десетична БС, доста тъпо.
Zstoev;
Би ли казал каква точно грешка ти дава и каде?
Опитваш да ползваш 201D като параметър на ChrW ли?
Ако е така трябва да преобразуваш 201D в десетична бройна система.
Пробвай с това Replace:=ChrW(8221)
Dark Water;
Така този код който ми даде го прие програмата само, че проблема остана. Продължава да си слага 201Е и не се съобразява със кода. Когато обаче е във отделен скрип, който слага само кавички всичко е ок. Въобще от къде ги взима тея кавички незнам и как така Word-a игнорирва кода незнам. Ако имаш идея помощ!
Icaci;
Моите 2 евроцента по въпроса: вероятно ставаш жертва на регионалните настройки на Word-а. Американците и англичаните слагат горни отваряща и затваряща кавички, а в България е прието отварящата кавичка да е долна. Когато си задал Bulgarian в регионалните настройки на Windows, то Ворд се съобразява донякъде с тях и вероятно замества отварящата горна кавичка с долна такава. По време на писане го прави със сигурност, а защо го прави и при заместване - идея нямам
Шестнадесетичните константи във Visual Basic и VBA се пишат като &H<числото>. В твоя случай: ChrW(&H201C), ChrW(&H201E) и т.н.
Dark Water;
Първо искам да се извиня, че не писах няколко дена, но просто не бях на работа и нямаше как да проверя дали е вярно това за регионалните настройки, и отговора е явно не. И на двата компютъра са едни и същи, България, България, България. Явно и това не е. Пробвах със изключване на autocorrect, autoformat и това не оправи проблема. Вече се изчерпих от идеи. Някой ако е работил със VB да даде някаква идея?
Re: Unicode елемент във Visual Basic ( Word )
О дано да е това " е вие ги разбирате тези неща ", че ми писна от този проблем! Само още един въпрос, отметката трябва да е махната или сложена и ако това проработи ще мога ли да ползвам другия тип кавички?
п.с. Има ли книги по VBА или да ползвам тези който са за VB?
п.с. Има ли книги по VBА или да ползвам тези който са за VB?
Re: Unicode елемент във Visual Basic ( Word )
Ами, определено трябва да е махната, та Word да не променя самоволно типа на кавичките.
И - да. Ако в това е бил проблема - значи след изключването на тази опция ще можеш да си ползваш каквито и да било кавички.
Кажи после дали от това е било.
Щирлиц
И - да. Ако в това е бил проблема - значи след изключването на тази опция ще можеш да си ползваш каквито и да било кавички.
Кажи после дали от това е било.
Щирлиц
Re: Unicode елемент във Visual Basic ( Word )
Веднага щом го пробвам във понеделник на работа, ще пиша за резултата.
Re: Unicode елемент във Visual Basic ( Word )
Първо искам да благодаря, че моя проблем беше решен на 100 %. Благодаря! Вече си ползвам кавичките които исках. Второ искам ако имаш желание да ми помогнеш със още нещо от VB. Става въпрос за една Форма. Използвам я за да попълва разни работи във едни документи ( Word ), като дата, час, инициали и т.н. Значи със самата форма се справих, но има нещо искам да попитам дали може да се направи. Става въпрос за датата и часа. Във момента съм стигнал до това когато формата излиза във съответните полета да има дата и час, но във грешен формат. Часа например 23.45.05, а на мен ми трябва без секундите, датата излиза 10.7.2007 г., а на мен ми трябва месеца да е 07 „ за г. ми е все тая”, така че ако можеш да ми помогнеш
. Показвам как съм успял да вкарам датата и часа „това го изкопирах от друга форма”
Gambit_Dori.НомерНомер.text=””
Gambit_Dori.DatePol.text=Date
Gambit_Dori.HourPol.text=Time
Gambit_Dori.Initials.text=””
Gambit_Dori.Show
Gambit_Dori.НомерНомер.text=””
Gambit_Dori.DatePol.text=Date
Gambit_Dori.HourPol.text=Time
Gambit_Dori.Initials.text=””
Gambit_Dori.Show
Re: Unicode елемент във Visual Basic ( Word )
Gambit_Dori.DatePol.text=Format(Date, "dd.MM.yyyy")
Gambit_Dori.HourPol.text=Format(Time, "HH:mm")
Пиша малко наизуст, пробвай, би трябвало да стане.
Щирлиц
Gambit_Dori.HourPol.text=Format(Time, "HH:mm")
Пиша малко наизуст, пробвай, би трябвало да стане.
Щирлиц
Re: Unicode елемент във Visual Basic ( Word )
Малко да вдигнем темата. Първо искам да благодаря на Щиpлиц за оказаната до момента помощ, която беше на 100 % вярна и полезна. Та да си задам въпросите които сигурно са много ламерски, но няма как;
1. Имам документ който във footer-a има нещо подобно на таблица. Тя е от две полета със пет реда. Във нея се попълват разни имена, като всеки път различно подредени, във момента е направено да отиде на първото поле и да се появи меню за попълване. Натиска се името и скрипта те праща на долното поле. Проблема е, че като свършат полетата курсора отива на номера за страница, който също е във footer-a. Сега се процедира със мишката да отидеш на съседното поле и да продължиш. Във това няма нищо лошо, но все си мисля, че може да се направи само да ходи където трябва. И тук идва вашата помощ, как смятате възможно ли е това и ако да, как? Във главата ми се въртят мисли за boolmark-ове, по един във последен ред на лявото поле и във първи ред на дясното, но не знам дали това е възможно.
2. Второ нещо което се опитвам да направя е, да отворя едни документи със MS-Dos encoding, да сменя една дума със друга и да запиша този документ. За момента съм постигнал само заместването. Една подробност, документа трябва да се записва без да пита искам или не.
Ми това е, ако ми помогнете ще е супер, като по ми е належащо второто.
1. Имам документ който във footer-a има нещо подобно на таблица. Тя е от две полета със пет реда. Във нея се попълват разни имена, като всеки път различно подредени, във момента е направено да отиде на първото поле и да се появи меню за попълване. Натиска се името и скрипта те праща на долното поле. Проблема е, че като свършат полетата курсора отива на номера за страница, който също е във footer-a. Сега се процедира със мишката да отидеш на съседното поле и да продължиш. Във това няма нищо лошо, но все си мисля, че може да се направи само да ходи където трябва. И тук идва вашата помощ, как смятате възможно ли е това и ако да, как? Във главата ми се въртят мисли за boolmark-ове, по един във последен ред на лявото поле и във първи ред на дясното, но не знам дали това е възможно.
2. Второ нещо което се опитвам да направя е, да отворя едни документи със MS-Dos encoding, да сменя една дума със друга и да запиша този документ. За момента съм постигнал само заместването. Една подробност, документа трябва да се записва без да пита искам или не.
Ми това е, ако ми помогнете ще е супер, като по ми е належащо второто.