2014-02-20 34 views
0

我有一個簡單的腳本,我想運行,並檢查,看看是否有一個word文檔打開,如果它是開放的,則使其可見。它可以是任何單詞文檔,所以我無法將其專門用於任何文件名。VBS /製作Word文檔可見

這裏是到目前爲止的代碼:

Dim Word 

Set Word = GetObject(, "Word.Application") 

If Word Is Nothing Then 
    MsgBox "Is not running" 
Else 
    MsgBox "Is running" 
    Word.Visible = True 
End If 

一切正常,除了Word.Visible = True。彈出窗口顯示「正在運行」,但文檔不會顯示在前面,可以選中或顯示。我錯過了什麼?謝謝!

更新的詳細信息:

我甚至已經嘗試過這樣的...

Dim Word 
Set Word = GetObject(, "Word.Application") 
Word.Visible = True 
Word.Selection.TypeText "Hello Word" 

有了這個代碼......只要字正在打開,它應該使其可見,然後寫你好詞。它確實寫了Hello Word,但沒有使其可見。一個我運行它,我可以看到Word在我的任務欄中閃爍,因爲您好Word已添加,但仍然不會顯示。希望有所幫助!

+0

MsgBox真的需要在'Word.Visible'之前顯示嗎?如果你交換這兩行,Word應該是可見的。 –

+0

我試過切換訂單只是爲了確定,但它仍然不顯示。現在只有MsgBox存在的原因是因爲我想確保它正確地檢查它是否正在運行。 – PuppySmurf

回答

1

看來你誤解了Visible屬性的工作原理。該屬性定義應用程序是否全部可見(如「在或不在任務欄中顯示」)。

顯然你的應用程序已經是可見的(否則你將無法看到它在任務欄閃爍),但你真正想要的是未最小化,並把它前面。 WindowState屬性應該爲你做:

Const wdWindowStateNormal = 0 
Const wdWindowStateMaximize = 1 
Const wdWindowStateMinimize = 2 

Set wd = GetObject(, "Word.Application") 

If wd Is Nothing Then 
    MsgBox "Is not running" 
Else 
    MsgBox "Is running" 
    wd.WindowState = wdWindowStateNormal 
End If 
+0

非常感謝您......現在您明白了,我確實誤解了Visible財產!非常感謝! – PuppySmurf

1
Set oWord = CreateObject ("Word.Application") 

oWord.Visible = True 
+0

我知道這樣做可以讓Word可見......但是這會創建一個新的Word會話,我想檢查它是否已經打開,如果有,請使其可見。如果沒有人打開,我不想要一個新的。 – PuppySmurf