永发信息网

VBA Word Excel 数据交互

答案:2  悬赏:80  手机版
解决时间 2021-03-05 20:35
现在因公司里面的要求,需要做一个小项目,就是让用户能够在习惯的Word表格里面填写信息,保存后信息自动保存在excel里面,也就是excel与Word之间的信息互转问题。
现在面临的问题是,用excel的VBA打开供用户填写的有着空白表格Word后,Word无法得到excel里面的比如填报人姓名对应的单元格的信息。
比如说,在一个名为“总工月报表.xlsm”里面,我给加了一个控件按钮,点击之后会打开路径为“F:\总工月报表.docm”的有着空白表格的Word文档,"总工月报表.xlsm"的C2单元格的值是填报人的姓名,怎么才能让这个路径为“F:\总工月报表.docm”的有着空白表格的Word文档在打开时,其中的表格的第一行第二列的位置自动写入"总工月报表.xlsm"的C2单元格的值,即填报人的姓名呢?
还望高手不吝赐教
联系方式:cjt92cjt92@163.com
最佳答案
我是使用OFFICE 2003来做的,不知道你那好使不好使
Private Sub CommandButton2_Click()
'防止重复打开同一Word文档导致错误
If Not WordDocIsOpen("F:\总工月报表.doc") Then
'创建Word对象
Set objWordApp = CreateObject("Word.Application")
objWordApp.Visible = True
'打开指定文档
Set objDocument = objWordApp.Documents.Open("F:\总工月报表.doc")
'获取当前Excel的SHEET1的单元格C2数据
strName = ThisWorkbook.Sheets(1).Cells(2, 3).Value
'将取得得值设定到Word表格的1行2列中
objDocument.Tables(1).Cell(1, 2).Range.Text = strName
End If

End Sub

'判断Word文档是否被重复打开
Function WordDocIsOpen(ByVal strDocName As String) As Boolean
Dim objWordApp As Object
Dim objWordDoc As Object
WordDocIsOpen = False
Set objWordApp = Nothing
On Error Resume Next

strDocName = UCase(strDocName)
'判断是否有Word程序被打开
Set objWordApp = GetObject(, "Word.Application")
If Not objWordApp Is Nothing Then
'判断指定Word文件是否被打开
For Each objWordDoc In objWordApp.Documents
If UCase(objWordDoc.FullName) = strDocName Then
WordDocIsOpen = True
Exit For
End If
Next
End If

Set objWordDoc = Nothing
Set objWordApp = Nothing
End Function
全部回答
将excel和word放在同一目录下, 在excel中建立按钮,双击后输入下列代码: private sub commandbutton1_click() application.screenupdating = false '关闭屏幕刷新 on error resume next '捕捉错误 dim ost as range, wddoc as word.document, wdrange as word.range mypath = thisworkbook.path & "\2.doc" '定义word文件路径,名字自己修改,我设定为2.doc set wddoc = getobject(mypath) '打开word dim key(2) '定义一下数组, key(1) = "abcdefg" '要替换的数据 key(2) = "hijklmn" set wdrange = wddoc.content '将word的文档内容赋予wdrange for i = 1 to 2 '循环 with wdrange.find .text = key(i) '查找 .replacement.text = key(i) & iif(i = 1, cells(1, 1).value, cells(5, 2).value) '替换 .forward = true .wrap = wdfindcontinue .format = false .matchcase = false .matchwholeword = false .matchbyte = true .matchwildcards = false .matchsoundslike = false .matchallwordforms = false end with wdrange.find.execute replace:=wdreplaceall '全部替换 next wddoc.save '保存word wddoc.close '关闭word set wddoc = nothing application.screenupdating = true '开启屏幕刷新 end sub 经测试,已经达到楼主要求,请追加分数并采纳.呵呵
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
华盛文具在哪里啊,我有事要去这个地方
刚倒好一个星期的水泥为什么随便刮下都会碎,
炒原油能挣钱吗
据传为汉代人牟融所著的《理惑论》中有一则“
【什么的潮声】什么的潮声
营口路,靖宇中路到浦东机场怎样乘地铁公交
dreamtimes 是哪里的品牌?
求助x99的主板大家推荐下用那种比较好
小攻是兽人,他爸爸是穿越到兽人世界的受受。
议论文开头怎么写
PH箱全称为牵引和辅助设备箱。
芙蓉树下我想知道这个在什么地方
五年级一班的男生人数是偶数,在40~50之间.
hello venus为什么不属于pledis公司。
谁有正确电子琴多指和弦指法表,能否讲解多指
推荐资讯
钟无艳的歌曲鉴赏
房贷是怎么计算的
华一网怎么样?上海装修选择哪家?贵吗?
民生银行云闪付怎么用
谐波保护器有没有强制性规定安装
哪里可以下载日剧《第101次求婚》国语全集 当
范蠡名言有哪些 范蠡后代改成什么姓了
中国移动通信中馆镇指定专营店地址在哪,我要
望京小腰望京总店地址有知道的么?有点事想过
轻伤害事实清楚 检察院还退回补充侦查是为什
现在1250元港币换人民币能换多少?
仓鼠拉稀吃什么食物好
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?