[[20210306235233]] 『Ecel からワードドキュメントを開くとき』(Sinko) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『Ecel からワードドキュメントを開くとき』(Sinko)

前略
始めましてご指導お願いします。
ExcelのVBAでワードドキュメントを開くコードを書きました。
コードは必要ならば次回掲載します。
Windows7,つまりOffice2007まではドキュメントを編集モードで開いたところ,ドキュメントが画面全体に開きます/開きました。全画面です。しかし、Windows10つまり、Office2019;64ビットではドキュメントのアイコンがタスクトレイに表示されるまでで、それ以上発展しません。

これは私の考えですが、32ビットまでは開いて最大化されるが、64ビットでは、それができない。という結論に至りましたが、これは間違いでしょうか。もし私の想定が、間違っていたら、次回コードを掲載しますので、修正していただければ。うれしいです。。
以上

< 使用 アプリ:2000及び2007、使用 OS:Windows7XpWindows7及びWindows10 >


コードを見せてください

(マナ) 2021/03/07(日) 08:43


↓の実行結果を教えて下さい

 Sub test()

    With CreateObject("word.application")
        .Visible = True
        MsgBox .WindowState
        .Activate
    End With

 End Sub

(マナ) 2021/03/07(日) 22:23


前略 msgboxで1が表示されました
(Sinko) 2021/03/08(月) 13:16

>msgboxで1が表示されました

ということは、ワードは最大化された状態のはずですが、
期待する結果は、こういうことでは違うのですか?

>アイコンがタスクトレイに表示されるまでで、それ以上発展しません。

発展しません の意味がわからないので、コードを見せてください

(マナ) 2021/03/08(月) 16:59


前略
はい、確かに1は最大化するオプションですね。
 発展しませんとは、アイコンのままでアイコンの色が変色した状態です。そのアイコンをマウスでクリックすれば最大化します。
 コードについては、前回貼り付けたつもりですが、貼り付けられていませんです。
 初めての質問であり、このサイトの操作がいまだ分かっていないです。以下に貼り付けます。

 Option Explicit
Sub Test_練習Open()
    Dim Tagdir As String, Tagbook As String

    Tagdir = "C:\Test2019\"
    Tagbook = "Test1.doc"
    CP_正しい語句検索 Tagdir, Tagbook
End Sub
Public Sub CP_正しい語句検索(ByVal Tagdir, ByVal Tagbook)
    Const wdWindowStateNormal = 0
    Const wdWindowStateMaximize = 1
    Const wdWindowStateMinimize = 2
    Const wdStory = 6

    Dim wdapp As Word.Application
    Dim wddoc As Word.Document
    Dim Sword As String
    Dim Fpath As String
    Dim waitTime As Variant

'Inisial

    Sword = "in作業中"
    Fpath = Tagdir & Tagbook  'Openするドキュメントをパス名付きで設定する
    waitTime = Now + TimeValue("0:00:01")          'エラー回避のために1秒待つ設定

'ここでワードを開く

    Set wdapp = CreateObject("Word.Application")   '何もないWordが立ち上がる
    wdapp.Visible = True

    Set wddoc = wdapp.Documents.Open(Fpath)

'見える化

    Application.Wait waitTime                      '1秒後経過(待つ)
    wdapp.Visible = True
    wdapp.Activate
    Application.Wait waitTime                      '1秒後経過(待つ)
'in作業中 検索****
    With wdapp
        .Selection.Find.ClearFormatting
        .Selection.HomeKey Unit:=wdStory  ' 検索する方向文末方向
        .Selection.Find.Text = Sword      ' 検索するキーワードを指定する
        .Selection.Find.Forward = True
        If .Selection.Find.Execute Then  '見つかったらここでならないけれど全画面です
            With .Selection
            End With
        Else
        End If
    End With
    wdapp.Visible = True
    wdapp.Activate

'最大化

    If wdapp.WindowState = wdWindowStateMinimize Then
       wdapp.WindowState = wdWindowStateMaximize
    ElseIf wdapp.WindowState = wdWindowStateNormal Then
       wdapp.WindowState = wdWindowStateMaximize
    Else
       wdapp.WindowState = wdWindowStateMaximize
    End If
    Application.Wait waitTime                      '1秒後経過(待つ)
    wdapp.WindowState = wdWindowStateMaximize
    wdapp.Visible = True
    wdapp.Activate

    Set wddoc = Nothing
    Set wdapp = Nothing
End Sub

(Sinko) 2021/03/08(月) 21:14


まずは、これで試してみてください。
不要なものを削除しました。

 Option Explicit

 Sub Test_練習Open()
    Dim Tagdir As String, Tagbook As String
    Dim Sword As String

    Tagdir = "C:\Test2019\"
    Tagbook = "Test1.doc"
    Sword = "in作業中"

    CP_正しい語句検索 Tagdir & Tagbook, Sword

 End Sub

 Private Sub CP_正しい語句検索(ByVal Fpath As String, ByVal Sword As String)
    Const wdWindowStateMaximize = 1
    Dim wdapp As Object
    Dim wdrng As Object

    Set wdapp = CreateObject("Word.Application")
    wdapp.Visible = True
    Set wdrng = wdapp.Documents.Open(Fpath).Content

    With wdrng.Find
        .ClearFormatting
        .Text = Sword
        If .Execute Then

        End If
    End With

    wdapp.Activate
    wdapp.WindowState = wdWindowStateMaximize

    Set wdrng = Nothing
    Set wdapp = Nothing

 End Sub

