ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 413191246se

[分享] 电子印章(宏)最终体验版 v5.24

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-8-23 19:11 | 显示全部楼层
第一眼看到这个宏的时候还是if else then的形式,觉得那些数据有一定规律(即存在一条光滑单调曲线来描述这种规律),后来看到数组形式的数据,有比较大的把握其中有规律,就发表了一下看法(见44楼)。因为楼主(见45楼)认为没有规律,所以自己基于楼主的数据通过拟合得到的曲线函数形式,以证实自己的想法,没有深究。
拟合得到曲线,可以突破数组数量的限制,当然字数也不能太少。
印章的要求应该很多,样式也很多,我具体不清楚,所以现在没有去研究这个东西。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-8-23 20:40 | 显示全部楼层
    谢谢 龚教授/先生 和 loquat 的关注、回复!(我最近竟然未发现此帖有新回复。)
    当初,S/T/R 其实我都是估算值,目测估算,看着像圆就可以了,并没有什么科学规律,但也许存在着规律,这个我不知道。龚教授 用函数来探索规律,更是高端,我一点也不懂。
    不知道两位用过《金格电子印章》那个免费版本没有?生成 GIF 图片,只有 276KB 的 EXE,我觉得很好,打入一个字,马上放到正确位置;打几个字就马上就放到其位,不知道是用什么程序编程的,怎么这么灵敏?但它是 GIF 图片,我觉得不如图形清晰,因为有上级单位给我单位有个文档就是用了电子文件头和电子印章,我寻思要是我单位给下级单位发文的话如果想要这两个,我没有,就不好了,正好《电子印章》是个话题,没看到有谁有这个宏,我就开天辟地地推出了这个宏,经 loquat 代码修改,变得通用在每个文档中,其实我的初衷是做比成样,差不多就行了,要是论科学,我还是觉得 金格 那个电子印章做得好,但是它不如我的宏小巧,要求不高的单位可以用它,最大特点就是方便!——真正有法律效力的电子印章,好像要经公安局备份、承认呢,所以 ,我这个宏就叫体验版了。
    由于 龚先生 的代码太高端,我无法掌控(其实就是看不懂),所以,不想更新了,请 龚先生 见谅!就作为 龚先生 的一次学术探索吧!谢谢 龚先生!另外,也谢谢 loquat,没有他,就没有这么好的宏。

TA的精华主题

TA的得分主题

