2017-12-14 8 views
0

私は簡単に電子メールを送信する方法を探しています。私は顧客番号と注文番号で毎日約20行を追加するExcelファイルを持っています。また、Eメールアドレス、国によって異なる科目や団体もあります。 私はLotus Notesを使用し、すべてのコードを送信してファイルを添付するよう設定しておきます。電子メールを送信するためのマクロは、アクティブなセルのオフセットを使用します。だから、現在、私は特定のセルをクリックし、電子メールを送信するキーバインドを押しています。ハイパーリンクまたはアクティブセルオフセットのマクロを実行するボタン

ただし、人々がハイパーリンクや各行のボタンをクリックしてメールを作成できるように変更したいと考えています。フォームとActiveXコントロールのボタンを使って試しましたが、これでファイルが遅すぎます。

次に、ハイパーリンクをクリックすると、マクロをアクティブにする方法を調べました。

これはインターネット上で見つかりました。

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) 
    Select Case Target.Range.Address 
    Case "$B$3" 
    Call myMacro 
    Case Else 
    End Select 
    End Sub 

ただし、これはセルB3のリンクでのみ機能します。 B列のリンクをクリックするとマクロが実行されるようにするにはどうすればよいですか?

他にも解決策があるかどうかご連絡ください。

敬具、

EDIT1:

これは、列Bに何かがクリックされたときに実行するマクロを取得するには、電子メール用のコード

Sub myMacro(Target As Range) 
'Send an e-mail & attachment using Lotus Not(s) 
'Original Code by Nate Oliver (NateO) 
'Declare Variables for file and macro setup 
Dim UserName As String, MailDbName As String, Recipient As String, ccRecipient As String, Attachment1 As String 
Dim Maildb As Object, MailDoc As Object, AttachME As Object, Session As Object 
Dim EmbedObj1 As Object 
With Application 
.ScreenUpdating = False 
.DisplayAlerts = False 

' Open and locate current LOTUS NOTES User 
Set Session = CreateObject("Notes.NotesSession") 
UserName = Session.UserName 
MailDbName = _ 
Left$(UserName, 1) & Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & ".nsf" 
Set Maildb = Session.GETDATABASE("", MailDbName) 
If Maildb.IsOpen = True Then 
Else 
Maildb.OPENMAIL 
End If 

Set MailDoc = Maildb.CreateDocument 
MailDoc.Form = "Memo" 
Recipient = Target.Offset(0, 1).Value 
MailDoc.SendTo = Recipient 
ccRecipient = Target.Offset(0, 2).Value 
MailDoc.CopyTo = ccRecipient 
MailDoc.Subject = Target.Offset(0, 3).Value 
MailDoc.Body = Target.Offset(0, 4).Value 

Dim Orderno 
Dim myPath 
Dim myFile 

Orderno = Target.Offset(0, 5).Value 
myPath = ThisWorkbook.Path & "D:\Berry\Order Confirmations\VBAtest\" 
myFile = Dir(myPath & "*" & Orderno & "*.pdf*") 
Attachment1 = (myPath & myFile) 
MsgBox (Attachment1) 
If Attachment1 <> "" Then 
On Error Resume Next 
Set AttachME = MailDoc.CREATERICHTEXTITEM("attachment1") 
Set EmbedObj1 = AttachME.embedobject(1454, "attachment1", (myPath & myFile), "") 
On Error Resume Next 
End If 

Set workspace = CreateObject("Notes.NotesUIWorkspace") 
Call workspace.EDITDOCUMENT(True, MailDoc).GOTOFIELD("Body") 

Set Maildb = Nothing 
Set MailDoc = Nothing 
Set AttachME = Nothing 
Set Session = Nothing 
Set EmbedObj1 = Nothing 

.ScreenUpdating = True 
.DisplayAlerts = True 
End With 

errorhandler1: 

Set Maildb = Nothing 
Set MailDoc = Nothing 
Set AttachME = Nothing 
Set Session = Nothing 
Set EmbedObj1 = Nothing 
+0

だけの観測質問:あなたは次のことを行うことができ、あなたのマクロで次に

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) Select Case Target.Range.Column Case 2 'Two being the column number Call myMacro(Target.Range) Case Else End Select End Sub 

:あなたのような引数OT yourmacro何かを渡すためにあったかのように、ターゲットは、正しい値を取得するだろうExcelアプリケーションをNotesアプリケーションに変換することは可能ですか?返信は必要ありません。 –

答えて

1

です:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) 
Select Case Target.Range.Column 
    Case 2 'Two being the column number 
     Call myMacro 
    Case Else 
End Select 
End Sub 

オフセットを使用して電子メールの値を取得する場合は、オフセット

Sub myMacro(Target as Range) 
    Target.offset(0,1).value 'to get the value to the right of the clicked cell  
..... 

End sub 
+0

素早く対応いただきありがとうございます。このdidntの仕事は、 'Runtime error 438、object doesnt suppor this property or method'というエラーを出します。選択したケースを指しています。target.column – Daheb

+0

Mmh、コールのタイプが一致しません。(ターゲット)OP – Daheb

+0

に電子メールマクロを追加しました。もう一度私の回答を更新しました。私のために、私は省略したことがあります。コールからの距離myMacro(Target.Range) – Xabier

関連する問題