私は一緒に仕事をしようとしているいくつかのルーチンがあります。最初の2つは、ユーザーのマシン上のoutlook.exeファイルを見つけます.3番目のファイルが、まだ実行されていない場合は、そのファイルを使用してOutlookを開くようにします。私が持っている問題は、そのファイルのパスを3番目のルーチンに渡すことができることです。ここに私のコードです。どんな助けもありがとう。Excel VBAパスのファイルをOutlookに開くルーチンへのパス
Sub GetSubFolders()
Dim fso As New FileSystemObject
Dim f As Folder, sf As Folder
Dim myFile As File
On Error Resume Next
Set f = fso.GetFolder("C:\Program Files\")
For Each myFile In f
Next
For Each sf In f.SubFolders
Call Recursive(sf)
Next
Set f = fso.GetFolder("C:\Program Files (x86)\")
For Each myFile In f
Next
For Each sf In f.SubFolders
Call Recursive(sf)
Next
End Sub
Sub Recursive(sf As Folder)
Dim fso As New FileSystemObject
Dim f, nsf As Folder
Dim myFile As File
Dim s As String
Dim ofile As String
On Error Resume Next
Set f = fso.GetFolder(sf)
For Each myFile In f.Files
If Right(myFile, 11) = "outlook.exe" Then
Range("A1").Value = myFile.Path
Call outlook
End
End If
Next
For Each nsf In f.SubFolders
Recursive nsf
Next
End Sub
Sub outlook()
Const PATH_TO_OUTLOOK = """C:\Program Files\Microsoft Office 15\root\office15\outlook.exe"""
Const SHOW_MAXIMIZED = 3
Const MINIMIZE = 1
Dim oShell, oOutlook As Object
On Error Resume Next
Set oOutlook = GetObject(, "Outlook.Application")
Set oShell = CreateObject("WScript.Shell")
On Error GoTo 0
If oOutlook Is Nothing Then
' Open Outlook
oShell.Run PATH_TO_OUTLOOK, SHOW_MAXIMIZED, False
On Error Resume Next
' Grab a handle to the Outlook Application and minimize
Set oOutlook = WScript.CreateObject("Outlook.Application")
WScript.Sleep (10000)
oOutlook.ActiveExplorer.WindowState = SHOW_MAXIMIZED
' Loop on error to account for slow startup in which case the
' process and/or the main Outlook window is not available
Err.Clear
WScript.Sleep (10000)
Set oOutlook = Nothing
Set oOutlook = CreateObject("Outlook.Application")
oOutlook.ActiveExplorer.WindowState = MINIMIZE
Set oOutlook = Nothing
Set oShell = Nothing
End If
End Sub
をOutlookの実行可能ファイルを見つけることの目的は何ですか?マシンにインストールされている場合は、 'CreateObject(" Outlook.Application ")'を実行し、 '.Visible'に設定するだけです。 – Comintern
たぶん私は間違っていると思っているかもしれませんが、異なるユーザーが異なるバージョンのオフィスをインストールしている可能性があり、32ビットと64ビットが異なる場合があるため、実行可能ファイルは異なる場所にあると考えています。投稿したOutlookのルーティンは私のマシンでは完璧に動作しますが、これを使用するすべてのユーザにとってはそうではないでしょう。 – DDietz