
outlookからエクセルに、差出人アドレス、タイトル、本文を書き出すのに下記の内容でマクロを組んだのですが、書き出すエクセルにパスがかかっている場合どうしたらいいのでしょうか。
getobjectではなくopenのほうがいいのでしょうか。
' ここをトリプルクリックでマクロ全体を選択できます。
Public Sub ExportToExcel()
' EXCEL ファイルをフルパスで指定します
Const EXCEL_FILE = "c:\temp\調査管理.xlsx"
Dim objItem As MailItem
Dim objBook 'As Excel.Workbook
Dim objSheet 'As Excel.Worksheet
Dim r As Integer
' メールをどのように開いているか確認
If TypeName(Application.ActiveWindow) = "Inspector" Then
Set objItem = ActiveInspector.CurrentItem
Else
Set objItem = ActiveExplorer.Selection(1)
End If
' Excel ファイルを開く
Set objBook = GetObject(EXCEL_FILE)
objBook.Windows(1).Activate
Set objSheet = objBook.Sheets(1)
' データがない行まで移動
r = 2
While objSheet.Cells(r, 1) <> ""
r = r + 1
Wend
' メールの情報を Excel ファイルに追記
With objSheet
.Cells(r, 1) = objItem.SenderEmailAddress
.Cells(r, 2) = objItem.Subject
.Cells(r, 3) = objItem.Body
End With
' Excel ファイルを閉じる
objBook.Close True
End Sub
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
#1の補足。
注意:#1のマクロは、あくまでも、Excel側のブックにパスワードを設けていた場合ですから、今、ブックがパスワード付きかどうかの判定プログラムはつけていません。
No.1
- 回答日時:
こんにちは。
>エクセルにパスがかかっている場合どうしたらいいのでしょうか。
パスではなくて、パスワードですね。
>getobjectではなくopenのほうがいいのでしょうか。
パスワード入力で慌てなければ、別に、どちらでもよいのでは。
つまり、Outlook側のマクロで、自動で開けてしまうのなら、同じことだと思います。管理上の問題だと思います。
ただし、私の個人的な意見ですと、Openメソッドで開ける方法は、事前に、パスワードを使用者に聞ける点で、土壇場でエラーを出すというようなことはなくなるはずです。
以下は、パスワード入力を三回失敗すると、マクロが起動しなくなります。仮にEsc を押しても同様です。
この部分は、もう少し複雑にさせることができますが、あまり複雑にすると、今度は、管理上の問題に発展します。
なお、プロシージャ名のPublic キーワードは外しました。
'//
Const PWS As String = "abc"
Private cnt As Integer
Sub ExportToExcel()
' EXCEL ファイルをフルパスで指定します
Const EXCEL_FILE ="c:\temp\調査管理.xlsx"
Dim IPsw As Variant
If cnt > 3 Then Exit Sub
IPsw = InputBox("パスワードを入れてください。", "InputPassWord")
If IPsw <> PWS Then
MsgBox "パスワードが違います。", vbCritical
cnt = cnt + 1
Exit Sub
End If
Dim xlApp As Object 'Excel.Application ''参照設定した場合
Dim objItem As MailItem
Dim objBook 'As Excel.Workbook
Dim objSheet 'As Excel.Worksheet
Dim r As Integer
' メールをどのように開いているか確認
If TypeName(Application.ActiveWindow) = "Inspector" Then
Set objItem = ActiveInspector.CurrentItem
Else
Set objItem = ActiveExplorer.Selection(1)
End If
' Excel ファイルを開く
Set xlApp = CreateObject("Excel.Application")
Set objBook = xlApp.Workbooks.Open(EXCEL_FILE, , , , PWS, PWS)
xlApp.Visible = True
objBook.Activate
objBook.Worksheets(1).Activate
Set objSheet = objBook.Sheets(1)
' データがない行まで移動
r = 2
While objSheet.Cells(r, 1) <> ""
r = r + 1
Wend
' メールの情報を Excel ファイルに追記
With objSheet
.Cells(r, 1) = objItem.SenderEmailAddress
.Cells(r, 2) = objItem.Subject
.Cells(r, 3) = objItem.Body
End With
' Excel ファイルを閉じる (VBAである限りは、xlApp だけでよいが、残り二つも将来必要になる時が来ます)
objBook.Close True
Set objSheet = Nothing
Set objBook = Nothing
Set xlApp = Nothing
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
verify@twitter.comから、メー...
-
Excelのセルにユーザー名...
-
pixivで新規登録しようと思い、...
-
Twitter verify@twitter.comに...
-
sageがついてるメールアドレス
-
インスタの乗っ取り解除につい...
-
Instagramからこんなメールがき...
-
メールを返信したら、英語のメ...
-
email.ne.jpのメールアドレスを...
-
メールのマナー編
-
LINE TCBというところからLINE...
-
ツイッターアカウント凍結後新...
-
メールエラー
-
Steamのアカウントにログインで...
-
ATAパスワードでロックされたSS...
-
不正ログインされました。対応...
-
存在しないアドレスにメールを...
-
インスタで高校生からオフパコ...
-
携帯電話を解約してもSMSの受信...
-
Yahooメールにログインできません
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSVファイルを添付するときにパ...
-
Excelのセルにユーザー名...
-
Steamのアカウントにログインで...
-
メールを返信したら、英語のメ...
-
カカオで退会せずに、アプリだ...
-
runas実行した時にきかれるパス...
-
ユニクロやGUのシフト管理アプ...
-
インスタの乗っ取り解除につい...
-
メールアドレスで上付きのハイフン
-
「そのメールアドレスはすでに...
-
メールエラー
-
pixivで新規登録しようと思い、...
-
携帯電話を解約してもSMSの受信...
-
インスタのアイコンについてるN...
-
「@」(アットマーク)の無いメ...
-
verify@twitter.comから、メー...
-
カカオトークを退会せずにアン...
-
pixivでロム専・登録したばかり...
-
CDにパスワードをかける
-
~@live.jpのメール受信につい...
おすすめ情報