博客插入表格/Word中的“宏”

录入单词前的基础工作

插入表格

为了把中英文对照以更便于查看的样式呈现,决定使用表格,一边英文一边中文。由于编写博客使用的Markdown(一种很简洁的标记语言)并不支持表格,只能使HTML中的<table>标签

<table>
<tr>
<td>Apple</td>
<td>苹果</td>
</tr>
<tr>
<td>Peach</td>
<td>桃子</td>
</tr>
</table>

一般是得<table border=”1”>,才加上边框,但是我这里加不加都一样。

效果如下:

Apple 苹果
Peach 桃子

虽然字有点小,但也可以用。

Word中的“宏”

打文档时肯定没人想直接带着标签生打,就算提前复制粘贴好标签再填进去也有点麻烦。

为了省事,我打算用宏来把左面的转换成右面的。

Apple
苹果
Peach
桃子

<tr><td>Apple
</td><td>苹果
</td></tr>
<tr><td>Peach
</td><td>桃子
</td></tr>

这样之后上下再加个table标签就可以使了。虽然这种排法不好看标记之间的关系,但是更方便宏的编写。

宏就是通过模拟按键来实现各种操作,录制一个宏就可以使用了。下面放一段代码,是点一下换一下的。

一下一次(摸索过程,不是最优的方法,有bug)

代码:

Sub 每两行变一行HTML表格()
'
' 每两行变一行HTML表格 宏
'
'
Selection.TypeText Text:="<tr><td>"
    Selection.MoveDown Unit:=wdLine, Count:=1
    Selection.MoveUp Unit:=wdParagraph, Count:=1
    Selection.TypeText Text:="</td><td>"
    Selection.MoveDown Unit:=wdLine, Count:=1
    Selection.MoveUp Unit:=wdParagraph, Count:=1
    Selection.TypeParagraph
    Selection.MoveUp Unit:=wdLine, Count:=1
    Selection.TypeText Text:="</td></tr>"
    Selection.MoveDown Unit:=wdLine, Count:=1
    Selection.MoveUp Unit:=wdParagraph, Count:=1
End Sub

使用方法:

  • 点击录制宏
  • 选择指定到按钮(选键盘也可以,本文以指定到按钮为例)
  • 选中你所创建的宏,点击添加,加入到快捷工具栏
  • 点击停止录制
  • 点击查看宏
  • 选中宏并点击编辑
  • 用上面的代码将原来的代码替换
  • 保存并关掉编辑窗口
  • 将光标移动你要开始转换的地方(一闪一闪的那个光标)
  • 点击刚刚所创建的按钮

原理:

  • 输入“<tr><td>”
  • 光标下移一行(按键盘上向下的下箭头)
  • 光标移到此行开头(按CTRL+向上的箭头)
  • 输入“</tr><td>”
  • 光标下移一行
  • 光标移到此行开头
  • 换行
  • 光标上移一行
  • 输入“</td></tr>”
  • 光标下移一行
  • 光标移到此行开头

从原理可以看出它不支持超过一行的文本,够用就行了呗😜。

这里贴出快捷键的来源:Word 中的键盘快捷方式,可以自己再探索一下宏的其他应用。

改进版(重新写的,又用了一种方法)

参考:什么是「宏」? 为什么以前计算机老师说不要用 word 中的「宏」?

上面的方法不太好,不支持超过一行的文本,还不支持自动化,所以又摸索了一下,下面是改进版。上面的也算我摸索的过程,就不删掉了。

一下一次改进版代码:

Sub 每两行变一行HTML表格一下一次()
'
' 每两行变一行HTML表格一下一次 宏
'
    Selection.TypeText Text:="<tr><td>"
    Selection.MoveDown Unit:=wdParagraph, Count:=1
    Selection.TypeText Text:="</td><td>"
    Selection.MoveDown Unit:=wdParagraph, Count:=1
    Selection.TypeText Text:="</td></tr>"
    Selection.TypeParagraph

End Sub

自动版代码:

Sub 每两行变一行HTML表格()
'
' 每两行变一行HTML表格 宏
'
    Selection.MoveDown Unit:=wdScreen, Count:=1, Extend:=wdExtend

Do While Len(Selection) > 2

    Selection.MoveLeft Unit:=wdCharacter, Count:=1

    Selection.TypeText Text:="<tr><td>"
    Selection.MoveDown Unit:=wdParagraph, Count:=1
    Selection.TypeText Text:="</td><td>"
    Selection.MoveDown Unit:=wdParagraph, Count:=1
    Selection.TypeText Text:="</td></tr>"
    Selection.TypeParagraph

    Selection.MoveDown Unit:=wdScreen, Count:=1, Extend:=wdExtend

Loop

End Sub

一下一次原理:

  • 输入“<tr><td>”
  • 光标移到下一行开头(按CTRL+向下的箭头)
  • 输入“</tr><td>”
  • 光标移到下一行开头
  • 输入“</tr></td>”
  • 换行

自动版原理:

对比一下代码的差别,找出实现自动的代码。

  • Selection.MoveDown Unit:=wdScreen, Count:=1, Extend:=wdExtend
    选择从当前位置到当前行末尾之间的内容。(Shift+End)

  • Do While Len(Selection) > 2 & loop
    Len(Selection):选中的字符数
    Do While <条件> …… loop:只要满足条件,就重复执行两者间的指令

  • Selection.MoveLeft Unit:=wdCharacter, Count:=1
    模拟小键盘“<-”建,光标不动,取消选中。


1.选择从当前位置到当前行末尾之间的内容
2.当内容长度大于2(不是空的)重复执行:
——2.1光标不动,取消选中
——2.2运行一下一次版
——2.3选择从当前位置到当前行末尾之间的内容

后话

这个可以把字填进网页的表格,复制网页的表格再粘贴在Word内,便实现了字到表的转变。(虽然很简陋)😂




性感CC - 在线找打
------ 我是分割线 ------