发表于 2015-8-23 22:51 | 显示全部楼层
cuteword 发表于 2015-8-23 19:11
第一眼看到这个宏的时候还是if else then的形式,觉得那些数据有一定规律(即存在一条光滑单调曲线来描述这 ...

怕就怕基于给定数据拟合的结果估计只能满足给定的数据结果

TA的精华主题

TA的得分主题

发表于 2015-11-2 16:35 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
能否对代码进行修改,在Excel和PPt环境下也能生成印章呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-11-2 16:58 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢楼上朋友关注!因平时只用 Word 2003来办公,连 Excel 都几乎不用,更不用说 PPT 了,所以,对EXCEL/PPT 的 VBA 没有研究。如果有需要,可以在 Word 2003 中生成,再复制到 EXCEL/PPT 中。

TA的精华主题

TA的得分主题

发表于 2015-11-2 18:55 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
EXCEL VBA 和word VBA差别不大,基本相同,我将activedocument换成activesheet没有效果,不知为何?
我正在制作学生成绩考评系统,包括批量生成成绩单,批量生成奖状,全部在excel环境下,一键生成,如果可以实现的话,我就不必实现制作印章了,可以将此过程略作修改集成到批量制作系统,那将是一件很美的差事。希望楼主给与支持。先谢了

TA的精华主题

TA的得分主题

发表于 2015-11-2 18:59 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
loquat先生,向你求救,能否在将此代码略作修改,在EXCEL环境和ppt环境下,也能使用?
等你的回复了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-11-3 17:19 | 显示全部楼层
weiyingde 朋友:我略改了一下对象(即WORD中当前活动文档为ActiveDocument,而在EXCEL中为ActiveBookSheet),下面是在 EXCEL 2003 中可用的《电子印章》宏:(其中,倒数第8/9两句代码中的 0.6 为缩放倍数,如果嫌印章图形小,就将 0.6 变大,如变为 0.8 或 1 等----但使用此宏前确保有活动工作簿!):
  1. Sub 电子印章_Excel()
  2.     Dim i$, j&, a$, f$, x!, s, t, r, arr(1 To 4) As String
  3. ipt:
  4.     i = InputBox("印章正文(3-30字)和附言(2-6字)可以一起输入,但必须以中文逗号,分隔!", "电子印章", "辽宁省朝阳市通用模板公司,业务专用章")
  5.     If i = "" Then Exit Sub
  6.     a = InStrRev(i, ",")
  7.     If a Then f = Mid(i, a + 1): i = Left(i, a - 1) Else f = "财务专用章"
  8.     j = Len(i)
  9.     If j < 3 Or j > 30 Or Len(f) < 2 Or Len(f) > 6 Then GoTo ipt
  10.     If Len(f) = 5 Then
  11.         x = 258.4!
  12.     ElseIf Len(f) = 4 Then x = 264.5!
  13.     ElseIf Len(f) = 3 Then x = 263.5!: f = Left(f, 1) & " " & Mid(f, 2, 1) & " " & Right(f, 1)
  14.     ElseIf Len(f) = 2 Then x = 270.5!: f = Left(f, 1) & "  " & Right(f, 1)
  15.     ElseIf Len(f) = 6 Then x = 251.5!
  16.     End If
  17.     s = Array(3.9!, 3!, 2.4!, 1.98!, 1.7!, 1.48!, 1.33!, 1.19!, 1.08!, 1!, 0.92!, 0.86!, 0.8!, 0.75!, 0.7!, 0.67!, 0.63!, 0.6!, 0.57!, 0.55!, 0.52!, 0.5!, 0.48!, 0.46!, 0.45!, 0.43!, 0.41!, 0.4!)
  18.     t = Array(5!, 5!, 4.9!, 3.9!, 3.5!, 3.1!, 2.8!, 2.5!, 2.3!, 2!, 1.8!, 1.7!, 1.6!, 1.5!, 1.4!, 1.3!, 1.32!, 1.27!, 1.2!, 1.1!, 1.1!, 1.05!, 1!, 0.97!, 0.93!, 0.88!, 0.85!, 0.8!)
  19.     r = Array(220!, 235!, 243!, 247!, 251!, 252!, 255!, 257!, 258.5!, 260.5!, 262!, 264!, 264.5!, 265.5!, 266.5!, 267!, 268!, 269!, 269!, 269!, 269!, 269!, 269.5!, 269.5!, 269.5!, 269.5!, 269.9!, 269.9!)
  20.     With ActiveSheet.Shapes
  21.         With .AddTextEffect(msoTextEffect3, i, "宋体", 12!, msoFalse, msoFalse, 219.75!, 103!) '艺术字
  22.             .TextEffect.Tracking = t(j - 3)
  23.             .ScaleHeight 12, msoFalse, msoScaleFromTopLeft
  24.             .ScaleWidth s(j - 3), msoFalse, msoScaleFromTopLeft
  25.             .Adjustments(1) = r(j - 3)
  26.             arr(1) = .Name
  27.         End With
  28.         With .AddShape(msoShapeOval, 201.6!, 85!, 180!, 180!) '圆周
  29.             .Fill.Transparency = 1!
  30.             .Line.Weight = 3.5
  31.             .Line.Style = msoLineThickThin
  32.             arr(2) = .Name
  33.         End With
  34.         With .AddShape(msoShape5pointStar, 264!, 147.8!, 54.9!, 47.6!) '五角星
  35.             .Line.Weight = 0.25
  36.             arr(3) = .Name
  37.         End With
  38.         With .AddTextEffect(msoTextEffect3, f, "宋体", 13!, msoTrue, msoFalse, x, 206!) '附言
  39.             .TextEffect.PresetShape = msoTextEffectShapePlainText
  40.             .Fill.Visible = msoTrue
  41.             .Line.Weight = 0.25
  42.             arr(4) = .Name
  43.         End With
  44.         With .Range(Array(arr(1), arr(2), arr(3), arr(4))).Group '组合
  45.             .Fill.ForeColor.RGB = RGB(255, 0, 0)
  46.             .Line.ForeColor.RGB = RGB(255, 0, 0)
  47.             .LockAspectRatio = msoTrue
  48.             .ScaleWidth 0.6, msoFalse, msoScaleFromTopLeft
  49.             .ScaleHeight 0.6, msoFalse, msoScaleFromTopLeft
  50.             .IncrementTop 92.6!
  51.             .IncrementLeft 119.4!
  52.             .ZOrder msoSendBehindText
  53.             .Select
  54.         End With
  55.     End With
  56. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-11-4 11:13 | 显示全部楼层
weiyingde 朋友:因为OFFICE各个部件都是相通的,所以,绘图功能是相通的,只须改动对象即可!下面是 PPT下的《电子印章》宏:(你有时间可以按F8逐步调试---确保有打开的文档再应用)
  1. Sub 电子印章_PPT()
  2.     Dim i$, j&, a$, f$, x!, s, t, r, arr(1 To 4) As String
  3. ipt:
  4.     i = InputBox("印章正文(3-30字)和附言(2-6字)可以一起输入,但必须以中文逗号,分隔!", "电子印章", "辽宁省朝阳市通用模板公司,业务专用章")
  5.     If i = "" Then Exit Sub
  6.     a = InStrRev(i, ",")
  7.     If a Then f = Mid(i, a + 1): i = Left(i, a - 1) Else f = "财务专用章"
  8.     j = Len(i)
  9.     If j < 3 Or j > 30 Or Len(f) < 2 Or Len(f) > 6 Then GoTo ipt
  10.     If Len(f) = 5 Then
  11.         x = 258.4!
  12.     ElseIf Len(f) = 4 Then x = 264.5!
  13.     ElseIf Len(f) = 3 Then x = 263.5!: f = Left(f, 1) & " " & Mid(f, 2, 1) & " " & Right(f, 1)
  14.     ElseIf Len(f) = 2 Then x = 270.5!: f = Left(f, 1) & "  " & Right(f, 1)
  15.     ElseIf Len(f) = 6 Then x = 251.5!
  16.     End If
  17.     s = Array(3.9!, 3!, 2.4!, 1.98!, 1.7!, 1.48!, 1.33!, 1.19!, 1.08!, 1!, 0.92!, 0.86!, 0.8!, 0.75!, 0.7!, 0.67!, 0.63!, 0.6!, 0.57!, 0.55!, 0.52!, 0.5!, 0.48!, 0.46!, 0.45!, 0.43!, 0.41!, 0.4!)
  18.     t = Array(5!, 5!, 4.9!, 3.9!, 3.5!, 3.1!, 2.8!, 2.5!, 2.3!, 2!, 1.8!, 1.7!, 1.6!, 1.5!, 1.4!, 1.3!, 1.32!, 1.27!, 1.2!, 1.1!, 1.1!, 1.05!, 1!, 0.97!, 0.93!, 0.88!, 0.85!, 0.8!)
  19.     r = Array(220!, 235!, 243!, 247!, 251!, 252!, 255!, 257!, 258.5!, 260.5!, 262!, 264!, 264.5!, 265.5!, 266.5!, 267!, 268!, 269!, 269!, 269!, 269!, 269!, 269.5!, 269.5!, 269.5!, 269.5!, 269.9!, 269.9!)
  20.     With ActiveWindow.Selection.SlideRange.Shapes
  21.         With .AddTextEffect(msoTextEffect3, i, "宋体", 12!, msoFalse, msoFalse, 219.75!, 103!) '艺术字
  22.             .TextEffect.Tracking = t(j - 3)
  23.             .ScaleHeight 12, msoFalse, msoScaleFromTopLeft
  24.             .ScaleWidth s(j - 3), msoFalse, msoScaleFromTopLeft
  25.             .Adjustments(1) = r(j - 3)
  26.             arr(1) = .Name
  27.         End With
  28.         With .AddShape(msoShapeOval, 201.6!, 85!, 180!, 180!) '圆周
  29.             .Fill.Transparency = 1!
  30.             .Line.Weight = 6
  31.             .Line.Style = msoLineThickThin
  32.             arr(2) = .Name
  33.         End With
  34.         With .AddShape(msoShape5pointStar, 264!, 147.8!, 54.9!, 47.6!) '五角星
  35.             .Line.Weight = 0.25
  36.             arr(3) = .Name
  37.         End With
  38.         With .AddTextEffect(msoTextEffect3, f, "宋体", 13!, msoTrue, msoFalse, x, 206!) '附言
  39.             .TextEffect.PresetShape = msoTextEffectShapePlainText
  40.             .Fill.Visible = msoTrue
  41.             .Line.Weight = 0.25
  42.             arr(4) = .Name
  43.         End With
  44.         With .Range(Array(arr(1), arr(2), arr(3), arr(4))).Group '组合
  45.             .Fill.ForeColor.RGB = RGB(255, 0, 0)
  46.             .Line.ForeColor.RGB = RGB(255, 0, 0)
  47.             .LockAspectRatio = msoTrue
  48.             .ScaleWidth 0.6, msoFalse, msoScaleFromTopLeft
  49.             .ScaleHeight 0.6, msoFalse, msoScaleFromTopLeft
  50.             .IncrementTop 92.6!
  51.             .IncrementLeft 119.4!
  52.             .ZOrder msoSendBehindText
  53.             .Select
  54.         End With
  55.     End With
  56. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2015-11-5 17:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
cuteword 发表于 2015-8-23 12:20
仅仅分析了那个数组问题,用公式替代,不知道效果是否好些,供楼主参考。2007或者以上版本中代码有问题。只 ...

用Excel拟合了一下
s = 0.00000021i6 - 0.00002353i5 + 0.00108178i4 - 0.02581479i3 + 0.34097722i2 - 2.45589843i + 8.79273602
R2 = 0.99976853
t = -0.0000005i6 + 0.0000481i5 - 0.0020226i4 + 0.0416843i3 - 0.4187612i2 + 1.5145338i + 3.3655615
R2 = 0.9947420
r = -0.000006i6 + 0.000644i5 - 0.027939i4 + 0.613368i3 - 7.218464i2 + 44.959586i + 136.616909
R2 = 0.997571
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-23 07:34 , Processed in 0.035892 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表