我需要每天从word文档中提取一个值并将其写入excel工作簿。我目前手动执行此操作,它是关于我最有效的方法的边界线
2使用单词导航到表格“9。 STOCKS ......“(下面提取的示例 - 附录A)并阅读以红色突出显示的柴油(ltrs)日常使用情况。
3.将此值写入电子表格单元格。
下面显示的是表格,因为格式化我无法向您发送确切的表格,但我可以发送它的值。
9.STOCKS(截至报告日发布时间00:01)。 股票持有 每日使用量 最低库存
柴油(ltrs)
390436
的 15012
25000
氮(mm)
35
1
19
冠军1033(手提箱)
15
1
4
Nexguard(锅炉)
4
0.25
4 x 200 ltrs
附录B: 比阿特丽斯报告期: 2010年8月10日00:01 - 24:00
如果您对我的问题有任何疑问,请回复我,感谢您的努力,并希望提前感谢
答案 0 :(得分:7)
这里有一些代码使用了后期绑定(声明对象而不是word.application等)。从 Excel 2003 ,它
步骤2-5重复“报告期间:”(注意“:”是一个单词边界,所以我们需要向右跳8个字来到达日期)
对于WORD,我原样从你的Q中复制了文本(没有表格,只有纯文本)。如果您使用表格,则可能需要使用各种Move
语句的单位(例如,对于单元格unit:=12
);策略保持不变:找到一个恒定的文本,将光标移动到最终目的地,扩展选择,创建一个单词范围并进行传输。
这两个项目都放在Excel及其右邻居的当前单元格中。
Sub GrabUsage()
Dim FName As String, FD As FileDialog
Dim WApp As Object, WDoc As Object, WDR As Object
Dim ExR As Range
Set ExR = Selection ' current location in Excel Sheet
'let's select the WORD doc
Set FD = Application.FileDialog(msoFileDialogOpen)
FD.Show
If FD.SelectedItems.Count <> 0 Then
FName = FD.SelectedItems(1)
Else
Exit Sub
End If
' open Word application and load doc
Set WApp = CreateObject("Word.Application")
' WApp.Visible = True
Set WDoc = WApp.Documents.Open(FName)
' go home and search
WApp.Selection.HomeKey Unit:=6
WApp.Selection.Find.ClearFormatting
WApp.Selection.Find.Execute "Minimum Stock"
' move cursor from find to final data item
WApp.Selection.MoveDown Unit:=5, Count:=1
WApp.Selection.MoveRight Unit:=2, Count:=2
' the miracle happens here
WApp.Selection.MoveRight Unit:=2, Count:=1, Extend:=1
' grab and put into excel
Set WDR = WApp.Selection
ExR(1, 1) = WDR ' place at Excel cursor
'repeat
WApp.Selection.HomeKey Unit:=6
WApp.Selection.Find.ClearFormatting
WApp.Selection.Find.Execute "Period of Report:"
WApp.Selection.MoveRight Unit:=2, Count:=8
WApp.Selection.MoveRight Unit:=2, Count:=3, Extend:=1
Set WDR = WApp.Selection
ExR(1, 2) = WDR ' place in cell right of Excel cursor
WDoc.Close
WApp.Quit
End Sub
您可以创建一个按钮并从那里调用该子按钮,或将GrabUsage()链接到功能键。
我评论了WApp.Visible = True
因为在制作中你不希望WORD出现,但你需要它来调试和播放光标移动。
后期绑定(并且不使用对Word库的引用)的缺点是单元的硬编码(6 = story,5 = line,2 = word)而不是使用Word枚举,但我有时会在早期遇到OS崩溃绑定....不是很性感,但似乎有效。
FileDialog对象需要对MS Office Office Library的引用。 AFAIK这是Excel 2003中的标准,但最好检查而不是崩溃。
我没有包含检查项目是否真正找到的代码;我把它留给你的创造力。
希望有所帮助。