首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自2010年起将Excel数据复制到Office2016升级后的Word

自2010年起将Excel数据复制到Office2016升级后的Word
EN

Stack Overflow用户
提问于 2019-10-08 01:32:02
回答 2查看 535关注 0票数 1

我们将数据从Excel单元格复制到基于.docx模板文档的新Word文档中。Word文档中的位置是带有书签的。

VBA代码一直在工作,但是自从从2010年升级到MS Office 2016之后,我们就出现了错误:

运行时错误4605此方法或属性不可用,因为

剪贴板为空或无效。

然后我得到了

4605此方法或属性不可用,因为此命令是

不可读

我试了一下wdDoc.Bookmarks…

6124您不允许编辑此选择,因为它是

受保护

我检查了所有的保护,信任中心的设置,等等,所有看起来都是正确的。

"editProject“是一个单细胞标签。

代码语言:javascript
复制
Dim wdApp   As Object
Dim wdDoc   As Object
Set wdApp = CreateObject("Word.application")
Set wdDoc = wdApp.Documents.Open(Filename:=WdocT, ReadOnly:=True)

' Project NAME
wdDoc.Bookmarks("BOOKMARK1").Range.Select '     wdDoc.Bookmarks("CLIENT").Range.Select
xlData = Sheets("Data Input").Range("editProject") ' get the data

'THIS IS THE PROBLEM LINE
wdApp.Selection.TypeText Text:=xlData ' place in doc '8/10/19 FALLING OVER HERE

我知道文档正在打开,并且找到了书签,我在下面输入以检查:

代码语言:javascript
复制
'temp TRY THIS
Dim tempRange As Word.Range
Dim tempStart As Long
Dim tempEnd As Long
'   Set tempRange = wdDoc.Bookmarks("BOOKMARK1").Range
Set tempRange = wdDoc.Bookmarks("BOOKMARK2").Range ' THIS WORKS
tempStart = tempRange.Start
tempEnd = tempRange.End

我尝试用以下方法清除剪贴板:

代码语言:javascript
复制
' 8/10/19 Bruce the following may help with clipboard error message 4605
wdDoc.UndoClear
Dim oData As New DataObject ' object to use the clipboard
oData.SetText Text:=Empty ' clear
oData.PutInClipboard ' take in the clipboard to empty it
'Application.Wait (Now + TimeValue("00:00:10")) ' this is required to stop clipboard overflow error
Application.CutCopyMode = False ' 8/10/19 Bruce - this should clear the clipboard
DoEvents ' test fixing error 4605
' DoEvents passes control to the operating system.
' Control is returned after the operating system has
'  finished processing the events in its queue

我在适当的地方尝试了以下几点,但没有什么区别:

代码语言:javascript
复制
Dim wdApp   As Word.Application
Dim wdDoc   As Word.Document
wdApp.Visible = True

我尝试了下面的一行,而不是复制,但同样的错误被抛出;

代码语言:javascript
复制
wdApp.Selection.MoveDown Unit:=wdLine, Count:=1
EN

回答 2

Stack Overflow用户

发布于 2019-10-13 23:12:39

如果Excel设置“阅读视图中的打开电子邮件附件和其他不可编辑的文件”没有勾选,它似乎是工作的。

票数 0
EN

Stack Overflow用户

发布于 2020-08-21 14:31:40

在我的环境升级到2016年办公室后,我也遇到了类似的问题。在升级之前,我的代码运行得很好。

我后来注意到的一件事是,升级到Office 2016之后,以前使用的相同的VBA代码将在“读取模式”中打开一个Word doc。在这种模式下,不允许对文档进行编辑,无论是通过UI还是通过代码。这是神秘错误消息"4605此方法或属性不可用,因为此命令不可读“的意思。

为了解决这个问题,我添加了下面的一行,使Word切换回“打印布局视图”。

代码语言:javascript
复制
objWord.ActiveWindow.View.Type = wdPrintView

其中objWord是由此处未列出的代码创建的单词对象。

然后,我可以使用像这样的旧代码通过VBA输入文本:

代码语言:javascript
复制
objWord.Selection.GoTo What:=wdGoToBookmark, Name:=bookmarkName
objWord.Selection.TypeText Text:=someText

因此,如果您注意到您的VBA代码碰巧在“读取模式”中打开了一个Word doc,那么您可以尝试一下这个工作。

在这个链接中描述了类似的情况,我在发现自己的工作之后发现了这个情况:

https://blogs.msmvps.com/wordmeister/2013/02/22/word2013bug-not-available-for-reading/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58279104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档