首页 > 软件技巧 > Excel使用VB宏生成SQL语句

Excel使用VB宏生成SQL语句

2011年8月18日

有时候需要将Excel文件中的数据导入到数据库中,常用的做法是使用程序读取Excel,然后存入数据库;这里换一个方法,用Excel生成SQL语句,然后用这些SQL语句来更新数据库。

本文主要说明Excel如何使用VB宏构造需要的SQL语句,并生成文件。

1、先看看生成SQL的界面:

 

2、如何添加按钮:

依次打开:视图–工具栏–控件工具箱,选择“命令按钮”,自己画一个就行了;

依次打开:右键–属性,可以修改名称、样式等。

具体操作可以上网找找。

 

3、如何使用VB宏:

依次打开:工具–宏–安全性,看看你的Excel是否允许使用“宏”。

然后打开:工具–宏–Visual Basic 编辑器,双击左侧的“Sheet1”,然后在右侧的代码区域粘贴如下代码:

 

‘最大行数

Const MAX_NUM_ROW = 5000

 

‘导出文件路径所在单元格

Const PATH_OUTPUT_ROW = 3

Const PATH_OUTPUT_COL = 3

 

‘定义列常量

Const NAME_COL = 1

Const GENDER_COL = 2

Const PHONE_COL = 3

Const EMAIL_COL = 4

 

‘读取数据开始行数

Const START_ROW = 5

 

‘定义数据实体类

Private Type Tmplt

NAME As String

GENDER As String

PHONE As String

EMAIL As String

End Type

 

‘行数变量

Dim noOfTmplts As Integer

 

‘数据实体类数组

Dim TmpltArray(MAX_NUM_ROW) As Tmplt

 

‘点击按钮触发事件

Private Sub CommandButton1_Click()

generateSQL

End Sub

 

‘生成SQL

Private Sub generateSQL()

makedir

initData

writeToFile

End Sub

 

‘构建文件输出路径

Private Sub makedir()

On Error Resume Next

MkDir Sheet1.Cells(PATH_OUTPUT_ROW, PATH_OUTPUT_COL)

End Sub

 

‘读取Excel数据,填充实体类数组

Private Sub initData()

 

Erase TmpltArray

noOfTmplts = 0

 

Dim j As Integer

 

‘循环读取Excel数据行

For j = START_ROW To MAX_NUM_ROW

 

TmpltArray(noOfTmplts).NAME = Sheet1.Cells(j, NAME_COL)

TmpltArray(noOfTmplts).GENDER = Sheet1.Cells(j, GENDER_COL)

TmpltArray(noOfTmplts).PHONE = Sheet1.Cells(j, PHONE_COL)

TmpltArray(noOfTmplts).EMAIL = Sheet1.Cells(j, EMAIL_COL)

noOfTmplts = noOfTmplts + 1

 

Next

End Sub

 

‘读取实体类数组,生成SQL并写入文件

Private Sub writeToFile()

 

Dim lvOutputPath As String

 

‘输出文件路径

lvOutputPath = Sheet1.Cells(PATH_OUTPUT_ROW, PATH_OUTPUT_COL)

 

If lvOutputPath = “” Then

MsgBox “没有找到输出文件路径!”

Exit Sub

End If

 

fileNum = FreeFile

 

‘打开输出文件

Open lvOutputPath For Output As fileNum

 

Dim lvUserSql As String

Dim nameStr As String

Dim genderStr As String

Dim phoneStr As String

Dim emailStr As String

 

‘循环生成SQL

For j = 0 To noOfTmplts – 1

 

nameStr = TmpltArray(j).NAME

genderStr = TmpltArray(j).GENDER

phoneStr = TmpltArray(j).PHONE

emailStr = TmpltArray(j).EMAIL

 

If nameStr <> “” Then

lvUserSql = “Insert into Students(name,gender,phone,email) values(‘” & nameStr & “‘,'” & genderStr & “‘,'” & phoneStr & “‘,'” & emailStr & “‘);”

Print #fileNum, lvUserSql

End If

Next

 

Close fileNum

 

MsgBox “文件生成完成!”

 

Exit Sub

 

Err_Open_File:

Close lvFileNum

 

If Err.Number = 76 Then

‘路径未找到

MsgBox Err.Description

Exit Sub

 

Else

MsgBox Err.Description

Exit Sub

End If

 

End Sub

OK,这样就可以了!点击你的按钮,看看生成文件了吗?

如果按钮还是编辑状态,关了再打开就行了。

 

软件技巧 , , 浏览776 次

本文的评论功能被关闭了.