【问题标题】:How to open a Read-only Word Document from Excel VBA如何从 Excel VBA 打开只读 Word 文档
【发布时间】:2019-01-17 22:01:12
【问题描述】:

每次我尝试在 VBA excel 中打开 word 文档时,我都会在后台弹出一个窗口,询问我如何打开它,因为它被标记为只读。我查看了文件的属性,它不是只读的,但它处于修订控制(tortoise-SVN)中。

Sub ReadSpec()
'References
'  Microsoft Word 14.0 Object library
'
Dim Paragraphe As Object

Dim WordApp As Word.Application
Set WordApp = CreateObject("Word.Application")

Dim WordDoc As Word.Document
Set WordDoc = WordApp.Documents.Open("Spec.docx")
WordApp.Visible = True

WordDoc.Close
WordApp.Quit


End Sub

【问题讨论】:

  • hmmm 对 SVN 不熟悉,但你可以试试 .Open("Spec.docx", ReadOnly=False)Open("Spec.docx", ConfirmConversions=False, ReadOnly=False)
  • 然后我会添加它作为答案:)

标签: excel vba ms-word


【解决方案1】:

该文件可能正在被另一个应用程序使用,这就是为什么您被告知它是只读的。除非您想写入文件,否则这不是问题。如果您只是想从中阅读,我的建议是添加

Application.DisplayAlerts = False

看看它是否为你摆脱了提示。另请注意,按照

Sub YourMethod
    Dim PrevDispAlerts as Boolean

    PrevDispAlerts = Application.DisplayAlerts
    Application.DisplayAlerts = False

    'code that does something goes here

    Application.DisplayAlerts = PrevDispAlerts
End Sub

【讨论】:

    【解决方案2】:

    我不熟悉 SVN,但您可以尝试:

    .Open("Spec.docx", ReadOnly=False) 
    

    .Open("Spec.docx", ConfirmConversions=False, ReadOnly=False)
    

    这些会抑制两个常用对话框并强制执行默认行为。如果您需要覆盖,则必须在上述代码中明确说明(即,ReadOnly=True 强制只读)或只允许显示对话框,使用您的原始代码。

    【讨论】:

      【解决方案3】:

      我想这取决于 Excel 的版本。解决方案通常适用于一个版本,但不适用于另一个版本。

      http://smallbusiness.chron.com/open-word-document-excel-using-vba-40430.html

      我发现这段代码有效。

      'Open an existing Word Document from Excel
      Dim objWord As Object
      Set objWord = CreateObject("Word.Application")
      objWord.Visible = True
      'Change the directory path and file name to the location
      'of the document you want to open from Excel
      objWord.Documents.Open "C:\Documents\myfile.doc"
      

      【讨论】:

        【解决方案4】:

        hmmm 不熟悉 SVN 但你可以试试

         .Open("Spec.docx", ReadOnly=False) or Open("Spec.docx", ConfirmConversions=False, ReadOnly=False)
        

        【讨论】:

        • 哇,这实际上是一个答案,但你从字面上逐字复制了我对 OP 的评论——加上无用的“hmmm”。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多