Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9806 / 13644 ツリー ←次へ | 前へ→

【25365】メール本文内にあるサイトをクリックして・・・ row 05/5/29(日) 23:55 質問[未読]

【25365】メール本文内にあるサイトをクリックして...
質問  row  - 05/5/29(日) 23:55 -

引用なし
パスワード
   皆さん、こんばんは

このサイトで、良く出てくる
・エクセルでメールを受信する
という事を参考にして、
#1 メールを受信する
#2 メールをテキストファイルに保存する
#3 指定したフォルダ内にあるテキストを、別シートに貼り付ける
という事までは、出来ました。

メール本文内に、
http://www.yahoo.co.jp
などのようにサイトアドレスがある場合、
IEで表示させたいのですが、どうすれば実現できますか?

それと、表示後に自動的にIEを閉じる操作をしたいのですが
可能ですか?

参考までに、作成したコードはこちらです。
よろしくお願いいたします。
-------------------------------------------------------------------------
Dim ファイル数 As Variant
Dim fname(9999) As Variant ' メール数9999通 メール本文2000行まで対応します
Dim i As Variant
Dim j As Variant
Dim dat As Variant

Dim szServer As String, szUser As String, szPass As String
Dim szCommand As String, szDir As String
Dim ar As Variant, v As Variant

'ReadMail関数用宣言文
Dim szFilename As String, szPara As String
Dim retv As Variant


szServer = Workbooks("エクセルでメール受信と クリックを実現する.xls"). _
      Worksheets("メール受信").Cells(4, 2)
      'SMTPサーバ名と同じでよい。
      'タブで区切ってポート番号を指定できます。
szUser = Workbooks("エクセルでメール受信と クリックを実現する.xls"). _
      Worksheets("メール受信").Cells(2, 2)
      'メールアカウント名
szPass = Workbooks("エクセルでメール受信と クリックを実現する.xls"). _
      Worksheets("メール受信").Cells(3, 2)
      'パスワード
'    2000/05/20 APOPをサポート
'   APOP 認証をするには、パスワードの前に "a" または "A" に 1個の
'   ブランクをつけます。
'   "a xxxx" : サーバがAPOP 未対応なら通常のUSER/PASS 処理をします。
'   "A xxxx" : サーバがAPOP 未対応ならエラーになります。
If Workbooks("エクセルでメール受信と クリックを実現する.xls"). _
  Worksheets("メール受信").Cells(6, 2) = "削除する" Then
  szCommand = "savealld" ' 削除する
  Else
  szCommand = "saveall"  ' 削除しない
End If

szDir = Workbooks("エクセルでメール受信と クリックを実現する.xls"). _
      Worksheets("メール受信").Cells(5, 2)
      '受信したメールを保存するディレクトリ

' ディレクトリが見つからない場合は、ディレクトリを作成する
'-----------------------------------------------------------------------
On Error GoTo ディレクトリ作成済み
MkDir szDir
ディレクトリ作成済み:

'------------------------------------------------------------------------
ar = RcvMail(szServer, szUser, szPass, szCommand, szDir)

'戻り値が返る変数は、Variantタイプを指定すること。
'受信したメール1通ごとにファイルが作成されます。
'メールに添付されたファイルは、本文と共に1つのファイルに含まれます。
'ReadMail関数で添付ファイルを取出します。

If IsArray(ar) Then  '正常終了時のSAVEコマンドの戻り値は、配列になります。
  For Each v In ar
  Debug.Print v   'メールデータが保存されたファイル名がフルパスで戻ります。
           'このファイル名をReadMailのパラメータとして渡します。
  Next
Else
 Debug.Print ar   'エラー発生時は、配列でなくメッセージが戻ります。
End If

'===============================================メールを 読む=================
szFilename = ar(0) ' ファイル名にはRcvMailの戻り値の配列からファイル名を設定
szPara = "subject:from:date:" ' ヘッダーの指定
                ' nofile: とすると添付ファイルを保存しません。
retv = ReadMail(szFilename, szPara, szDir)

If IsArray(retv) Then
  For Each v In retv
  Debug.Print v
  Next
Else
 Debug.Print retv
End If

'--------------------------------------------メールをメール受信に貼り付ける
' 全ファイル名を、fname(i)に取得する

  With Application.FileSearch
   .LookIn = szDir
   .filename = "*.txt"
   If .Execute(SortBy:=msoSortByFileName, _
    SortOrder:=msoSortOrderAscending) > 0 Then
    ファイル数 = .FoundFiles.Count
    For i = 1 To .FoundFiles.Count
     fname(i) = .FoundFiles(i)
    Next i
   Else
   MsgBox "メールファイルがありません"
   End If
  End With

For i = 1 To ファイル数

' 範囲のクリア
Workbooks("エクセルでメール受信と クリックを実現する.xls").Worksheets("メール本文").Select
Worksheets("メール本文").Range("A1:A9999").Select
Selection.ClearContents
j = 0

' データの貼り付け
Open fname(i) For Input As #1
Do Until EOF(1)
  Input #1, dat
  j = j + 1
  Workbooks("エクセルでメール受信と クリックを実現する.xls").Worksheets("メール本文").Cells(j, 1) = dat
  If j = 2000 Then
  GoTo skip
  End If
Loop
skip:
Close #1
' MsgBox "確認して下さい"
Next i

Workbooks("エクセルでメール受信と クリックを実現する.xls").Worksheets("メール受信").Select

9806 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free