OUTLOOK VBAで指定のフォルダをアクティブにする方法

このQ&Aのポイント
  • Outlook VBAで指定のフォルダをアクティブにする方法が分かりません。Windows:VISTA、Outlook:2007の環境で、フォルダを別ウィンドウではなくアクティブにする方法を教えてください。
  • Outlook VBAで指定のフォルダをアクティブにするためには、.Displayを使うと別ウィンドウで表示されてしまいます。.Activateを使用することはできず、エラーになってしまいます。遷移せずにアクティブにする方法を教えてください。
  • Outlook VBAで指定のフォルダをアクティブにする方法を教えてください。Windows:VISTA、Outlook:2007の環境で、.Displayを使用すると別ウィンドウで表示されてしまいます。.Activateではエラーになります。遷移せずにアクティブにする方法を教えてください。
回答を見る
  • ベストアンサー

OutLookVBA 指定のフォルダをアクティブ化

こんばんは、よろしくお願いいたします。 OUTLOOK VBAで指定のフォルダをアクティブにするコードが分かりません。 Windows:VISTA OutLook:2007 ○.Display とすると、別ウィンドウが立ち上がってそのフォルダが表示されます。 ○.Activate とするとエラーになります。 別ウィンドウではなくアクティブフォルダが遷移する、とするにはそう すればいいでしょうか? ご指導お願いいたします。 Sub foldpl() Dim ns As NameSpace Dim mf As MAPIFolder Set ns = GetNamespace("MAPI") Set mf = ns.Folders("個人用フォルダ").Folders("送信済みアイテム") mf.Display '別ウィンドウで表示されてしまします Set mf = Nothing Set ns = Nothing End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • m3_maki
  • ベストアンサー率64% (295/459)
回答No.1

Explorer.CurrentFolder プロパティ (Outlook)(機械翻訳) http://msdn.microsoft.com/ja-jp/library/office/ff866719(v=office.15).aspx 上記を参考にして手を入れると Sub ChangeCurrentFolder()   Dim myNamespace As Outlook.NameSpace   Set myNamespace = Application.GetNamespace("MAPI")   Set Application.ActiveExplorer.CurrentFolder = _   myNamespace.Folders("個人用フォルダ").Folders("送信済みアイテム") End Sub というところですかね?

marbin
質問者

お礼

m3_makiさん、ご回答ありがとうございます。 ご教示いただきましたコードで解決しました。 「Outlook 2013 開発者用リファレンス」もこれからいろいろ勉強させていただきます。 ありがとうございました。

