人に聞けない痔の悩み、これでスッキリ >>

outlookです。
VBAコードを書いています。
現在開いているフォルダパスを取得する関数はありますか?

GetNamespace("MAPI")を使用すると、Folders等で取得出来そうと思い調べています。

うまくいかないので、ご教授お願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

wisteria999さん こんにちは。



現在開いているフォルダパスは以下のプロパティで取得できるかと思います。
 
 ActiveExplorer.CurrentFolder.FolderPath
    • good
    • 0
この回答へのお礼

取得できました。
これだけで取得できたんですね。
あれだけ調べてわからなかったのが恥ずかしいです。
ありがとうございました。

お礼日時:2011/05/04 00:48

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

QエクセルVBAでOutlookメールの書式を変える

エクセル2010です。
下記のようなコードでOutlookメールを作成したとき、たとえば
 "ABC株式会社"
だけを赤字で太文字にするにはどう書けばよいのでしょうか?

Sub TEST001()
  Dim oApp As Object
  Dim objMAIL As Object
  Dim strMOJI(1) As String
  On Error Resume Next
  Set oApp = GetObject(, "Outlook.Application")
  On Error GoTo 0
  If oApp Is Nothing Then
    Set oApp = CreateObject("Outlook.Application")
  End If
  Set objMAIL = oApp.CreateItem(0)
  strMOJI(0) = "こんにちは!" & vbCrLf & _
  "色付けテストです。" & vbCrLf & _
  "よろしくおねがいします。" & vbCrLf
  strMOJI(1) = vbCrLf & _
  "以上です。" & vbCrLf & _
  "ABC株式会社" & vbCrLf & _
  "emaxemax"
  objMAIL.To = "xxxx@xxx.co.jp"
  objMAIL.CC = "yyyy@xxx.co.jp"
  objMAIL.Subject = "テスト"
  objMAIL.Body = strMOJI(0) & strMOJI(1)
  objMAIL.Display
End Sub

エクセル2010です。
下記のようなコードでOutlookメールを作成したとき、たとえば
 "ABC株式会社"
だけを赤字で太文字にするにはどう書けばよいのでしょうか?

Sub TEST001()
  Dim oApp As Object
  Dim objMAIL As Object
  Dim strMOJI(1) As String
  On Error Resume Next
  Set oApp = GetObject(, "Outlook.Application")
  On Error GoTo 0
  If oApp Is Nothing Then
    Set oApp = CreateObject("Outlook.Application")
  End If
  Set objMAIL = oApp.CreateItem(0)
  strM...続きを読む

Aベストアンサー

あ!すいません、太字、見落としてました。
はい、#2お礼欄のように<b></b>として貰えれば
#1の回答主旨に沿っています。
失礼しました。

QエクセルVBAでアウトルックメールの差出人変更

エクセル2010です。
エクセルからVBAでアウトルックメールを作成するのですが、差出人を自分ではなく部門名のアドレスにしたいのです。
手動ではなんなく差出人を変更できるのですが、VBAでの方法がわかりません。
ネット検索してみると、
SendUsingAccount = Session.Accounts("アカウント名")
でできるようなのですが、アカウント名がよくわかりません。
アカウント名に、手動で差出人を変更する際に「名前の選択」で指定する部門の名前や部門のアドレスなどを入れてみましたがオブジェクトが必要とのエラーになってしまいます。
どうすればよいのでしょうか?

Sub TEST001()
Dim oApp As Object
Dim objMAIL As Object
Dim strMOJI(1) As String
On Error Resume Next
Set oApp = GetObject(, "Outlook.Application")
On Error GoTo 0
If oApp Is Nothing Then
Set oApp = CreateObject("Outlook.Application")
End If
Set objMAIL = oApp.CreateItem(0)
strMOJI(0) = "こんにちは!" & vbCrLf & _
"差出人変更のテストです。。" & vbCrLf & _
"よろしくおねがいします。" & vbCrLf
strMOJI(1) = vbCrLf & _
"以上です。" & vbCrLf & _
"ABC株式会社" & vbCrLf & _
"emaxemax"
objMAIL.To = ""
objMAIL.CC = "xxxx@xxx.co.jp"
objMAIL.Subject = "テスト"
objMAIL.Body = strMOJI(0) & strMOJI(1)
' objMAIL.SendUsingAccount = Session.Accounts("ABC Gyomubu")'ここでエラー
objMAIL.Display
End Sub

