Spreadsheet 9.0, Excel and VBA ?!?

8 отговора 319 прегледа
#1

Spreadsheet 9.0, Excel and VBA ?!?

Здр...
Имам пак едно изпростело въпросче: то се отнася до Spreadsheet таблиците, диалогови прозорци и таблица на Excel... Значи в диалогов прозорец съм сложил Spreadsheet таблица, която по определен критерии чете стойностти от Excel-ската таблица и ги показва ( напр. само клетки с отр. стойност )... До тук всичко е усмихнато и слънчево, но в един момент - опа, греда
това работи само на РС, което е в нас и на 1 служебно РС... на другото сл. РС ми дава, че не може да зареди дадения обект на тази машина защото не бил наличен или нещо от този род... Като отворя референциите пък виждам, че ми дава "Липсва: Microsoft Office XP Web Components", и ми прави впечатление, че на 2-те РС-та на които върви без проблем тази референция я има в наличност... но ако това е проблема не мога да стопля как да го оправя - опитвах се с преинсталация на Excel-а ама ниц и ако някой има идея как да го оправя - да помага, че го закъсах ....
А и още нещо да питам: искам да направя диалог, в който при грешка, т.е. да дава сведения, като напр. : "В лист СКЛАД на Excel на ред еди кой си кода е грешен" или "Въведен е несъществуващ код на стока на ред еди кой си" или нещо от този род... 10х предварително !!!

Отговор
в отговор на CCa #2

Re: Spreadsheet 9.0, Excel and VBA ?!?

Мисля, че на тези компютри, на които не ти работи ти липсва въпросния ocx или dll. Направи следното, може да помогне:

1.На някой от компютрите, на които работи, в референциите (препратките), кликни върху въпросната препратка и виж към кой файл е тя (location).

2.Копирай въпросния файл от машината X, на която го има, на машината Y, на която искаш да го има.

3.На машината X с помощта на команда regsvr32 "път и име на файла" регистрирай копирания в предната точка файл.

Не съм сигурен, че работи, тъй като не съм го правил с Excel, но с VB6 работи, така че имам основание да смятам, че и тук ще стане.

Отговор
в отговор на iassen #3

Re: Spreadsheet 9.0, Excel and VBA ?!?

10 x
Ще го пробвам и ако стане ще черпя

Отговор
в отговор на CCa #4

Re: Spreadsheet 9.0, Excel and VBA ?!?

Няма нужда да черпиш. Достатъчно е да кажеш дали ти е свършило работа.

Отговор
в отговор на iassen #5

Направо съм бесен !!!

Здр.
Оправих референциите, ама сега реши да ми дава "Run-time error '13': Type mismatch." - на баба му трънките... Код, който работи перфектно на другата машина тук пак не тръгва... кода е следният:

Dim st1 As Spreadsheet
Set st1 = Spreadsheet1

Където Spreadsheet1 е името на Spreadsheet таблицата, вградена в немодален диалог...

Като го дебъгна ми дава, че st1 сочи към едно голямо НИЩО !!!
Четох някакъв help в MSDN, ама нищо не можах да си изясня... Помагай приятелю, че това е на път да ми скъса нервите - а не го ли оправя, не мога да продължавам напред - цялата обратна връзка с потребителя ми е базирана на тия отврат Spreadsheet таблици...

P.S. Ако имаш ICQ днес вечерта(неделя - 17.04.05) към 20:00ч ще съм на линия и ако имаш време и идея какво да правя, може да се чуем - пък ако ли не, драсни някой ред тука... 10х!!!

Отговор
в отговор на CCa #6

Re: Направо съм бесен !!!

Чак сега видях съобщението ти. Нямам ICQ, но имам SKYPE. Ако ти пък нямаш SKYPE тогава ще продължим да използваме този форум (в случай, че все още имаш проблеми).

1. От това, което си написал виждам, че използваш тип променлива "Spreadsheet", който на мен ми е непознат. Аз работя с тип "Worksheet".

2. Ако приема, че типа "Spreadsheet" е подобен на "Worksheet", то тогава това, което си написал ще ти даде грешката, която споменаваш, тъй като st1 е от тип "Spreadsheet", а Spreadsheet1 е от тип "String" (доколкото разбирам), т.е. различни типове и от там идва грешка "Type mismatch". Това, което искаш да направиш, аз бих го направил по следния начин:
_____________________________
Dim st1 As Worksheet

Dim Spreadsheet1 As String
Spreadsheet1 = "Sheet1"
Set st1 = ThisWorkbook.Worksheets(Spreadsheet1)

_____________________________
Това е засега. Дръж ме в течение.

Ясен.

Отговор
в отговор на iassen #7

Re: Направо съм бесен !!!

Не, не. И аз бях разбрал почти същото, но Spreadsheet 9.0 е външен контрол. Прилича на Worksheet, но го е сложил върху потребителска форма, и има име Spreadsheet1. Подобно на всички визуални контроли и този си има свойства, методи и събития. Така че декларацията която е направил привидно е вярна, и работи на едната му машина. Аз пробвах същото - и при мен работи. Но съм с Office XP, и нещата може да опират до актуализация на Office.


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

Re: Направо съм бесен !!!

Разгледах го повърхностно този контрол, но при мен той е 10.0, но принципно това, което мисля да предложа не зависи от версията му, а именно (освен ако актуализацията не свърши работа):

set st1 = containingForm.spreadSheet1


Ясен

Отговор
в отговор на CCa #9

Re: Spreadsheet 9.0, Excel and VBA ?!?

Имаш 2 варианта ако искаш твоята програма да върви на много машини с различни версии.

1. Реши коя сте е най-старата версия на МС офис дето искаш твоята програма да върви и си я референсваш директо като файл - например Office8.OLB ('97 & up)

2. Не позваш типове за променливите ( Late binding) , Ще вървиш с максимум версии, обаче нямаш IntelliSense - да ти показва възможните методи на класа.

Dim MyApp as Variant
Dim MyWorkBook as Object
Dim MySheet
Dim v

Set MyApp = CreateObject("Excel.Application")
Set MyWorkBook = StartExcel.Workbooks.Open(tfile)
Set MySheet = MyWorkBook.Sheets(1)

v = MySheet .Range("DataUrl").Value

Отговор