Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖
楼主: qinhuan66

[已解决]为什么03版生成的版本和13版的版本出来景然不相同

[复制链接]
 楼主| 发表于 2013-6-25 10:12 | 显示全部楼层
hwc2ycy 发表于 2013-6-25 10:09
strTemp = strTemp & "    第" & Replace(Application.WorksheetFunction.Text(arr(i, 1), "[DBNum1][$-804 ...

老师我就是要在每段前面缩进两个字符的,但后面的怎么缩进呢?谢谢
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

发表于 2013-6-25 10:13 | 显示全部楼层
设置缩进,用代码实现吧。
加空格就是假缩进了,不过只要你觉得行就成了。
回复

使用道具 举报

 楼主| 发表于 2013-6-25 10:14 | 显示全部楼层
hwc2ycy 发表于 2013-6-25 10:13
设置缩进,用代码实现吧。
加空格就是假缩进了,不过只要你觉得行就成了。

谢谢您老师还是用代码实现吧。哪怎么实现呢?谢谢
回复

使用道具 举报

发表于 2013-6-25 10:39 | 显示全部楼层    本楼为最佳答案   
  1. Private Sub CommandButton1_Click()
  2.     Dim objWord As Object
  3.     Set objWord = CreateObject("word.application")
  4.     Dim intSum As Integer
  5.     Dim strT() As String

  6.     Dim arr, i As Long, K As Long
  7.     Dim strTemp As String
  8.     strTemp = "试室安排考生说明" & vbCr
  9.     arr = Range("a1").CurrentRegion
  10.     With objWord
  11.         .Documents.Add
  12.         For i = LBound(arr) + 1 To UBound(arr)
  13.             intSum = 0
  14.             strT = Split(CStr(arr(i, 2)), "、")
  15.             For K = LBound(strT) To UBound(strT)
  16.                 intSum = intSum + GetInt(strT(K))
  17.             Next

  18.             'strTemp = strTemp & "    第" & Replace(Application.WorksheetFunction.Text(arr(i, 1), "[DBNum1][$-804]General"), "一十", "十") & "试室" & "(共" & intSum & "人):" & vbCrLf & "    " & arr(i, 2) & "。" & vbCrLf  '& "。"  (每句结束加句号),vbcrlf &(换行)
  19.             strTemp = strTemp & "第" & Replace(Application.WorksheetFunction.Text(arr(i, 1), "[DBNum1][$-804]General"), "一十", "十") & "试室" & "(共" & intSum & "人):" & vbCrLf & arr(i, 2) & "。" & vbCrLf  '& "。"  (每句结束加句号),vbcrlf &(换行)
  20.         Next

  21.         .Selection.InsertAfter strTemp
  22.         .Selection.HomeKey Unit:=wdStory
  23.         With .ActiveDocument
  24.             With .Sentences(1)
  25.                 .Font.Bold = True
  26.                 .Font.Size = 24
  27.                 .Font.Name = "黑体"
  28.                 .ParagraphFormat.Alignment = wdAlignParagraphCenter    '居中
  29.                 .ParagraphFormat.LineSpacing = 20
  30.             End With
  31.         End With

  32.         With .Selection.Find
  33.             .ClearFormatting
  34.             .Replacement.ClearFormatting
  35.             .Replacement.Font.Bold = True
  36.             .Text = "第 [0-9]{1,} 教室"
  37.             .Replacement.Text = ""
  38.             .Forward = True
  39.             .Wrap = wdFindContinue
  40.             .Format = True
  41.             .MatchWildcards = True
  42.             .Execute Replace:=wdReplaceAll
  43.         End With

  44.         With .ActiveDocument
  45.             For i = 2 To .Sentences.Count Step 2
  46.                 With .Sentences(i)
  47.                     .Font.Bold = True   '加粗
  48.                     .Font.Size = 16     '字号
  49.                     .Font.Name = "仿宋_GB2312"   '字体
  50.                 End With

  51.                 With .Sentences(i + 1)
  52.                     .Font.Size = 16     '字号
  53.                     .Font.Name = "仿宋_GB2312"   '字体
  54.                 End With
  55.             Next
  56.             
  57.             With .Range(Start:=.Paragraphs(2).Range.Start, _
  58.                         End:=.Paragraphs(.Paragraphs.Count).Range.End)

  59.                 With .ParagraphFormat
  60.                     .FirstLineIndent = CentimetersToPoints(0)
  61.                     .CharacterUnitFirstLineIndent = 2
  62.                 End With
  63.             End With

  64.             .SaveAs Filename:=ThisWorkbook.Path & "\试室安排考生说明" & "\试室安排考生说明.doc", FileFormat:=0
  65.             MsgBox .FullName
  66.             .Close False
  67.         End With
  68.         .Quit
  69.     End With

  70. End Sub
复制代码

评分

参与人数 1 +3 收起 理由
qinhuan66 + 3 很给力!谢谢您老师。谢谢

查看全部评分

回复

使用道具 举报

发表于 2013-6-25 10:41 | 显示全部楼层
碰到RPC服务器提示的时候就再运行一次就好了。
回复

使用道具 举报

 楼主| 发表于 2013-6-25 10:42 | 显示全部楼层
hwc2ycy 发表于 2013-6-25 10:39

谢谢您老师,经测试出现下图提示。谢谢
2013-06-25_104157.gif
回复

使用道具 举报

发表于 2013-6-25 10:43 | 显示全部楼层
GETINT函数你看看放一块了没?或者有没有放模块里。
回复

使用道具 举报

发表于 2013-6-25 10:44 | 显示全部楼层
不行就插入个模块,把GETINT函数放里面
  1. Function GetInt(strV As String) As Integer
  2.     Dim regex As Object
  3.     Dim str As String
  4.     Set regex = CreateObject("VBScript.RegExp")
  5.     With regex
  6.         .Global = True
  7.         .Pattern = "[^\d]"
  8.         GetInt = CInt(.Replace(strV, ""))
  9.     End With
  10. End Function
复制代码

评分

参与人数 1 +3 收起 理由
qinhuan66 + 3 谢谢您老师真的很给力

查看全部评分

回复

使用道具 举报

发表于 2013-6-25 14:07 | 显示全部楼层
额..
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-30 05:28 , Processed in 0.365649 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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