Excel programming (C# + VBA)
Here is the secario of a full process of solution to use excel to submit information.
-
Clarify the requirement and create the Excel template (VBA)
-
Generate an Excel template to fill with source data (C#)
-
Download the template from web site (C# + ASP.NET)
-
Fill in the template and verified the data via VBA (VBA)
-
Upload the template (Web) (ASP.NET)
-
Import data in Excel Template to database (C#)
1. Setp 1 Create the Excel Template based on requirement
a. Clarify the requirement
b. Create hidden template sheet
i. Clarify the data type in each cell, fill in type (user input/list validation or a pop form) and the lock property.
c. Create hidden data source sheet
i. Clarify the source data in each column
ii. Create named range for list validation (If the data is already known)
d. Create Summary, Filling Sheet
i. Set the layout, add validation button and Add new button
e. VBA programming to add list validation or auto-filling
rng.Validation.IgnoreBlank = True
rng.Validation.InCellDropdown = True
f. VBA programming to select data in pop form
.CCodeColumn = "AB"
.CNameColumn = "B"
.CRow = Target.Row
.CCodeSourceColumn = "B"
.CNameSourceColumn = "C"
.CKeyWords = Me.Cells(iRow, iColumn).Text
.Caption = Me.Cells(iRow, iColumn - 1)
Set .CWorksheet = Application.ActiveSheet
Set .CSourceWorksheet = sourceSheet
.Show
End With
In frmChoose, when the Ok button is clicked:
n = 2
If (CSourceWorksheet Is Nothing) Then
name = wsDataSource.Range(CNameSourceColumn & n).Text
Else
name = CSourceWorksheet.Range(CNameSourceColumn & n).Text
End If
While (name <> "")
If name = lstSelected.List(lstSelected.ListIndex) Then
If (CSourceWorksheet Is Nothing) Then
code = wsDataSource.Range(CCodeSourceColumn & n).Text
Else
code = CSourceWorksheet.Range(CCodeSourceColumn & n).Text
End If
End If
n = n + 1
If (CSourceWorksheet Is Nothing) Then
name = wsDataSource.Range(CNameSourceColumn & n).Text
Else
name = CSourceWorksheet.Range(CNameSourceColumn & n).Text
End If
Wend
If (CNameColumn <> "") Then
CWorksheet.Range(CNameColumn & CRow).Value2 = lstSelected.List(lstSelected.ListIndex)
End If
If (CCodeColumn <> "") Then
CWorksheet.Range(CCodeColumn & CRow).Value2 = code
End If
CWorksheet.Protect Password
g. VBA programming to validate the data filled in every sheets
bCheck = False
MsgBox ws.Cells(i, 1).Value & "ÄÚÊäÈëµÄ²»ÊÇÓÐЧʱ¼ä"
ws.Activate
ws.Cells(i, 2).Select
Exit Sub
End If
.....
Function CheckNumberic(sourceString As String) As Boolean
Dim bOk As Boolean
bOk = True
If sourceString <> "" And Not IsNumeric(sourceString) Then
bOk = False
End If
CheckNumberic = bOk
End Function
Function CheckDateType(sourceString As String) As Boolean
Dim bOk As Boolean
bOk = False
If sourceString <> "" And IsDate(sourceString) Then
bOk = True
End If
CheckDateType = bOk
End Function
2.