Отговори на тема  [ 5 мнения ] 
Въпрос за VB 2005 
Автор Съобщение
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Нед Юли 22, 2007 8:57 pm
Мнения: 607
Местоположение: Белград
Мнение Въпрос за VB 2005
Свалих от някакъв сайт код за писане в Excel от VB2005. Но ми дава грешка следният ред:

Private Sub cmdLoad_Click()

Можете ли да кажете с какво трябва да се замени. Убих се да ровя в хелпа, но засега е без резултат.


Чет Фев 18, 2010 8:29 pm
Профил WWW
Ранг: Популярен
Ранг: Популярен

Регистриран на: Съб Ное 28, 2009 5:50 am
Мнения: 391
Местоположение: Варна
Мнение 
Мисля, че това е функция, която се изпълнява при цъкане на бутон. Провери дали имаш бутон на име "cmdLoad" :idea:


Чет Фев 18, 2010 10:24 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Май 01, 2009 4:01 pm
Мнения: 1438
Мнение 
Това е процедура която се изпълнява при кликването на бутон cmdLoad
Най-вероятната причина е да нямаш бутон с име cmdLoad

Иначе процедурата започва с Private Sub ... и свършва с End Sub и някъде между тях е грешката.
Постави най-горе в страницата на кода Option Explicit и ако има грешка в някоя променлива компилаторът ще я посочи.
Ако ще работиш с Excel трябва да отидеш в References и трябва да маркираш Microsoft Excel 10.0 Object Library (или която там версия имаш инсталирана)
Ако искаш да прескочиш грешката и програмата да се изпълни - веднага под Private Sub cmdLoad_Click() напиши On Error Resume Next
но това просто ще игнорира грешката и ако е нещо важно програмата пак няма да работи коректно.

Каква точно грешка изписва ?


Пет Фев 19, 2010 1:25 am
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Нед Юли 22, 2007 8:57 pm
Мнения: 607
Местоположение: Белград
Мнение 
Да... Бутон трябва да е. Когато направя такъв бутон, се появява точно тази процедура. Само ми сменя грешката. Този VB почти никак не ми е ясен и в момента съм свалил куп примерни проекти, за да видя как трябва да стане. Иначе целта е следната: Имам две таблици в Excel. В колона A на единия файл са записани някакви номера и срещу тях съответни имена. През серийния порт се прочита номер и се прави проверка по цялата колона А за съответствие. Когато се намери такова, копира се името срещу номера от колона В и се вкарва в първия свободен ред на колона А на втората таблица. Срещу него в колона В се записва текущият час.


Пет Фев 19, 2010 11:24 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Май 01, 2009 4:01 pm
Мнения: 1438
Мнение 
Това ми прилича на нещо като система за контрол на достъпа. Предполагам, че това е училищно задание защото е по-удобно да се използва ACCESS за съхраняване на картите, имената и времето на достъп. При EXCEL има някой особености най-вече при запис в клетките а и отварянето дори на празен фаил е доста по-бавно отколкото на ACCESS. Това не е разумен вариант за такъв проект освен ако не е с учебна цел. Ще ти покажа как да отваряш фаил и да заредиш worksheet, как да прочетеш съдържанието на дадена клетка и как след това да направиш запис в друга клетка и да запаметиш промените. Ако напишеш какъв четец ще се използва мога да ти покажа и как да работиш с RS232. Останалото трябва да навържеш сам.

Правиш нов проект и от References трябва да маркираш Microsoft Excel 10.0 Object Library

Option Explicit
'Декларираме променливи
Dim ExcelApp As Excel.Application
Dim ExcelWorkbook As Excel.Workbook
Dim ExcelWorksheet As Excel.Worksheet

'При отваряне на формата отваряме и фаила
Private Sub Form_Load()
Set ExcelApp = GetObject("", "excel.application")
ExcelApp.Visible = False
Set ExcelWorkbook = Excel.Workbooks.Open("C:\file_name.xls")
Set ExcelWorksheet = ExcelWorkbook.Worksheets.Item(1)
End Sub

'При кликване на бутона съдържанието на клетка ред1/колона1 се изписва в текстово поле
Private Sub Command1_Click()
Text1.Text = ExcelWorksheet.Cells(1, 1)
End Sub

'При кликване на бутона "string_to_write" се записва в клетка ред1/колона1
Private Sub Command2_Click()
ExcelWorksheet.Cells(1, 1) = "string_to_write"
ExcelWorkbook.Save
End Sub

'При затваряне на формата освобождаваме и файла
'това се прави и ако се затвори единия фаил за да се отвори втори
'може за втория фаил да декларираме други променливи което е полезно ако ще се работи
'с двата фаила едновременно
Private Sub Form_Unload(Cancel As Integer)
ExcelWorkbook.Close
Set ExcelWorksheet = Nothing
Set ExcelWorkbook = Nothing
Set ExcelApp = Nothing
End Sub

Ако нещо не ти е ясно - питай!


Съб Фев 20, 2010 2:29 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 5 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 1 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни