2017-04-23 6 views
1

私は2つのボタン(更新&広告)を持つフォームを持っています。フォームに記入してそのうちの1つを押すと、他のシートのレコードが作成または更新されます。Excelこのボタンがコピーする範囲をメールしてください

電子メール機能を埋め込んでおけば、同じ情報をメールで送信することができます。

私はVBAを初めて使います。これはインターネットからダウンロードしたワークブックで、私のニーズに合わせて変更されました。だから私はこのコードのデザイナーではないが、私はSet myCopy = inputWks.Range("OrderEntry")が私が必要とするデータであることを知っている。これを電子メールの本文に貼り付けるにはどうすればよいですか?

Sub UpdateLogRecord() 

    Dim historyWks As Worksheet 
    Dim inputWks As Worksheet 

    Dim lRec As Long 
    Dim oCol As Long 
    Dim lRecRow As Long 

    Dim myCopy As Range 
    Dim myTest As Range 

    Dim lRsp As Long 

    Set inputWks = Worksheets("Input") 
    Set historyWks = Worksheets("Werknemers") 
    oCol = 3 'order info is pasted on data sheet, starting in this column 

    'check for duplicate order ID in database 
    If inputWks.Range("CheckID") = False Then 
     lRsp = MsgBox("Personeelsnummer niet in de database. record toevoegen?", vbQuestion + vbYesNo, "Nieuw Personeelsnummer") 
     If lRsp = vbYes Then 
     UpdateLogWorksheet 
     Else 
     MsgBox "Selecteer een Personeelsnummer uit de database." 
     End If 

    Else 

    'cells to copy from Input sheet - some contain formulas 
    Set myCopy = inputWks.Range("OrderEntry") 

    lRec = inputWks.Range("CurrRec").Value 
    lRecRow = lRec + 1 

    With inputWks 
     Set myTest = myCopy.Offset(0, 2) 

     If Application.Count(myTest) > 0 Then 
      MsgBox "Please fill in all required cells!" 
      Exit Sub 
     End If 
    End With 

    With historyWks 
     With .Cells(lRecRow, "A") 
      .Value = Now 
      .NumberFormat = "mm/dd/yyyy hh:mm:ss" 
     End With 
     .Cells(lRecRow, "B").Value = Application.UserName 
     oCol = 3 

     myCopy.Copy 
     .Cells(lRecRow, 3).PasteSpecial Paste:=xlPasteValues, Transpose:=True 
     Application.CutCopyMode = False 
    End With 

    'clear input cells that contain constants 
    With inputWks 
     On Error Resume Next 
     With myCopy.Cells.SpecialCells(xlCellTypeConstants) 
       .ClearContents 
       Application.GoTo .Cells(1) ', Scroll:=True 
     End With 
     On Error GoTo 0 
     If .Range("ShowMsg").Value = "Yes" Then 
     MsgBox "Database is geupdated" 
     End If 
    End With 
    End If 
End Sub 
+1

[Excelのマクロメールを送る](http://stackoverflow.com/questions/668255/excel-macro-send-email) –

答えて

2

hereを参照してこのコードを使用できます。これをどこに(いつ)あなたが電子メールを送りたいかを入れてください。コードの本文のコメントを読んでください。 (ブロックをデバッグするためにOnErrorのブロックをコメントアウトし、コードを使用しているときはコメントを外します)。

'On Error GoTo PROC_EXIT 
    Dim OL As New Outlook.Application 

    Dim olMail As Outlook.MailItem 
    Set olMail = OL.CreateItem(olMailItem) 

    With olMail 
     .To = "[email protected]" 'you want the email to be sent to this address 
     .Subject = "test-emai" 'Subject of the email (can be referred to a cell) 
     .Body = myCopy 

     'This line displays the email 
     'comment this and uncomment next line to send the email 

     .Display vbModal 
     '.Send 
    End With 

'PROC_EXIT: 
    'On Error GoTo 0 
    OL.Quit 
    Set OL = Nothing 
+0

素晴らしいの可能性のある重複しました!ありがとう!!..この作品は完璧です。 – user3425887

+0

@ user3425887 https://meta.stackexchange.com/a/5235/289619 – 0m3r

関連する問題