ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2225|回复: 4

[求助] WORD文档如何能自动排列日期及星期?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-3-1 14:18 | 显示全部楼层 |阅读模式
WORD文档如何能自动排列日期及星期?
27a06dc1caa14eb5ae4f599dc78a08c.png

工作日志 .rar

4.54 KB, 下载次数: 10

TA的精华主题

TA的得分主题

发表于 2018-3-16 00:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
楼主,我添加了3年的表格,请仔细核对每一个月的星期是否正确;并且根据页边距做了3种文档(原版(你的原版)、默认A43.17cm的边距、2.5cm边距),可以任选其一来正式使用。
工作日志(demo).rar (96.48 KB, 下载次数: 7)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-3-2 19:22 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
*请楼主备份原文件后应用下面的宏。
*请确保第1个月份必须是31天,否则出错!
*请自行命名下面的宏,本宏在Word2003下测试通过。
*请认真仔细核对每个月的日期/星期是否一一对应。
*请耐心等待程序运行完毕,如果增加月份超过10个以上的话。
*程序算法不高明,但我认为结果还算正确(以附件为准),楼主试试吧!
  1. Sub test()
  2.     On Error Resume Next
  3.     Dim doc As Document, i$, j$, k$, p$, q&
  4.     Set doc = ActiveDocument

  5. inp:
  6.     p = InputBox("* 输入 3 则增加 3 个月的表格!" & vbCr & vbCr & "* 首页表格天数必须是31天,否则出错!", "请输入增加月份的个数(正整数1或2位)", "1")
  7.     If p = "" Then End
  8.     If Not (p Like "[1-9]" Or p Like "[1-9][0-9]") Then GoTo inp
  9.    
  10.     For q = 1 To p

  11. '最终表格日期
  12.     doc.Tables(doc.Tables.Count).Select
  13.     Selection.MoveUp unit:=wdParagraph, Count:=2
  14.     i = Right(Selection.Paragraphs(1).Range, 10)
  15.     i = Replace(i, " ", "")
  16.     i = Replace(i, vbCr, "")
  17.     j = Left(i, 4)
  18.     k = Mid(i, 6, 2)
  19.     k = Replace(k, "月", "")

  20. '复制第1页的表格(必须31天,否则出错)
  21.     doc.Tables(1).Range.Next(unit:=wdParagraph, Count:=1).Select
  22.     With Selection
  23.         .EndKey unit:=wdLine
  24.         .HomeKey unit:=wdStory, Extend:=wdExtend
  25.         .Copy
  26.         .EndKey unit:=wdStory
  27.         .InsertBreak
  28.         .Paste
  29.         doc.Characters.First.Copy '变相清空剪贴板

  30.     '选中当前页第2段
  31.         doc.Tables(doc.Tables.Count).Select
  32.         Selection.MoveUp unit:=wdParagraph, Count:=2
  33.         Selection.EndKey unit:=wdLine
  34.         Do
  35.             Selection.MoveLeft unit:=wdCharacter, Count:=1, Extend:=wdExtend
  36.         Loop Until Selection Like " *"
  37.         Selection.MoveStart unit:=wdCharacter, Count:=1
  38.     End With

  39.     '赋值
  40.     If k = 12 Then k = 1: j = j + 1 Else k = k + 1
  41.     Selection.Text = j & "年" & k & "月"

  42.     'd=本月天数
  43.     Dim MyDate, MyMonth, d&
  44.     MyDate = k & "/1/" & j
  45.     d = Day(DateValue(Year(MyDate) & -Month(MyDate) - 1 & -1) - 1)
  46.    
  47.     If k = 12 Then d = 31

  48.     '删除最终表格最后一行(次数)
  49.     Dim x&
  50.     If d > 0 Then
  51.         For x = 1 To 31 - d
  52.             doc.Tables(doc.Tables.Count).Rows.Last.Delete
  53.         Next x
  54.     End If

  55.     '判断每月1号是星期几
  56.     Dim s$
  57.     s = j & "-" & k & "-1"
  58.     s = WeekdayName(Weekday(s))

  59.     Dim a$, b&
  60.     a = Right(s, 1)
  61.    
  62.     If a = "一" Then b = 1
  63.     If a = "二" Then b = 2
  64.     If a = "三" Then b = 3
  65.     If a = "四" Then b = 4
  66.     If a = "五" Then b = 5
  67.     If a = "六" Then b = 6
  68.     If a = "日" Then b = 7
  69.    
  70.     doc.Tables(doc.Tables.Count).Cell(2, 2).Range.Text = b
  71.    
  72.     Dim h&
  73.     doc.Tables(doc.Tables.Count).Cell(3, 2).Range.Select
  74.     h = Selection.Tables(1).Rows.Count '最大行数
  75.    
  76.     b = b + 1
  77.     doc.Range(Start:=doc.Tables(doc.Tables.Count).Cell(3, 2).Range.Start, End:=doc.Tables(doc.Tables.Count).Cell(h, 2).Range.End).Select
  78.     Dim c As Cell, r As Range
  79.     For Each c In Selection.Cells
  80.         Set r = c.Range
  81.         If b > 7 Then b = b - 7
  82.         r.Text = b
  83.         b = b + 1
  84.     Next
  85.    
  86.     doc.Range(Start:=doc.Tables(doc.Tables.Count).Cell(2, 2).Range.Start, End:=doc.Tables(doc.Tables.Count).Cell(h, 2).Range.End).Select
  87.     For Each c In Selection.Cells
  88.         Set r = c.Range
  89.         r.MoveEnd unit:=wdCharacter, Count:=-1
  90.         If r.Text = 1 Then
  91.             r.Text = "一"
  92.         ElseIf r.Text = 2 Then
  93.             r.Text = "二"
  94.         ElseIf r.Text = 3 Then
  95.             r.Text = "三"
  96.         ElseIf r.Text = 4 Then
  97.             r.Text = "四"
  98.         ElseIf r.Text = 5 Then
  99.             r.Text = "五"
  100.         ElseIf r.Text = 6 Then
  101.             r.Text = "六"
  102.         ElseIf r.Text = 7 Then
  103.             r.Text = "日"
  104.         End If
  105.     Next
  106.    
  107.     Next q
  108.    
  109.     Selection.HomeKey unit:=wdStory
  110.     MsgBox "处理完毕!!!!!!!!!!!!", 0 + 48
  111. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-3-15 18:53 | 显示全部楼层
413191246se 发表于 2018-3-2 19:22
*请楼主备份原文件后应用下面的宏。
*请确保第1个月份必须是31天,否则出错!
*请自行命名下面的宏,本宏 ...

不好意思,本人菜鸟一枚, 请你帮忙做份文档出来,谢谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-3-16 10:56 | 显示全部楼层
413191246se 发表于 2018-3-16 00:47
楼主,我添加了3年的表格,请仔细核对每一个月的星期是否正确;并且根据页边距做了3种文档(原版(你的原版 ...

谢谢!辛苦了!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-19 09:48 , Processed in 0.044148 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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