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

 

    Excel programming (C# + VBA) Part 1rng.Validation.Add xlValidateList, xlValidAlertStop, xlBetween, "=SpecialOfferType"
Excel programming (C# + VBA) Part 1    rng.Validation.IgnoreBlank 
= True
Excel programming (C# + VBA) Part 1    rng.Validation.InCellDropdown 
= True
Excel programming (C# + VBA) Part 1    

f.        VBA programming to select data in pop form

Excel programming (C# + VBA) Part 1            With frmChoose
Excel programming (C# + VBA) Part 1                .CCodeColumn 
= "AB"
Excel programming (C# + VBA) Part 1                .CNameColumn 
= "B"
Excel programming (C# + VBA) Part 1                .CRow 
= Target.Row
Excel programming (C# + VBA) Part 1                .CCodeSourceColumn 
= "B"
Excel programming (C# + VBA) Part 1                .CNameSourceColumn 
= "C"
Excel programming (C# + VBA) Part 1                .CKeyWords 
= Me.Cells(iRow, iColumn).Text
Excel programming (C# + VBA) Part 1                .Caption 
= Me.Cells(iRow, iColumn - 1)
Excel programming (C# + VBA) Part 1                
Set .CWorksheet = Application.ActiveSheet
Excel programming (C# + VBA) Part 1                
Set .CSourceWorksheet = sourceSheet
Excel programming (C# + VBA) Part 1                .Show
Excel programming (C# + VBA) Part 1            
End With
Excel programming (C# + VBA) Part 1

In frmChoose, when the Ok button is clicked:

Excel programming (C# + VBA) Part 1        CWorksheet.Unprotect Password
Excel programming (C# + VBA) Part 1        
Excel programming (C# + VBA) Part 1        n 
= 2
Excel programming (C# + VBA) Part 1        
If (CSourceWorksheet Is NothingThen
Excel programming (C# + VBA) Part 1            name 
= wsDataSource.Range(CNameSourceColumn & n).Text
Excel programming (C# + VBA) Part 1        
Else
Excel programming (C# + VBA) Part 1            name 
= CSourceWorksheet.Range(CNameSourceColumn & n).Text
Excel programming (C# + VBA) Part 1        
End If
Excel programming (C# + VBA) Part 1        
Excel programming (C# + VBA) Part 1        
While (name <> "")
Excel programming (C# + VBA) Part 1            
If name = lstSelected.List(lstSelected.ListIndex) Then
Excel programming (C# + VBA) Part 1                
If (CSourceWorksheet Is NothingThen
Excel programming (C# + VBA) Part 1                    code 
= wsDataSource.Range(CCodeSourceColumn & n).Text
Excel programming (C# + VBA) Part 1                
Else
Excel programming (C# + VBA) Part 1                    code 
= CSourceWorksheet.Range(CCodeSourceColumn & n).Text
Excel programming (C# + VBA) Part 1                
End If
Excel programming (C# + VBA) Part 1            
End If
Excel programming (C# + VBA) Part 1            
Excel programming (C# + VBA) Part 1            n 
= n + 1
Excel programming (C# + VBA) Part 1            
If (CSourceWorksheet Is NothingThen
Excel programming (C# + VBA) Part 1                name 
= wsDataSource.Range(CNameSourceColumn & n).Text
Excel programming (C# + VBA) Part 1            
Else
Excel programming (C# + VBA) Part 1                name 
= CSourceWorksheet.Range(CNameSourceColumn & n).Text
Excel programming (C# + VBA) Part 1            
End If
Excel programming (C# + VBA) Part 1        
Wend
Excel programming (C# + VBA) Part 1        
Excel programming (C# + VBA) Part 1        
If (CNameColumn <> ""Then
Excel programming (C# + VBA) Part 1            CWorksheet.Range(CNameColumn 
& CRow).Value2 = lstSelected.List(lstSelected.ListIndex)
Excel programming (C# + VBA) Part 1        
End If
Excel programming (C# + VBA) Part 1        
Excel programming (C# + VBA) Part 1        
If (CCodeColumn <> ""Then
Excel programming (C# + VBA) Part 1            CWorksheet.Range(CCodeColumn 
& CRow).Value2 = code
Excel programming (C# + VBA) Part 1        
End If
Excel programming (C# + VBA) Part 1        
Excel programming (C# + VBA) Part 1        CWorksheet.Protect Password
Excel programming (C# + VBA) Part 1        

g.       VBA programming to validate the data filled in every sheets

Excel programming (C# + VBA) Part 1          If Not CheckDateType(ws.Cells(i, 2).Value) Then
Excel programming (C# + VBA) Part 1                bCheck 
= False
Excel programming (C# + VBA) Part 1                
MsgBox ws.Cells(i, 1).Value & "ÄÚÊäÈëµÄ²»ÊÇÓÐЧʱ¼ä"
Excel programming (C# + VBA) Part 1                ws.Activate
Excel programming (C# + VBA) Part 1                ws.Cells(i, 
2).Select
Excel programming (C# + VBA) Part 1                
Exit Sub
Excel programming (C# + VBA) Part 1          
End If
.....

Excel programming (C# + VBA) Part 1
Excel programming (C# + VBA) Part 1
Function CheckNumberic(sourceString As StringAs Boolean
Excel programming (C# + VBA) Part 1    
Dim bOk As Boolean
Excel programming (C# + VBA) Part 1    bOk 
= True
Excel programming (C# + VBA) Part 1    
If sourceString <> "" And Not IsNumeric(sourceString) Then
Excel programming (C# + VBA) Part 1        bOk 
= False
Excel programming (C# + VBA) Part 1    
End If
Excel programming (C# + VBA) Part 1    
Excel programming (C# + VBA) Part 1    CheckNumberic 
= bOk
Excel programming (C# + VBA) Part 1
End Function
Excel programming (C# + VBA) Part 1
Excel programming (C# + VBA) Part 1
Excel programming (C# + VBA) Part 1
Function CheckDateType(sourceString As StringAs Boolean
Excel programming (C# + VBA) Part 1    
Dim bOk As Boolean
Excel programming (C# + VBA) Part 1    bOk 
= False
Excel programming (C# + VBA) Part 1    
If sourceString <> "" And IsDate(sourceString) Then
Excel programming (C# + VBA) Part 1        bOk 
= True
Excel programming (C# + VBA) Part 1    
End If
Excel programming (C# + VBA) Part 1    
Excel programming (C# + VBA) Part 1    CheckDateType 
= bOk
Excel programming (C# + VBA) Part 1    
Excel programming (C# + VBA) Part 1
End Function

 

2.  

相关文章: