Sub shuaxin(control As IRibbonControl)
On Error Resume Next
Dim a%
Application.ScreenUpdating = False
' Application.Dialogs(wdDialogFilePrint).Display '显示打印窗口
a = Application.Dialogs(wdDialogFilePrint).Display
If a = -1 Then '判断打印窗口点击的是确定还是取消,-1 是确定
Dim oMailMerge As MailMerge '以下刷新数据源
Dim oDoc As Document
Dim oMailMergeDataSource As MailMergeDataSource
Dim sPath As String
Dim sName As String
Dim sConStr As String
sPath = Word.ActiveDocument.Path & "\"
sName = "五班名录.xlsm"
Set oDoc = Word.ActiveDocument
Set oMailMerge = oDoc.MailMerge
'连接字符串
sConStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & sPath &
sName & ";Extended Properties='HDR=YES;IMEX=1'"
'邮件合并对象
With oMailMerge
.MainDocumentType = wdFormLetters
'Name 参数表示 excel 数据源的完整路径, LinkToSource 参数表示是否每次打开
word 文档都执行 sql 命令,Revert 表示如果数据源已经打开是否重新打开
.OpenDataSource Name:=sPath & sName, _
LinkToSource:=False, _
Revert:=True, _
Connection:=sConStr, _
SQLStatement:="SELECT * FROM [sheet1$A1:F50]"
End With
Application.DisplayAlerts = False
With ActiveDocument.MailMerge
.Destination = wdSendToPrinter '打印
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=False
End With
Application.OnTime Now + TimeValue("0:0:1"), "sendkeystrokes"
SendKeys "%H{LEFT}" '跳转到自定义选项卡
Application.DisplayAlerts = True