2015-04-22 79 views
0

我正在将Excel单元格内容复制到窗体编辑受限制(2010)Word文档上的书签,但只有在保护功能关掉。无法从Excel复制并粘贴到窗体编辑受限制的Word文档,除非限制关闭

代码我目前必须打开保护再次错误。什么是正确的代码?

有没有办法在不关闭保护的情况下进行复制和粘贴?

第二个问题是当文本被粘贴到书签上时,字体是红色的(如果在文档上手动输入它是黑色的)。 Word的默认设置为黑色(我重置默认的好措施)。在新文档中键入的内容是黑色的,但是,当Word打开字体图标时,即使检查默认设置仍然显示为黑色,但显示为红色。我可以在VBA中定义字体颜色来覆盖此问题,直到解决问题或者您能否提出解决Word默认设置的方法?

Sub Arzbericht_Brandstetter() 

' x - Defined Cell Names - ARTBrandPATH , ARTBrandDOC 

'        Excel   Word Bookmark 
' x - Defined Cell Names - ARZKrankenhaus  Text65 


Dim wb As Workbook 
Dim ws As Worksheet 
Set wb = ActiveWorkbook 
Set ws = ActiveSheet 

Dim Wd As Object 
Dim wdDoc As Object 
Dim BrandstetterDoc As Object 
Dim BrandstetterPath As String 

Dim f As Boolean 

BrandstetterPath = ActiveSheet.Range("ARTBrandPATH").Value & ActiveSheet.Range("ARTBrandDOC").Value & ".doc" ' x 

' On Error Resume Next 

Set BrandstetterDoc = GetObject(BrandstetterPath) 

If BrandstetterDoc Is Nothing Then 
    Set Wd = GetObject(, "Word.Application") 
    If Wd Is Nothing Then 
     Set Wd = CreateObject("Word.Application") 
     If Wd Is Nothing Then 
      MsgBox "Failed to start Word!", vbCritical 
      Exit Sub 
     End If 
     f = True 
    End If 
    Set BrandstetterDoc = Wd.Documents.Open(BrandstetterPath) 
    If BrandstetterDoc Is Nothing Then 
     MsgBox "Failed to open Brandstetter Document!" & vbNewLine & _ 
        " Check File Directory is correct", vbCritical 
     If f Then 
      Wd.Quit 
     End If 
     Exit Sub 
    End If 
    Wd.Visible = True 
Else 
    With BrandstetterDoc.Parent 
     .Visible = True 
     .Activate 


' Turn Protection OFF 
     With ActiveDocument 
      .Unprotect "xxxxx" 
      .Protect wdAllowOnlyRevisions, , Password:="xxxxx" 
     End With 

     BrandstetterDoc.Bookmarks("Text65").Range.Text = ws.Range("ARZKrankenhaus").Value 


' Turn Protection ON (Restricted Editing) 
'   ActiveDocument.Protect Type:=wdAllowOnlyFormFields, NoReset:=True 

    End With 
End If 

End Sub 

回答

0

因为它的Formfield,而不仅仅是一个书签,我改变了代码,如下所示,解决了奇怪的红色字体问题。我现在可以复制到受保护的文档。

From 
BrandstetterDoc.Bookmarks("Text65").Range.Text = ws.Range("ARZKrankenhaus").Value 
To 
ActiveDocument.FormFields("Text65").Result = ws.Range("ARZKrankenhaus").Value