エクセル2010です。
エクセルからVBAでアウトルックメールを作成するのですが、差出人を自分ではなく部門名のアドレスにしたいのです。
手動ではなんなく差出人を変更できるのですが、VBAでの方法がわかりません。
ネット検索してみると、
SendUsingAccount = Session.Accounts("アカウント名")
でできるようなのですが、アカウント名がよくわかりません。
アカウント名に、手動で差出人を変更する際に「名前の選択」で指定する部門の名前や部門のアドレスなどを入れてみましたがオブジェクトが必要とのエラーにな...続きを読む

Aベストアンサー

Outlookは2010ですよね。

まず始めにおことわりいたしますが、当方の環境がOffice2007でり、また質問者様の状況をきちんと把握できていないと思われ、さらに何より当方のOutlookの知識はかなり貧弱です。そのため、解決する可能性がある方法を書かせてはいただきますが、不適切な回答かもしれません。


最初に考えられるのは、MailItemのSenderプロパティに差出人の情報を設定することで達成できると思います。
で、何を設定するかですが、下記のリンクを見るとAddressEntryオブジェクトであるとのこと。
http://msdn.microsoft.com/ja-jp/library/office/microsoft.office.interop.outlook._mailitem.sender%28v=office.14%29.aspx
じゃあAddressEntryはどこにあるかというと、Session→AddresLists→AddressList→AddressEntries→AddressEntryのようです。
http://msdn.microsoft.com/en-us/library/office/aa210890%28v=office.11%29.aspx
http://msdn.microsoft.com/en-us/library/office/aa210895%28v=office.11%29.aspx
Sessionオブジェクトにアクセスできる場所はいくつかありますが、とりあえず上記リンク先の例に従いOutlook.Application.Sessionを使ってみます。
(MailItemオブジェクトの直下にもSessionがあるので、もしかしたらこちらの方がいいかもしれません)
ということで前置きが長くなりましたが、たとえば差出人にしたいアドレスがOutlookの連絡先の「ABC Gyomubu」にあるとして、以下のようにしてみてはいかがでしょうか。

objMAIL.Sender = oApp.Session.AddressLists("連絡先").AddressEntries("ABC Gyomubu")

ただし、SenderプロパティはOutlook2010で新設されたものとのことです。
http://msdn.microsoft.com/ja-jp/library/office/ee692174%28v=office.14%29.aspx
そのため、当方の環境では検証できません。


もう1つ可能性のある方法としては、MailItemオブジェクトのSentOnBehalfOfNameプロパティに文字列で差出人を設定する、というのがあるようです。

objMAIL.SentOnBehalfOfName = "ABC Gyomubu"

としてみてはいかがでしょう。(表示名よりメールアドレスそのものの方が確実かもしれません)
当方の環境では、Outlook2007で差出人欄に入るところまでは確認できたのですが、システムの都合でこの状態では送信できないため検証できていません。


以前、似たような質問に回答したのですが、どうやらその時は的外れな回答をしてしまったようです。
http://oshiete.goo.ne.jp/qa/8095478.html
というのは、質問内容はSenderプロパティに関するものだったのですが、SendUsingAccountについて答えてしまったからです。
もしもメール送受信のためのアカウントを複数設定していてそれを選択するということなら、そこに回答したようにSendUsingAccountを使えばいいと思います。
でもおそらくそういう問題ではないですよね。もしもこれをご覧になっていたなら、的外れな情報で申し訳ありません。


うまくいかない場合や不明な点がある場合など、何かありましたら補足いただければ再検討いたします。

Outlookは2010ですよね。

