Sri*_*asa 7 excel vba excel-vba word-vba
我需要每天从word文档中提取一个值并将其写入excel工作簿.我目前手动执行此操作,它是关于我最有效的方法的边界线
2使用单词导航到表格"9.STOCKS ......"(下面提取的示例 - 附录A)并阅读以红色突出显示的Diesel(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:Beatrice报告期:2010年8月10日00:01 - 24:00
如果您对我的问题有任何疑问,请回复我,我感谢您的努力,并希望提前感谢
这里是一些使用后期绑定的代码(声明对象而不是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
Run Code Online (Sandbox Code Playgroud)
您可以创建一个按钮并从那里调用该子按钮,或将GrabUsage()链接到功能键.
我注释掉了WApp.Visible = True因为在制作中你不希望WORD出现,但你需要它来调试和播放光标移动.
后期绑定(并且不使用对Word库的引用)的缺点是单元的硬编码(6 = story,5 = line,2 = word)而不是使用Word枚举,但我有时会因早期绑定而导致OS崩溃. ..不是很性感,但它似乎工作.
FileDialog对象需要对MS Office Office Library的引用.AFAIK这是Excel 2003中的标准,但最好检查而不是崩溃.
我没有包含代码来检查项目是否真的找到; 我把它留给你的创造力.
希望有所帮助.
| 归档时间: |
|
| 查看次数: |
46895 次 |
| 最近记录: |