Unicode елемент във Visual Basic ( Word )

7 отговора 0 прегледа
#1

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 #2

Re: Unicode елемент във Visual Basic ( Word )



Щирлиц
Отговор
в отговор на Щиpлиц #3

Re: Unicode елемент във Visual Basic ( Word )

О дано да е това " е вие ги разбирате тези неща ", че ми писна от този проблем! Само още един въпрос, отметката трябва да е махната или сложена и ако това проработи ще мога ли да ползвам другия тип кавички?

п.с. Има ли книги по VBА или да ползвам тези който са за VB?

Отговор
в отговор на Dark Water #4

Re: Unicode елемент във Visual Basic ( Word )

Ами, определено трябва да е махната, та Word да не променя самоволно типа на кавичките.

И - да. Ако в това е бил проблема - значи след изключването на тази опция ще можеш да си ползваш каквито и да било кавички.

Кажи после дали от това е било.

Щирлиц
Отговор
в отговор на Щиpлиц #5

Re: Unicode елемент във Visual Basic ( Word )

Веднага щом го пробвам във понеделник на работа, ще пиша за резултата.

Отговор
в отговор на Щиpлиц #6

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

Отговор
в отговор на Dark Water #7

Re: Unicode елемент във Visual Basic ( Word )

Gambit_Dori.DatePol.text=Format(Date, "dd.MM.yyyy")
Gambit_Dori.HourPol.text=Format(Time, "HH:mm")

Пиша малко наизуст, пробвай, би трябвало да стане.

Щирлиц
Отговор
в отговор на Щиpлиц #8

Re: Unicode елемент във Visual Basic ( Word )

Малко да вдигнем темата. Първо искам да благодаря на Щиpлиц за оказаната до момента помощ, която беше на 100 % вярна и полезна. Та да си задам въпросите които сигурно са много ламерски, но няма как;

1. Имам документ който във footer-a има нещо подобно на таблица. Тя е от две полета със пет реда. Във нея се попълват разни имена, като всеки път различно подредени, във момента е направено да отиде на първото поле и да се появи меню за попълване. Натиска се името и скрипта те праща на долното поле. Проблема е, че като свършат полетата курсора отива на номера за страница, който също е във footer-a. Сега се процедира със мишката да отидеш на съседното поле и да продължиш. Във това няма нищо лошо, но все си мисля, че може да се направи само да ходи където трябва. И тук идва вашата помощ, как смятате възможно ли е това и ако да, как? Във главата ми се въртят мисли за boolmark-ове, по един във последен ред на лявото поле и във първи ред на дясното, но не знам дали това е възможно.

2. Второ нещо което се опитвам да направя е, да отворя едни документи със MS-Dos encoding, да сменя една дума със друга и да запиша този документ. За момента съм постигнал само заместването. Една подробност, документа трябва да се записва без да пита искам или не.

Ми това е, ако ми помогнете ще е супер, като по ми е належащо второто.

Отговор