[[20201002200839]] 『【VBA】shell関数内、「での引数の記述について』(もも) ページの最後に飛ぶ

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

 

『【VBA】shell関数内、「での引数の記述について』(もも)

お世話になります。

下記のコードで実行したところ、shell関数の部分で
「ファイルが見つかりません」とのエラーが発生します。

フォルダ内にマクロを記述したExcelファイルとPDFファイルが
一緒に入っている状態です。
また、「DIR_PATH = "\\●●●\ "」でpdfの入っているフォルダを指定しています。

かなり初歩的な記述ミスだとは思うのですが
色々試行錯誤しているうちに泥沼に嵌り、よく分からない状態です。

ちなみに下記の「DIR_PATH & fl_name」の部分を「"フルパス"」にすれば
動作することを確認しました。

どのように記述すれば、動作するのでしょうか?
教えてください。

Sub フォルダ内のPDFをWORDで開く()

  Const DIR_PATH = "\\●●●\ "
  Dim fl_name As String
  fl_name = Dir(DIR_PATH & "\*.pdf")
    Dim path0 As String
     path0 = ThisWorkbook.path
    Dim fs As Scripting.FileSystemObject
    Dim basefolder As Scripting.Folder
    Dim mysubfiles As Scripting.Files
    Dim mysubfile As Scripting.File
    Set fs = New Scripting.FileSystemObject
    Set basefolder = fs.GetFolder(path0)
    Set mysubfiles = basefolder.Files

    For Each mysubfile In mysubfiles

        If InStr(mysubfile.path, ".pdf") > 0 Then

            Shell ("C:\Program Files (x86)\Microsoft Office\Office16\WINWORD.EXE" & DIR_PATH & fl_name), vbNormalFocus
        End If

    Next

End Sub

< 使用 Excel:Excel2016、使用 OS:Windows10 >


 アプリケーションとファイル名に間に半角スペース
 が必要だったように思います。
(OK) 2020/10/02(金) 20:43

 あるいは、アプリケーションのパスにスペースが含まれる
 ことがエラーの原因?
 ※未検証です。
(OK) 2020/10/02(金) 20:45

 Shell "WINWORD.EXE " & DIR_PATH & "\" & mysubfile, vbNormalFocus

 たぶん。
(BJ) 2020/10/02(金) 22:32

提示の部分だけだと、なぜエクセルを使うのか?
エクセルでなく、ワードマクロではだめなのでしょうか。

(マナ) 2020/10/03(土) 09:26


コマンドラインでは、
プログラム名とファイル名の間に半角空白が必要。
パスに半角空白が含まれている場合は"で囲む必要がある。
(VBAの文字列内では""で囲む)

ということで、ファイルパスの方にも半角空白が含まれる可能性はあると思うので、

Shell """C:\Program Files (x86)\Microsoft Office\Office16\WINWORD.EXE"" """ & DIR_PATH & fl_name & """", vbNormalFocus

ワードをインストールするときにたいていパスは通していると思うので、下記でもOKだと思う。

Shell "WINWORD.EXE """ & DIR_PATH & fl_name & """", vbNormalFocus

(hatena) 2020/10/03(土) 12:03


 >また、「DIR_PATH = "\\●●●\ "」でpdfの入っているフォルダを指定しています。

 >fl_name = Dir(DIR_PATH & "\*.pdf")

 >ちなみに下記の「DIR_PATH & fl_name」の部分を「"フルパス"」にすれば

 これ、本当にこうなのでしょうか?
 フルパスだとどうなるのか見てみたいのでフルパスを書いてください。
(BJ) 2020/10/03(土) 13:34

本題と関係ないことばかりで恐縮です。

フォルダ内というのは、DIR_PATH、
それとも、ThisWorkbook.path ???

ちなみにワードマクロだと、こんな感じでしょうか。

 Sub フォルダ内のPDFをWORDで開く()
    Const DIR_PATH = "\\●●●\ "
    Dim fl_name As String

    fl_name = Dir(DIR_PATH & "*.pdf")

    Do While fl_name <> ""
        Documents.Open DIR_PATH & fl_name
        fl_name = Dir
    Loop

 End Sub

(マナ) 2020/10/04(日) 14:06


コメント返信:

[ 一覧(最新更新順) ]


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