2

每次我尝试在 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
4

4 回答 4

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
于 2013-06-10T14:03:21.180 回答
1

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

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

或者

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

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

于 2013-06-10T21:54:48.000 回答
0

我想这取决于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"
于 2013-07-20T13:06:45.827 回答
-2

嗯不熟悉SVN,但你可以试试

 .Open("Spec.docx", ReadOnly=False) or Open("Spec.docx", ConfirmConversions=False, ReadOnly=False)
于 2013-06-10T21:43:18.517 回答