関連するQ&A

  • ダイレクトに目的のフォルダを指定する方法は?

    全てのフォルダをループするのではなく、 ダイレクトに目的のフォルダを指定する方法はありますか? アクセスからアウトルックの該当のフォルダの中身を取得したいのですが 下記コードで目的通り取得できるのですが コードが遠回りの気がします。 ダイレクトにフォルダを指定する方法があれば教えてください。 Sub test() Dim myNaSp As Namespace Dim myFolder As MAPIFolder Dim mySecFolder As MAPIFolder Dim myThrFolder As MAPIFolder Dim FolderName As String Dim myItem As MailItem Dim myindex As Long Set cn = CurrentProject.Connection Set myNaSp = GetNamespace("MAPI") For Each myFolder In myNaSp.GetDefaultFolder(olFolderInbox).Folders For myindex = 1 To myFolder.Items.Count Set myItem = myFolder.Items(myindex) If myFolder.Name = "testフォルダ" Then Debug.Print myItem.Body End If Next Next Set myNaSp = Nothing Set myFolder = Nothing End Sub

  • outlook 実際のアイテム数より1多い数が取得

    http://www.geocities.co.jp/SiliconValley-Bay/3475/outlook_vba.html の フォルダ内のすべてのメールを処理   Dim ns As NameSpace Dim mf As MAPIFolder Dim x As Integer Set ns = GetNamespace("MAPI") Set mf = ns.Folders("個人用フォルダ").Folders("test") For x = 1 To mf.Items.Count   ' ここに処理を記述 Next MsgBox x & "件の処理が終了しました。" を実行すると、実際のアイテム数より1多い数が取得されるのですが なぜでしょうか?

  • GetNamespaceで、コンパイルエラー

    アクセスからアウトルックの受信メールを操作しようとしているのですが Private Sub test1() Dim requestsFolder As MAPIFolder Dim appNameSpace As Namespace Dim requestMailItem As MailItem Dim i As Integer '受信フォルダの取得 Set appNameSpace = Application.GetNamepace("MAPI") Set requestsFolder = appNameSpace.GetDfaultFolder(olFolderInbox) ・ ・ ・ End Sub これを実行すると GetNamespaceで、コンパイルエラーになります。 Microsoft Outlook ○.○ Object Library で、アウトルックに参照設定はしているのですが アクセスからはGetNamespaceは使えないのでしょうか?

  • VBAで全ての受信トレイの数ではなく受信メールの数

    VBAで全ての受信トレイの数ではなく受信メールの数を取得する方法は? Sub めーる数() Dim myNaSp As NameSpace Dim myFolder As MAPIFolder Set myNaSp = GetNamespace("MAPI") Set myFolder = myNaSp.GetDefaultFolder(olFolderInbox) Debug.Print myFolder.Items.Count Set myNaSp = Nothing Set myFolder = Nothing End Sub このコードだと、「受信トレイ」のメールの数しか取得できません。 フォルダは画像のように、サブフォルダがあります。 この場合、全ての受信メール(受信トレイ+サブフォルダ)の数を取得するにはどうすればいいでしょう?

  • VBAでのフォルダ指定方法について

    EXCELファイルが保存されているディレクトリ配下のフォルダーを指定できるようにしたくていろいろ試してみたのですが、うまくいきません。 どなたか、お知恵をお貸しください。 以下ソースです。 Private Sub CommandButton1_Click() Dim ShellApp As Object Dim oFolder As Object Dim MyPath As String MyPath = ActiveWorkbook.Path Set ShellApp = CreateObject("Shell.Application") Set oFolder = ShellApp.BrowseForFolder(0, "処理ファイルの格納フォルダ選択", 1, MyPath) If Not oFolder Is Nothing Then TextBox1.Value = oFolder.Items.Item.Path End If Set ShellApp = Nothing Set oFolder = Nothing End Sub

  • OutlookVBAでサブフォルダ一括作成

    Outlook(2007)のVBAを使って、 受信トレイの下にサブフォルダを一括作成する方法をご掲示下さい。 フォルダは200程度を予定しております。 Dim test As Long Set myOlApp = CreateObject("Outlook.Application") Set myNameSpace = myOlApp.GetNamespace("MAPI") Set myFolder = myNameSpace.GetDefaultFolder(olFolderInbox) For test = 1 To 200 Set myNewFolder = myFolder.Folders.Add(test, olFolderDrafts) Next test フォルダ名を1~200ではなく、csvファイル、あるいはxlsファイル内のデータから読み取り、 それをフォルダ名として作成するようにするにはどのようにしたらよいのでしょうか? csv/xlsファイルは1列、200行あります。

  • outlookが起動してるかどうかを取得したい

    Sub Outlookが起動してないなら起動する() Dim oApp 'As Outlook.Application OutlookのApplication オブジェクトを入れる Dim myNameSpace 'As Outlook.NameSpac Dim myFolder 'As Outlook.Folder If Outlookが起動してるなら Then Exit Sub 'outlook 起動をCreateObjectで ※これだと複数起動してしまうがご勘弁を Set oApp = CreateObject("Outlook.Application") Set myNameSpace = oApp.GetNamespace("MAPI") Set myFolder = myNameSpace.GetDefaultFolder(6) '規定のフォルダー myFolder.Display '(通常サイズ olNormalWindow=2 , olMaximized=0,olMinimized=1) oApp.ActiveWindow.WindowState = 0 End Sub ///////////////////////////////////////////////////////////////// のような事がしたいのですが、 If Outlookが起動してるなら Then Exit Sub をどうすればいいのか教えていただけませんか? 当方OFFICE2007を使用しています。

  • Outlook内のZipをフォルダに送るスクリプト

    Outlookに送られてくるメール内のZipファイルをあるサーバーのフォルダに送りたいのですが、どうもEnd Subエラーが出てうまくいきません。下記のVBスクリプトを見ていただき回答をいただければ助かります。どうぞよろしくお願いいたします。 Public Sub Application_Startup() Call MailParser End Sub Private Sub Application_NewMail() Call MailParser End Sub Public Sub MailParser() Dim objContactsFolder, objContactItem, intItemCounter Dim tdystart As Date Const olFolderContacts = 6 '6 (Inbox) subject line 5 (Sent) uses mail subject line 10 (Contacts) uses full name Dim MyTempFolderString As String MyTempFolderString = "" Dim Mydate Mydate = DateFix Set objContactsFolder = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderContacts) Set SubFolder = objContactsFolder.Folders("Inbox") ' Example ("AAA") intItemCounter = SubFolder.Items.Count If intItemCounter = 0 Then Exit Sub 'position counter for the item Set objContactItem = SubFolder.Items(intItemCounter) 'set to last email Set mymailitem = SubFolder.Items(intItemCounter) For I = 1 To intItemCounter Step 1 DoEvents Dim TempDir As String TempDir = "" Set mymailitem = SubFolder.Items(I) 'check for source If InStr(mymailitem.Subject, "Outlook内のファイル件名が入ります") <> 0 Then MyTempFolderString = "\\フォルダ名が入ります\" ElseIf InStr(mymailitem.Subject, "上と同じOutlook内のファイル件名が入ります") <> 0 Then MyTempFolderString = "\\上と同じフォルダ名が入ります\" End If If MyTempFolderString = "" Then GoTo NextI myAttachCount = mymailitem.Attachments.Count 'set counter for number of attachments Do Until myAttachCount = 0 DoEvents Set myAttachments = mymailitem.Attachments myAttachments.Item(myAttachCount).SaveAsFile MyTempFolderString & Mydate & myAttachments.Item(myAttachCount).DisplayName Loop NextI: Next I End Function Function OpenOutlookFolder(StrFolderPath As String) As Outlook.MAPIFolder Dim arrFolders As Variant, _ varFolder As Variant, _ bolBeyondRoot As Boolean On Error Resume Next If StrFolderPath = "" Then Set OpenOutlookFolder = Nothing Else Do While Left(StrFolderPath, 1) = "\" StrFolderPath = Right(StrFolderPath, Len(StrFolderPath) - 1) Loop arrFolders = Split(StrFolderPath, "\") For Each varFolder In arrFolders Select Case bolBeyondRoot Case False Set OpenOutlookFolder = Outlook.Session.Folders(varFolder) bolBeyondRoot = True Case True Set OpenOutlookFolder = OpenOutlookFolder.Folders(varFolder) End Select If Err.Number <> 0 Then Set OpenOutlookFolder = Nothing Exit For End If Next End If On Error GoTo 0 End Function Function DateFix() If Len(Month(Now)) < 2 Then strMM = "0" & Month(Now) Else strMM = Month(Now) End If If Len(Day(Now)) < 2 Then strDD = "0" & Day(Now) Else strDD = Day(Now) End If DateFix = Year(Now) & "_" & strMM & "_" & strDD End Function

  • Outlook2003 VBA マクロで迷惑フォルダ内のメールを一括削除したい

    行いたいことは、受信トレイ以下に「迷惑メール」と「迷惑メールフォルダ」というフォルダがあるのですが、これらのフォルダ内にあるメールを一括して削除するマクロを作成したいのです。 これまでは、フォルダを選択 → Ctrl+A → Delという操作を行っています。 ネット上のサンプルを参考に以下を作成しましたが、具合が良くないのです。1件づつループして削除させているので、数百件あると非常に処理が重くなるのです。 つまり、「Ctrl+A(全て選択) → Del」というようにさくっとした感じで処理がしたいのですが、その方法がわかりません。どうか、宜しくお願い致します。 Sub 複数のフォルダ内のメールを削除() 'お約束? Set myOlApp = CreateObject("Outlook.Application") Set myNameSpace = myOlApp.GetNamespace("MAPI") 'フォルダ指定 Set myFolder1 = myNameSpace.Folders("個人用フォルダ").Folders("迷惑メール") Set myFolder2 = myNameSpace.Folders("個人用フォルダ").Folders("迷惑メールフォルダ") '(1)「迷惑メール」内を削除 Dim cnt As Integer TOTAL = myFolder1.Items.Count For i = 1 To TOTAL '1番上のメールから順次削除 myFolder.Items(1).Display 'もしかして、これがいけない? myFolder.Items(1).Delete Next i '(2)「迷惑メール」内を削除 ・・・(1)と同様 End Sub 今回初めて、Outlook2003 VBAをさわってみましたので、基本がわかっていないと思います。ご指南頂ければ幸いです。

  • アウトルックが起動しているかどうかを取得するには?

    http://www.ken3.org/cgi-bin/group/vba_outlook.asp を参考に Sub Sample() Dim oApp As Outlook.Application Dim myNameSpace As Outlook.Namespace Dim myFolder As Outlook.Folder 'outlook 起動をCreateObjectで ※これだと複数起動してしまうがご勘弁を Set oApp = CreateObject("Outlook.Application") Set myNameSpace = oApp.GetNamespace("MAPI") '作業フォルダーの指定(.GetDefaultFolder) と 表示(.Display) Set myFolder = myNameSpace.GetDefaultFolder(6) '規定のフォルダー olFolderInbox=6 指定 myFolder.display End Sub でエクセルからアウトルックを起動しているのですが 既に起動していると2個起動してしまいます。 「既に起動しているのなら起動しない」という事はできますか? 参考URLに 起動をCreateObjectで ※これだと複数起動してしまうがご勘弁を と書いてありますが、ちょっと勘弁できませんでした笑

専門家に質問してみよう