Ⅰ excel 宏使用sql语句
1.在宏编辑界面中进行SQL数据查询以及生成报表的代码如下:
Sub Static()
Dim objNewWorkbook As Workbook '定义一个Workbook对象
Set objNewWorkbook = Workbooks.Add(ThisWorkbook.Path & "\模板.xlt") '使用模板文件新建一个EXCEL报表生成文件
Set objConnection = CreateObject("ADODB.Connection") '创建一个ADO连接
objConnection.Open "Provider=Microsoft.Jet.Oledb.4.0;Extended Properties='Excel 8.0;Hdr=yes;Imex=1';Data Source=" & ThisWorkbook.FullName '设置连接字符串
strCommand = "select 施工人, count(*) as 拆电话 from [" & Sheet1.Name & "$] where 施工动作 = '拆' and 专业类型 = '电话' group by 施工人" '查询表单一中的数据源进行统计
?objNewWorkbook.Sheets(1).Range("A3").CopyFromRecordset objConnection.Execute(strCommand)
2.将查询统计结果输出到目的报表文件的表单1的从A3开始的区域中
3.下面代码是调用EXCEL的排序方式进行汉字排序,这里SQL语句中的排序对于汉字排序与期望结果不同
4.使用EXCEL中的排序方法是根据EXCEL版本不同调用有所区别
Select Case Application.Version
Case "11.0":
objNewWorkbook.Sheets(1).Range("A3:M" & CStr(intSumRow - 1)).Sort Key1:=objNewWorkbook.Sheets(1).Range("A3"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin, DataOption1:=xlSortNormal
Case "12.0":
objNewWorkbook.Sheets(1).Sort.SortFields.Clear
objNewWorkbook.Sheets(1).Sort.SortFields.Add Key:=Range("A3:A" & CStr(intSumRow - 1)), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With objNewWorkbook.Sheets(1).Sort
.SetRange Range("A2:M" & CStr(intSumRow - 1))
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Case Else
End Select
objConnection.Close
End Sub
Ⅱ sql和宏的区别
sql和宏的区别是,sql包括宏,sql是大的概念,宏是小的概念。
1、sql是一个关系数据库管理工具,为关系型数据和结构化数据提供了更安全可靠的存储功能轮桥,它的管理对象是各种复杂的纯桐败数据。
2、宏是sql中的一种操作命令,和菜单操作命令一样,两者对数据库施加作用的时间有所不做颤同,作用时的条件也不同。
Ⅲ ACCESS 中的 宏 是什么他跟sql相对比,宏相当于sql中的什么啊 ,宏的用途是什么
access数据库 不安全,而且数据量过小。
建议去考虑 SQL..
什么是宏
计算机科学里的宏是一种抽象,它根据一系列预定义的规则替换一定的文本模式。Excel 办公软件自动集成了“VBA”高级程序语言,用此语言编制出的程序就叫“宏”。使用“VBA”需要有一定的编程基础和耗费大量的时间,因此,绝大多数的使用者仅使用了Excel的一般制表功能,很少使用到“VBA”。 解释器或编译器在遇到宏时会自动进行这一模式替换。对于编译语言,宏展开在编译时发生,进行宏展开的工具常被称为宏展开器。宏这一术语也常常被用于许多类似的环境中,它们是源自宏展开的概念,这包括键盘宏和宏语言。绝大多数情况下,使用“宏”这个词的使用暗示着将小命令或动作转化为一系列指令。 宏的用途在于自动化频繁使用的序列或者是获得一种更强大的抽象能力--但这常常是一回事。 计算机语言如C或汇编语言有简单的宏系统,由编译器或汇编器的预处理器实现。C的宏预处理器的工作只是简单的文本搜索和替换,使用附加的文本处理语言如M4,C 程序员可以获得更精巧的宏。 Lisp类语言如Common Lisp和Scheme有更精巧的宏系统: 宏的行为如同是函数对自身程序文本的变形,并且可以应用全部语言来表达这种变形。一个C宏可以定义一段语法的替换,然而一个Lisp的宏却可以控制一节代码的计算。 获得了控制代码的执行顺序(见惰性计算和非限制函数)的能力,使得新创建的语法结构与语言内建的语法结构不可区分。例如,一种Lisp 方言有 cond 而没有if ,就可以使用宏由前者定义后者。Lisp 语法的去部主要扩展,比如面向对象的CLOS 系统,可以由宏来定义。
宏的典型应用
加速日常编辑和格式设置 组合多个命令 使对话框中的选项更易于访问 使一系列复杂的任务自动执行
宏编程介绍
在用一种不熟悉的宏语言进行宏编程时,可以这样做,首先记录下用户想要宏完成什么,然后打开宏文件并尝试理解命令结构如何工作。也可以修改命令以调整宏。一些宏语言,比如Great Plains账务(?accounting)软件的 Dexterity 运行时引擎,不能从其它数据源(如由逗号分隔的文本文件)导入数据。这一限制可以通过用更强大的编程语言,如 VBA 来创建一个计算机程序在此弱编程语言里生成一个特别的宏来解决。例如,可以对 Microsoft Excel 宏编程从扩展样式表或文本文件中读取数据并创建 Great Plains .mac 文件,这一文件被用于将特定的数据导入 Great Plains. 需要针对每一个新的数据集合声称新的 .mac 文件。
键盘宏
键盘宏和编辑器宏分别在图形用户界面和编辑器中被交互式地使用。使用它们可以用简短的击键代替冗长的命令序列,并为重复性任务提供了一个简单的自动化形式。 程序员的文本编辑器 Emacs (“编辑宏”[Editing MACroS]的简称)是沿用这一思想的产物。事实上,大多数编辑器是由宏组成的,Emacs 最初被设计为编辑语言 TECO 的宏集,后被移植为 Lisp 的一中方言 Emacs Lisp。
宏语言
宏语言是一类编程语言,其全部或多数计算是由扩展宏完成的。宏语言并未在通用编程中广泛使用,但在文本处理程序中应用普遍。例如, C preprocessor C 预处理器 Internet Macros(iOpus) M4(如前所述,源于AT&T,捆绑于Unix) 宏定义 c程序提供的预处理功能之一。包括带参数的宏定义和不带参数的宏定义。具体是指用一个指定的标志符来进行简单的字符串替换或者进行阐述替换。形式为: #define 标志符(参数表) 字符串 宏名 在上定义中的标志符被称为“宏名”。 宏展开 在c程序编译时将宏名替换成字符串的过程称为“宏展开”。
Ⅳ 在Excel里用宏实现自动生成sql语句的问题
分类: 电脑/网络猜悔 >> 程序设计 >>毁核 其他编程语言
问题描述:
请看我的Bolg里有图片描述,一目了然.blog.sina/u/***********即点击按钮生成5条insert语句,用分号阁开.
知道思路的说下思路,知纤兆掘道细节的最好说详细点啦,先谢谢!
解析:
Const MAX_NUM_ROW = 5000
Const PATH_OUTPUT_ROW = 1
Const PATH_OUTPUT_COL = 2
Const FILE_OUTPUT_ROW = 2
Const FILE_OUTPUT_COL = 2
'Template Info
Const ENTRP_CDE_COL = 1
Const RPT_TMPLT_ID_COL = 2
Const RPT_FMT_TYP_COL = 3
Const FNCTN_ID_COL = 4
Const TMPLT_PATH_COL = 5
Const BNDL_PATH_COL = 6
Const RPT_NAM_GEN_CLASS_COL = 7
Const RPT_DATASOURCE_CLASS_COL = 8
Const ACK_RPT_TMPLT_ID_COL = 9
Const REC_VER_NUM_COL = 10
Const INIT_TIME_COL = 11
Const LAST_UPD_TIME_COL = 12
Const LAST_UPD_BY_COL = 13
Const START_ROW = 5
Private Type Tmplt
ENTRP_CDE As String
RPT_TMPLT_ID As String
RPT_FMT_TYP As String
FNCTN_ID As String
TMPLT_PATH As String
BNDL_PATH As String
RPT_NAM_GEN_CLASS As String
RPT_DATASOURCE_CLASS As String
ACK_RPT_TMPLT_ID As String
REC_VER_NUM As String
INIT_TIME As String
LAST_UPD_TIME As String
LAST_UPD_BY As String
End Type
Dim noOfTmplts As Integer
Dim TmpltArray(MAX_NUM_ROW) As Tmplt
Private Sub CommandButton1_Click()
generateSQL
End Sub
Private Sub generateSQL()
makedir
initData
writeToFile
End Sub
Private Sub makedir()
On Error Resume Next
'Make Directory
MkDir Sheet18.Cells(PATH_OUTPUT_ROW, PATH_OUTPUT_COL)
End Sub
Private Sub initData()
Erase TmpltArray
'Erase TmpltRoleArray
'noOfUserRoles = 0
noOfTmplts = 0
Dim j As Integer
'Lookup all fields
For j = START_ROW To MAX_NUM_ROW
If Sheet18.Cells(j, RPT_TMPLT_ID_COL) = "" Then
Exit For
End If
'Set Template
TmpltArray(noOfTmplts).ENTRP_CDE = Sheet18.Cells(j, ENTRP_CDE_COL)
TmpltArray(noOfTmplts).RPT_TMPLT_ID = Sheet18.Cells(j, RPT_TMPLT_ID_COL)
TmpltArray(noOfTmplts).RPT_FMT_TYP = Sheet18.Cells(j, RPT_FMT_TYP_COL)
TmpltArray(noOfTmplts).FNCTN_ID = Sheet18.Cells(j, FNCTN_ID_COL)
TmpltArray(noOfTmplts).TMPLT_PATH = Sheet18.Cells(j, TMPLT_PATH_COL)
TmpltArray(noOfTmplts).BNDL_PATH = Sheet18.Cells(j, BNDL_PATH_COL)
TmpltArray(noOfTmplts).RPT_NAM_GEN_CLASS = Sheet18.Cells(j, RPT_NAM_GEN_CLASS_COL)
TmpltArray(noOfTmplts).RPT_DATASOURCE_CLASS = Sheet18.Cells(j, RPT_DATASOURCE_CLASS_COL)
TmpltArray(noOfTmplts).ACK_RPT_TMPLT_ID = Sheet18.Cells(j, ACK_RPT_TMPLT_ID_COL)
TmpltArray(noOfTmplts).REC_VER_NUM = Sheet18.Cells(j, REC_VER_NUM_COL)
TmpltArray(noOfTmplts).INIT_TIME = Sheet18.Cells(j, INIT_TIME_COL)
TmpltArray(noOfTmplts).LAST_UPD_TIME = Sheet18.Cells(j, LAST_UPD_TIME_COL)
TmpltArray(noOfTmplts).LAST_UPD_BY = Sheet18.Cells(j, LAST_UPD_BY_COL)
noOfTmplts = noOfTmplts + 1
Next
End Sub
Private Sub writeToFile()
Dim lvOutputPath As String
lvOutputPath = Sheet18.Cells(PATH_OUTPUT_ROW, PATH_OUTPUT_COL) & "\" & Sheet18.Cells(FILE_OUTPUT_ROW, FILE_OUTPUT_COL)
If lvOutputPath = "" Then
MsgBox "File Output Path Missing!"
Exit Sub
End If
fileNum = FreeFile
' Open Output Path
Open lvOutputPath For Output As fileNum
Dim lvUserSql As String
For j = 0 To noOfTmplts - 1
lvUserSql = "INSERT INTO RS_RPT_TMPLT(ENTRP_CDE,RPT_TMPLT_ID,RPT_FMT_TYP,FNCTN_ID,TMPLT_PATH,BNDL_PATH,RPT_NAM_GEN_CLASS,RPT_DATASOURCE_CLASS,ACK_RPT_TMPLT_ID,REC_VER_NUM,INIT_TIME,LAST_UPD_TIME,LAST_UPD_BY) " & _
"values('TF','" & TmpltArray(j).RPT_TMPLT_ID & "','" & TmpltArray(j).RPT_FMT_TYP & "','" & TmpltArray(j).FNCTN_ID & "','" & TmpltArray(j).TMPLT_PATH & "','" & TmpltArray(j).BNDL_PATH & "','" & _
TmpltArray(j).RPT_NAM_GEN_CLASS & "','" & TmpltArray(j).RPT_DATASOURCE_CLASS & "','" & TmpltArray(j).ACK_RPT_TMPLT_ID & "'," & TmpltArray(j).REC_VER_NUM & "," & TmpltArray(j).INIT_TIME & "," & TmpltArray(j).LAST_UPD_TIME & ",'" & TmpltArray(j).LAST_UPD_BY & "');"
Print #fileNum, lvUserSql
Next
Close fileNum
MsgBox "Finished"
Exit Sub
Err_Open_File:
Close lvFileNum
If Err.Number = 76 Then
'Path Not Found
MsgBox Err.Description
Exit Sub
Else
MsgBox Err.Description
Exit Sub
End If
End Sub
Ⅳ Excel宏操作SQL数据库
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim strCn As String
Dim strSQL As String
Dim CountryCode As String
Dim CountryName As String
Dim DeleteFlg As String
Dim CreateBy As String
Dim UpdateBy As String
'strCn = "Provider=sqloledb;Server=xxxx;Database=xxxx;Uid=sa;Pwd=sa;"
strCn = strConn
'MsgBox strCn
'open connect
cn.Open strCn
'**********************************************
strSQL = "DELETE FROM xxxx"
cn.Execute strSQL
cn.Close
'get the max row number
Dim RowCount As Integer
RowCount = Sheet3.UsedRange.Rows.Count
'get the time
Dim nowtime As Date
nowtime = Now()
'MsgBox nowtime
Dim index As Integer
For index = 0 To RowCount
'get data from excel
111= Cells(index, 1).Value
2222= Cells(index, 2).Value
DeleteFlg = "0"
3333= Cells(index, 3).Value
4444= Cells(index, 4).Value