まず始めにおことわりいたしますが、当方の環境がOffice2007でり、また質問者様の状況をきちんと把握できていないと思われ、さらに何より当方のOutlookの知識はかなり貧弱です。そのため、解決する可能性がある方法を書かせてはいただきますが、不適切な回答かもしれません。


最初に考えられるのは、MailItemのSenderプロパティに差出人の情報を設定することで達成できると思います。
で、何を設定するかですが、下記のリンクを見るとAddressEntryオブジェクトであるとのこと。
http:/...続きを読む

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

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で ※これだと複数起動してしまうがご勘弁を
と書いてありますが、ちょっと勘弁できませんでした笑

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 指定...続きを読む

Aベストアンサー

No.2です。
少し変更しました。
質問者様のご希望は、Outlookのフォルダのウィンドウがあれば新たに開かない、というものと思いますのでそのようにしました。
(No.2のコードでは受信トレイ以外のフォルダが開いていると、新たに受信トレイのウィンドウが開いてしまいます。)

Sub Sample2()
Dim oApp As Outlook.Application
Dim myNameSpace As Outlook.Namespace
Dim myFolder As Outlook.Folder

'outlook 起動をCreateObjectで ※フォルダのウィンドウがあるなら一応開かないようになった
Set oApp = CreateObject("Outlook.Application")
'参照設定済みのようなので Set oApp = New Outlook.Application でもいいかも

Set myNameSpace = oApp.GetNamespace("MAPI")

'outlookのフォルダのウィンドウがすでに存在するならそのうちの1つをmyFolderにSetし、
'なければ規定のフォルダを得る。
If oApp.Explorers.Count > 0 then
Set myFolder = oApp.Explorers.Item(1).CurrentFolder.FolderPath
Else
Set myFolder = myNameSpace.GetDefaultFolder(6) '規定のフォルダー olFolderInbox=6 指定
End If

myFolder.display
End Sub

なお、No.1様解説のGetObjectでうまくいくならばその方が私の回答よりも良いと思います。

No.2です。
少し変更しました。
質問者様のご希望は、Outlookのフォルダのウィンドウがあれば新たに開かない、というものと思いますのでそのようにしました。
(No.2のコードでは受信トレイ以外のフォルダが開いていると、新たに受信トレイのウィンドウが開いてしまいます。)

Sub Sample2()
Dim oApp As Outlook.Application
Dim myNameSpace As Outlook.Namespace
Dim myFolder As Outlook.Folder

'outlook 起動をCreateObjectで ※フォルダのウィンドウがあるなら一応開かないようになった
Set oApp = CreateO...続きを読む

QEXCEL VBAでメール添付して送信

こんにちは。
EXCEL VBAで
自分のファイルをある宛先にメールで送信したい場合は、
どのようにしたらできますか?
どなたか、わかる方・・・教えてください。
よろしくお願いします。

Aベストアンサー

参考のスレのVBAを必要な部分だけにすると以下になります。
準備
VBエディターのツール 参照設定で
Microsoft Outlook 10.0 Object Library にチェックをいれます。
B3セルに 宛先 メールアドレス
F3セルに CC メールアドレス
C3セルに 件名
D3セルに 本文
G3セルに 添付ファイルのパスとファイル名
入れておいた場合です。

Sub ボタン1_Click()
Dim myOLApp As Object
Dim myDATA As MailItem
Set myOLApp = CreateObject("Outlook.Application")
Set myDATA = myOLApp.CreateItem(olMailItem)
myDATA.To = Range("B3").Value
myDATA.CC = Range("F3").Value
myDATA.Subject = Range("C3").Value
myDATA.Body = Range("D3").Value
myDATA.Attachments.Add Range("G3").Value
myDATA.Send
Set myDATA = Nothing
Set myOLApp = Nothing
End Sub

コピペして使ってみてください。コマンドの意味は先紹介のスレに
説明して有ります。

参考のスレのVBAを必要な部分だけにすると以下になります。
準備
VBエディターのツール 参照設定で
Microsoft Outlook 10.0 Object Library にチェックをいれます。
B3セルに 宛先 メールアドレス
F3セルに CC メールアドレス
C3セルに 件名
D3セルに 本文
G3セルに 添付ファイルのパスとファイル名
入れておいた場合です。