(マナ) 2021/03/08(月) 22:20


前略
 ご指導のコードを試してみました。
 ドキュメントが全画面にならないことは、変わりません。
 また、コードの2番目の目的である前日に終わったところにin作業中と記入した所に開いた後にジャンプすることができませんでした。
   以上報告です。

(Sinko) 2021/03/09(火) 14:08


>ドキュメントが全画面にならないことは、変わりません。

全画面表示とは、最大化ではなく
↓のことでしょうか。

https://docs.microsoft.com/ja-jp/office/vba/api/word.view.fullscreen

(Sinko) 2021/03/08(月) 21:14 のコードには
それに相当するものがないので違うとは思いますが
念のため確認します。

(マナ) 2021/03/09(火) 17:24


前略
 全画面とはワードを普通に開く状態です。つまり、コードでは編集モードで開くことです。
 特に変わった開き方ではありません。
 以上
(Sinko) 2021/03/09(火) 21:17

では、順番に。
これで、Wprdの画面が最前面に表示されますか。

 Sub test()
    With CreateObject("word.application")
        .Visible = True
        .Activate
    End With
 End Sub

(マナ) 2021/03/09(火) 21:39


これでも、最前面に表示されますか。

 Sub test2()
    With CreateObject("word.application")
        .Visible = True
        .documents.Add
        .Activate
    End With
 End Sub

  Sub test3()
    With CreateObject("word.application")
        .Visible = True
        .documents.Open "C:\Test2019\Test1.doc"
        .Activate
    End With
 End Sub

(マナ) 2021/03/09(火) 21:49


前略
いずれも、今までと同じです。
当然と言えば、test2はワードの白紙状態が開き、test3はTes1.docというドキュメントが開きます。
しかし、タスクトレイのアイコンまでです。
 以上
(Sinko) 2021/03/09(火) 23:18

では、これではどうなりますか

 Sub test4()
    With CreateObject("word.application")
        .Visible = True
        AppActivate .Caption
    End With
 End Sub

(マナ) 2021/03/09(火) 23:51


前略
どのように言えばよいか分かりませんが、ワードが起動してアイコン状態です。しかも、タスクトレイにアイコンがある状態です。それをクリックするとワードが起動した状態で編集モードでもなく、ドキュメントがあるでもない状態です。何もない状態です。
    以上
(Sinko) 2021/03/10(水) 18:02


タスクトレイのアイコンがどうのこうの何を言っているかさっぱり分からん
(KP) 2021/03/10(水) 18:14

横から失礼します。

「Wordがアイコン化したまま開かない」でネット検索して得られる記事が、
参考になりませんか?

コードの問題というより、環境面の問題かもしれませんね。

https://answers.microsoft.com/ja-jp/windows/forum/all/%E3%82%BF%E3%82%B9%E3%82%AF%E3%83%90%E3%83%BC/4960f5bf-629c-4c04-98cb-41b024b8ad50

https://docs.microsoft.com/ja-jp/office/troubleshoot/word/issues-when-start-or-use-word
(γ) 2021/03/10(水) 18:27


エクセルから開いたときのみの問題ということは確認済の前提で

 Sub test5()
    Dim wd As Object
    Dim p As String
    Dim s As String

    p = "C:\Test2019\Test1.doc"
    s = "in作業中"

    CreateObject("wscript.shell") .Run """" & p & """", 3

    Do While wd Is Nothing
        Application.Wait Now + TimeSerial(0, 0, 1)
        On Error Resume Next
        Set wd = GetObject(, "word.application")
        On Error GoTo 0
    Loop

    wd.Selection.Find.Execute findtext:=s

 End Sub

(マナ) 2021/03/10(水) 20:54


横から失礼しますさんへ

前略
ご指摘のサイトの内容は現象としては同じと思います。しかし、そこでのご指導の内容は私には
再現できませんでした。多分、このことをコードに盛り込めばよいと思いまがそれが、できません。

環境ですか、確かにその様な気がいたします。
ただ、VBAの参照設定であれな、VBAから指示なり指摘がありますよね。
それで私が最初に申し上げました,32ビットと64ビットの違いでできないのかなと思いました。
 それに、このコードをF8によるステップ バイ ステップで行えば、希望通りの最大化します。
さらに、一度、最大化すれば、それ以降は、コードをフォームボタンから行っても必ず最大化します。
しかし、Excelを一度閉じてしまえば、やはりもう最大化しません。
 また、環境と言われれば、気になることがあります。
 実は、このブックの親ブック呼び出しブックはWSHによりデスクトップから起動しています。
 理由は以前のバージョンではセキュリティ上開く時点で忠告が出るからです。
 Excel2019では親ブックのショートカットをデスクトップに直接置いて開いてもセキュリテイの
忠告が出ません。それで、親ブックのショートカットを直接デスクトップに置き、そこから起動して
みましたが、全く関係ないようで、希望通りのことが実現できません。
                              以上
(Sinko) 2021/03/11(木) 15:00


|実は、このブックの親ブック呼び出しブックは
|WSHによりデスクトップから起動しています

今回の色々なテストと関係ある話ですか?
(γ) 2021/03/11(木) 17:27


環境という観点からみると関係あると思います。
 以上
(Sinko) 2021/03/12(金) 10:49

以下の方法で解消できるかと思います。

https://koroko.hatenablog.com/entry/2019/11/10/191337
(N) 2021/05/10(月) 16:30


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.