|
本帖最后由 lsc900707 于 2017-12-6 17:18 编辑
如图所示,我是使用QRmake来生成二维码,按钮做好以后发现我每次生成二维码必须先选中二维码下方的数字,按下按钮后才能生成二维码,并且只能单独操作,不能进行批量操作。我现在的需求是我按下按钮,所有的二维码能够一次性生成,求大神帮忙下,需要生成二维码的数字是引用另外一个工作表的:
=IF(MOD(ROW(A1),8)=1,OFFSET(排产单!AH$3,CEILING(ROW(A1)/8,1),0)&"","")
宏命令如下:
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Point01 As Long, Point02 As Long, Point03 As Long
Private i As Integer
Sub MakeQRCode()
If Dir("D:\QRmake.exe") = "" Then
MsgBox "QRmake.exe文件丢失,请确认!", vbCritical, "外部程序调用"
Exit Sub
End If
i = MK_QR(ActiveCell.Value, "10", "4")
End Sub
Function MK_QR(Enc_Dat, ECL, SIZ)
Dim F_Name As String
F_Name = "[" & ActiveWorkbook.Name & "]" & ActiveSheet.Name & "!" & ActiveCell.Address
Point01 = Shell("""" & "D:\QRmake.exe""" & " /S" & SIZ & " /L" & ECL + 1 & " /O""" & ThisWorkbook.Path & "\" & F_Name & ".bmp"" /T""" & Enc_Dat & """")
Point02 = OpenProcess(&H100000, 1, Point01)
Point03 = WaitForSingleObject(Point02, &HFFFFFFFF)
Point03 = CloseHandle(Point02)
Point01 = Empty
Point02 = Empty
Point03 = Empty
ActiveCell.Offset(-4, 0).Select
With ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\" & F_Name & ".bmp")
.Left = ActiveCell.Left
.Top = ActiveCell.Top
End With
'将已经生成的二维码图像删除
Kill (ThisWorkbook.Path & "\" & F_Name & ".bmp")
ActiveCell.Offset(0, -1).Select
End Function
|
|