Sub ボタン1_Click()
Dim myOLApp As Object
Dim myDATA As MailItem
Set myOLApp = CreateObject("Outlook.Application")
Set myDATA = myOLApp.CreateItem(olM...続きを読む

QEXCEL VBAマクロ作成で、他のEXCELからデータを取り込みたい

メインプログラム(EXCEL VBA)より、
他のフォルダーにあるEXCELの項目の内容を取り込みたいです。
たとえば他のフォルダーのEXCELのRange("A2:A3").ValueをメインプログラムのRange("C2:C3").Valueにセットしたい時です。

・コマンドボタン押したら、どこのEXCELから取り込むかのポップアップ(?)は、表示はできてます。
・作業者が選んだパスとブックもMsgBoxで表示できてるので、もらう相手の場所も取得できてます。

・となると次はOPEN,INPUTですか?
テキストデータの取り込みですと、Inputでそのバッファを定義してるのですが、なんか違うような。。。

よろしくお願いします!

Aベストアンサー

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Cells(2, 2).Value ' 相手シートの B2 の値を自分自身の A1 に書き込む

readBook.Close False ' 相手ブックを閉じる
Set readSheet = Nothing
Set readBook = Nothing

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Ce...続きを読む

QOutLook本文を、VBAでExcelに落としたい

こんにちは。
先日、こちらのサイトのVisualBasicのカテゴリで質問したのですが、
1件アドバイスが入ったのに、表示されず、削除も出来ず
困ってしまったので、もう一度質問させていただきます。

タイトルの通りなのですが、
ExcelVBAで、OutLookの受信トレイの「未読」の件名、本文、受信時間を
Excelに一覧として落としたいのです。

いろいろサイトを見たりして、参考サイトで見つけたコードを
使って、思うとおりにカスタマイズしてもみたのですが、
どうしても思っていた通りには出来ませんでした。
上記やりたいことが出来るコード、参考サイトをご教示願えませんか?
ちなみに、OSはWindows2002です。

どうぞよろしくお願い致します。

Aベストアンサー

#1 です。

こちらとしては、どなたが解決してもかまいませんので、ずるいようですが、#2,#3 で書かれているname_mm_ok 様のコードで様子を見させていただきます。

なお、
>セキュリティ関連のダイアログが開き、アクセス可能な時間を選択
>する必要がある事です。
>この件に関しては、私のレベルでは回避不可能でした。

Faq ですが、一応、セキュリティレベルなので、Outlook では、解決は出来ないというのが、一般的な回答です。他は知りません。

なお、
.UnRead = True
で、私の回答は、逆に書いてしまいました。間違えました。

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

Qエクセル マクロで指定フォルダを開く

エクセルにて
指定フォルダを開く、マクロがあれば教えて頂けないでしょうか。
よろしくお願いいたします。

Aベストアンサー

こんにちは。

こういうものですか?
開くフォルダを変えたいときは targ に与えるパスを変更します。

Sub OpenFolders()
Dim targ As String
targ = "C:\"
Shell "C:\Windows\Explorer.exe " & targ, vbNormalFocus
End Sub

Q【緊急】OUTLOOK受信メールの添付ファイルを取込んで処理するシステムって実現可能?

こんにちは。ホスト開発を主としたSEをやってます。
実は、ある顧客から、
『以下のようなシステムを作りたいのでRFPを作ろうと思うんだけど、そもそもこういうシステムって実現可能?』
と質問されて、ホストメインの私は「???」となってしまい、持ち帰ってきました。

どなたか、このシステムが実現可能かどうか、その理由も含めて、ぜひ教えてください!

*****************
<要件>
【前提条件】
・今回作るシステムを「Aシステム」とする。
・スタンドアロン
・個人情報なし
・仕様内のボタン・処理名称は仮とする。

(1)10の各支所から10個のEXCELまたはCSVファイルがメールで添付されて送られてくる。(OUTLOOK使用)
(2)Aシステムで『取込ボタン』を押すと、47個の添付ファイルが一気にAシステムに取り込まれる(フォルダにコピー?)
(3)Aシステム『集計ボタン』を押し集計処理をする。
(4)Aシステム『添付・送信ボタン』を押すと、各支所別にそれぞれ計算された内容が、入力ファイルと同じ形式のファイルとなって添付され、それぞれの支所にメール配信される。

以上です。
(2)、(3)については、メイン処理なので出来そうだと何となくわかるのですが、(1)、(4)は分からないのです、、、
なので、このシステムが実現可能なのかを教えていただきたいですーーー!!

フワフワな質問ですが、どなたかお力をお貸し下さい!!よろしくお願い致します。。。

こんにちは。ホスト開発を主としたSEをやってます。
実は、ある顧客から、
『以下のようなシステムを作りたいのでRFPを作ろうと思うんだけど、そもそもこういうシステムって実現可能?』
と質問されて、ホストメインの私は「???」となってしまい、持ち帰ってきました。

どなたか、このシステムが実現可能かどうか、その理由も含めて、ぜひ教えてください!

*****************
<要件>
【前提条件】
・今回作るシステムを「Aシステム」とする。
・スタンドアロン
・個人情...続きを読む

Aベストアンサー

process9です。

質問内容と補足事項を読む限り、OUTLOOKを経由する必要性があるのか疑問ですね~。あと(2)で47個と書いてありますが、
100個でないということは、事前に取り込み指示チェックみたいなのがあるのでしょうかね。

             2.チェック
             4.取込選択
   1.入力メール  5.集計処理 3.入力メールを全転送
各支店 ------------> Aシステム  ---------------> OUTLOOK
|__________________________| |__________________________________|
6.出力メール配信    7.処理報告

のようにAシステム経由にした方がコントロールが効くのではないでしょうか。
エラーをくらった添付ファイルの存在も、処理前に顧客にお知らせできるし。
まぁ、各支店への送信先アドレスをAシステム専用のメールアドレスにするなどの運用的な変更が入りますけど。。。
あと技術的には、MIMEのデコード(添付ファイルの抽出)やメール送受信プロトコルのライブラリを使わないといけないですが、
ネットワークプログラミングやったことのある開発者でしたら難しくはないですし。
ただ、メールでの受取りになるので、セキュリティ設定、チェックをしないといけないですが。。。
これも、社内のみで使用できるメールサーバを立てるか、セキュリティ認証プロトコルを使えば問題ないかな?
これだと、今後の拡張でも発展性が見込めますね。

それか、
                                     2.チェック
                                     4.取込選択
   1.入力メール  3.入力メールを自動転送設定    5.集計処理 
各支店 ------------>  OUTLOOK ----------------------> Aシステム
|____________________________|_________________________________________|
6.出力メール配信 7.処理報告

でもよいかな?注意点は、上記のやつと同じでっす。
ただし、セキュリティをあまり気にする必要がなくなるかな?


どうしても、自分で内容チェックした後で取り込みたいからなどの理由で
OUTLOOKでコントロールしたいということでしたら、
Aシステムよりアクセスできる共有フォルダに担当の方がある時点で
ドラッグ&ドロップでメールをエクスポートして、
Aシステムの取り込み処理(MIMEのデコード(添付ファイルの抽出)要)機能を
作った方が簡単だと思います。(まぁ、担当の方にドラッグ&ドロップの作業をやっていただくわけですが、
1日1~2回のバッチ処理ならばそんなに手間でもないでしょうし、開発コストも少なくなると思います。

process9です。

質問内容と補足事項を読む限り、OUTLOOKを経由する必要性があるのか疑問ですね~。あと(2)で47個と書いてありますが、
100個でないということは、事前に取り込み指示チェックみたいなのがあるのでしょうかね。

             2.チェック
             4.取込選択
   1.入力メール  5.集計処理 3.入力メールを全転送
各支店 ------------> Aシステム  ---------------> OUTLOOK
|__________________________| |_____________________________...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング