VBでメールに変数Aを自動的に貼り付ける方法

このQ&Aのポイント
  • VBから変数Aを本文に自動的に貼り付ける方法を教えてください。
  • 以前開発したVBのコードを応用することで、メールの本文に変数Aを自動的に貼り付けることができます。
  • ShellExecuteというVBの関数を使用し、メールの本文に変数Aを自動的に貼り付ける方法を紹介します。
回答を見る
  • ベストアンサー

メール

VBから変数Aを本文に自動的に貼り付ける方法を教えてください。 なお下は以前開発したものです。応用して使えるでしょうか? Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _ (ByVal hwnd As Long, ByVal ipopperation As String, ByVal lpfile As String, _ ByVal lpparameters As String, ByVal lpdirectory As String, ByVal nshowcmd As Long) As Long --------- Private Sub ??_Click() Dim LngReturn As Long Dim StrCommand As String StrCommand = Trim$(Text_mail_pc) If LCase(Left(StrCommand, 7)) <> "mailto:" Then StrCommand = "mailto:" & StrCommand End If LngReturn = ShellExecute(Me.hwnd, "open", StrCommand, vbNullChar, vbNullChar, Sw_Shownormal) End Sub ---------- ※↓のVBの質問とは全く関係ありません。

質問者が選んだベストアンサー

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.2

半分寝かけてふと思ったけど、、、 まさかメーラーで新規作成ボタンを押して、すでに表示されているメールの本文に文章を貼り付けたいって事? もしそうなら、メーラー別の処理になりそうな気がします。。。

daisuke-123
質問者

お礼

いえいえ下のでいいのです。 ありがとうございました

その他の回答 (1)

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

履歴です

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=223163

関連するQ&A

  • アクセスでテキストを開く

    アクセスでパスを指定して、特定のテキストファイルを開く方法を教えていただけますか? いかのモジュールを見つけたのですが、どこに、動かないか… フルパスを入れればよいか分かりません。 どうぞ宜しくお願いします。 *********************************************************************************************** Private Declare Function ShellExecute Lib "SHELL32.DLL" Alias "ShellExecuteA" (ByVal hwnd As Long, _ ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, _ ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Private Sub コマンド0_Click() Dim strFilePath As String Dim lngRet As Long Const SW_SHOWNORMAL = 1 strFilePath = Me.txt_Path 'WinAPIを使って関連付けられたアプリケーションを起動 lngRet = ShellExecute(Application.hWndAccessApp, "OPEN", _ strFilePath, vbNullString, CurDir(), SW_SHOWNORMAL) If lngRet <= 32 Then '返り値が 32 以下の場合はエラー MsgBox "ファイルを開けません!", vbOKOnly + vbExclamation End If End Sub ***********************************************************************************************

  • AccessVBA ShellExecuteAについて質問です。

    AccessVBA ShellExecuteAについて質問です。 下記コードでボタンをクリックすると、画像を入れ替える処理を与えています。 Private Sub View1_Click() With Me Dim ePASS As String sPASS = 画像のフルパス lRet = ShellExecute(0, "open", sPASS, vbNull, vbNull, SW_NORMAL) End With End Sub 'APIの定義 Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _ ByVal hwnd As Long, _ ByVal lpOperation As String, _ ByVal lpFile As String, _ ByVal lpParameters As String, _ ByVal lpDirectory As String, _ ByVal nShowCmd As Long) As Long 上記コードが自分のマシンでは起動するのですが、他のマシンでは起動しません。 Accessは両マシン共に、2000です。 ビューワはWindowsPicture and Fax ビューワです。 原因究明のアドバイスよろしくお願いします。 出来ればソースもあるとありがたいです。

  • VBでShell○なのにShellExecute×

    http://support.microsoft.com/kb/170918/ja 等を参考に、コンソールアプリからHTMLファイルを呼び出すだけのEXEをVB(Visual Basic 2008 Express Edition)で作ったところ、 Shell関数ではHTMLがIEで起動されるのに対し、ShellExecute関数ではダメでした。 HTMLへのファイルパスが正しいことはMsgBoxで確認しました。 また、ほぼ同じソースをbasにしてExcelから起動すると、ShellExecuteでも起動しました。 以下がソース(抜粋)になりますが、原因が分かる方がおられましたら、ヒントだけでも、ご教示いただけると幸いです。 よろしくお願いいたします。 - - - - - - - - - - - - - - - - - - - - - - Option Explicit On Module Module1 Private Declare Function ShellExecute Lib "shell32.dll" Alias _ "ShellExecuteA" (ByVal hwnd As Long, ByVal lpszOp As _ String, ByVal lpszFile As String, ByVal lpszParams As String, _ ByVal lpszDir As String, ByVal FsShowCmd As Long) As Long Private Declare Function GetDesktopWindow Lib "user32" () As Long 'エラーコード宣言略 Function StartDoc(ByVal DocName As String) As Long Dim Scr_hDC As Long Scr_hDC = GetDesktopWindow() 'こちらだと成功 StartDoc = Shell("explorer.exe" & " " & DocName, vbNormalFocus) StartDoc = ShellExecute(Scr_hDC, "Open", DocName, _ "", "C:\", SW_SHOWNORMAL) End Function Sub Main() Dim r As Long, msg As String r = StartDoc(CurDir() & "\target.html") 'エラーハンドリング省略 End Sub End Module

  • VBAでURLをブラウザで起動させたい

    現在、エクセルのVBAのフォーム上のコマンドボタンから、URLをブラウザで起動させたいと思っているのですが、うまくいきません。 インターネット上で以下のプログラムが紹介されていたので試したのですが hwnd の所でエラーとなってしまいます。 Option Explicit Private Declare Function ShellExecute Lib _ "shell32.dll" Alias "ShellExecuteA" _ (ByVal hwnd As Long, _ ByVal lpOperation As String, _ ByVal lpFile As String, _ ByVal lpParameters As String, _ ByVal lpDirectory As String, _ ByVal nShowCmd As Long) As Long Private Sub cmdGO_Click() ShellExecute Me.hwnd, "Open", "http://www.goo.ne.jp/", _ vbNullString, App.Path, 1 End Sub また、エクセルのハイパーリンクを使って、あるセル上に事前に設定しておき、コマンドボタンをクリックした時にそのセルのハイパーリンクを起動させることにしました。しかしブラウザは起動するのですが、ブラウザを閉じるとエクセルの画面が最小化されています。(最大化しようとして右クリックしてもなにも出てきません)同じエクセルファイルをダブルクリックするとやっとエクセルが画面表示されます。 ブラウザを閉じた時に画面上にエクセル画面を表示させたいのですがどのようにすれば良いのでしょう。分かる方が見えましたら宜しくお願いします。 このプログラムは以下のように作成しました Private Sub CommandButton3_Click()   Worksheets("データ").Select Range("J18").Select Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True Application.WindowState = xlNormal End Sub ソフトは EXCEL2000です

  • VBA ウィンドウの列挙 Win32 API

    http://d.hatena.ne.jp/cartooh/20090618 上記のページに記載されているVBAです。 動作は確認できたのですが、どのような処理の流れとなっているのかがわかりません。 どなたかコメントを付けていただけないでしょうか。 よろしくお願いいたします。 Option Explicit Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal cnm As String, ByVal cap As String) As Long Declare Function IsWindowVisible Lib "user32" (ByVal hWnd As Long) As Long Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, _ ByVal cch As Long) As Long Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hWnd As Long, ByVal lpClassName As String, _ ByVal nMaxCount As Long) As Long Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long Declare Function EnumChildWindows Lib "user32" (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, _ ByVal lParam As Long) As Long Declare Function IsWindow Lib "user32" (ByVal hWnd As Long) As Long Const INDENT_KEY = "INDENT" Public Function EnumChildWindowsProc(ByVal hWnd As Long, ByVal lParam As Object) As Long EnumChildWindowsProc = EnumWindowsProc(hWnd, lParam) End Function Public Function EnumWindowsProc(ByVal hWnd As Long, ByVal lParam As Object) As Long EnumWindowsProc = True If IsWindowVisible(hWnd) = 0 Then Exit Function End If Dim strClassName As String ' * 255 Dim strCaption As String ' * 255 strClassName = String(255, vbNullChar) strCaption = String(255, vbNullChar) GetWindowText hWnd, strCaption, Len(strCaption) GetClassName hWnd, strClassName, Len(strClassName) strCaption = RTrim(left(strCaption, InStr(1, strCaption, vbNullChar) - 1)) strClassName = RTrim(left(strClassName, InStr(1, strClassName, vbNullChar) - 1)) ActiveCell.Cells(1, 1).Value = Hex(hWnd) ActiveCell.Cells(1, 2).Value = IsWindowVisible(hWnd) ActiveCell.Cells(1, 3).Value = strCaption ActiveCell.Cells(1, 4).Value = strClassName ActiveCell.Cells(2, 2).Activate Dim c As Collection Set c = lParam Dim indent As Long indent = c(INDENT_KEY) c.Add String(indent * 2, " ") & Hex(hWnd) & " " & strCaption & " " & strClassName, before:=c.Count indent = indent + 1 c.Remove INDENT_KEY c.Add indent, INDENT_KEY Call EnumChildWindows(hWnd, AddressOf EnumChildWindowsProc, ObjPtr(c)) indent = c(INDENT_KEY) - 1 c.Remove INDENT_KEY c.Add indent, INDENT_KEY ActiveCell.Cells(1, 0).Activate End Function Sub hoge() Application.ScreenUpdating = False Dim sht As Worksheet Set sht = ThisWorkbook.Worksheets(1) sht.UsedRange.Clear sht.Activate sht.Range("A1").Activate Dim c As Collection Set c = New Collection c.Add 0, INDENT_KEY Dim ret As Long ret = EnumWindows(AddressOf EnumWindowsProc, ObjPtr(c)) c.Remove INDENT_KEY Set sht = ThisWorkbook.Worksheets(2) sht.UsedRange.Clear sht.Activate sht.Range("A1").Activate Dim o As Variant For Each o In c ActiveCell.Value = o ActiveCell.Cells(2, 1).Activate Next Application.ScreenUpdating = True End Sub

  • VBAを使ってファイルを圧縮したい

    こんばんは。 他の方の質問ですが http://oshiete1.goo.ne.jp/qa2405614.html を参考にVBAでエクセルファイルの圧縮に挑戦しています。 しかしうまくいきません。 なのでご教授お願いします。 エクセルの標準モジュールに 下記のコードを載せました。 //////////////////////////////////////////////////////////////////////// 'Option Explicit Private Declare Function Zip Lib "Zip32j" (ByVal hWnd As Integer, ByVal szCmdLine As String, ByVal szOutPut As String, ByVal dwsize As Integer) As Integer Private Declare Function FindWindow Lib "USER32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Sub testZip() 'Zip32 による圧縮 Dim Filename As String Dim strArchiveName As String Dim strCommand As String Dim RC As Long Dim hWnd As Long Dim strOutPut As String * 512 Dim lngSize As Long 'ハンドル取得 hWnd = FindWindow("XLMANI", Application.Caption) 'ファイル名取得 Filename = myDeskTopPath & "\Book1.xls" If Filename = "False" Then Exit Sub Filename = Mid$(Filename, InStrRev(Filename, "\") + 1) strArchiveName = Mid$(Filename, InStrRev(Filename, "\") + 1, InStrRev(Filename, ".") - InStrRev(Filename, "\") - 1) & ".zip" strCommand = "-u " & strArchiveName & " " & Filename lngSize = Len(strOutPut) RC = Zip(hWnd, strCommand, strOutPut, lngSize) 'Debug.Print strOutPut End Sub Function myDeskTopPath() ' 実行時の デスクトップパス取得 Dim MyWSH As Object Set MyWSH = CreateObject("WScript.Shell") myDeskTopPath = MyWSH.SpecialFolders("Desktop") Set MyWSH = Nothing End Function //////////////////////////////////////////////////////////////////////// そして「Zip32j 」がないので http://www.vector.co.jp/soft/win95/util/se062163.html からダウンロードしました。 しかし、 「 RC = Zip(hWnd, strCommand, strOutPut, lngSize)」 の部分で、 「ファイルが見つかりません。 (Error 53)」 になります。 ダウンロードした「zip3j037」はフォルダごとデスクトップに置いています。 ただこれをダウンロードしただけではダメなのでしょうか? エラーの原因がわかりません。 よろしくお願いします。

  • Excelで検索、その後

     過去に、Excelファイルから外部ファイルを検索するダイアログの呼出方法をこのサイトで教わった者です。 以下にそのソースを書きます。 Option Explicit Private Declare Function ShellExecute Lib _ "Shell32.dll" Alias "ShellExecuteA" _ (ByVal hwnd As Long, ByVal lpOperation As String, _ ByVal lpFile As String, ByVal lpParameters As String, _ ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Private Const SW_SHOWNORMAL = 1 Private Const SW_SHOWMINIMIZED = 2 Private Const SW_SHOWMAXIMIZED = 3 Private Const SW_SHOW = 5 Private Const SW_MINIMIZE = 6 Private Const SW_SHOWMINNOACTIVE = 7 Private Const SW_SHOWNA = 8 Private Const SW_RESTORE = 9 Private Const SW_SHOWDEFAULT = 10 Sub 検索ダイアログを出す() ShellExecute 0, "find", "C:\", vbNullString, vbNullString, SW_SHOWNORMAL End Sub    このダイアログを呼び出すと同時に、検索結果を表示する事は可能でしょうか?  なんとか自分で解釈してこれを行いたかったのですが、 時間ばかりが進んで上手く行きません。  vbNullStringの部分にstring型のデータを代入すれば動くと信じていたのですが、ダイアログ出現寺に表示もされないので、更に突っ込んだ検索結果表示なんて夢のまた夢(^^;;;)。  宜しくお願いしますm(_ _)m。

  • APIについて

    Private Declare Function GetComputerName Lib "kernel32.dll" Alias _ "GetComputerNameA" (ByVal NameBuff As String, ByVal Size As Long) As Long Public Sub New() mstrMyCompName = Me.QryComputerName() mstrMyDummyData = mstrMyCompName & mcstrDumyKey End Sub Public Function QryComputerName() As String Dim strTmp As String Dim lngPos As Long If 0& < GetComputerName(strTmp, 256) Then lngPos = InStr(strTmp, vbNullChar) QryComputerName = Left$(strTmp, lngPos - 1) Else QryComputerName = "UnKnown" End If End Function 上記の記述を含むクラスを生成した際に、GetComputerName(strTmp, 256)のところで下記のエラーが発生しますが、原因が分かりません。 'System.NullReferenceException' のハンドルされていない例外が AtnSys.exe で発生しました。 追加情報 : オブジェクト参照がオブジェクト インスタンスに設定されていません。 何がいけないのでしょうか? OS:Win2000 言語:VB.Net ソリューション名:AtnSys

  • 現在ファイルを開いている全てのユーザー名を取得

    パソコン1に入っているアクセスファイル(accdb)に パソコン1とパソコン2で同時に開いています。 共有している状態です。 その際、現在ファイルを開いている全てのユーザー名を取得したいのですが http://okwave.jp/qa/q3589812.html を参考に ' // 標準モジュール Private Declare Function GetUserName Lib "ADVAPI32.dll" Alias "GetUserNameA" ( _     ByVal lpBuffer As String, _     ByRef nSize As Long _ ) As Long Private Const MAX_PATH As Long = 256 ' // Windows のログインユーザー名を取得する Public Function GetLoginUserName() As String   Dim sBuffer As String   sBuffer = String$(MAX_PATH, vbNullChar)   If CBool(GetUserName(sBuffer, MAX_PATH) > 0) Then     GetLoginUserName = Left$(sBuffer, InStr(sBuffer, vbNullChar) - 1)   End If End Function Sub 使い方サンプル()   Dim sUserName As String      sUserName = GetLoginUserName()   MsgBox "USER: " & sUserName, vbInformation    End Sub を実行してみたのですが、それぞれ自分のユーザー名しか取得されません。 http://billyboy.blog81.fc2.com/blog-entry-157.html の Public Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _ (ByVal lpBuffer As String, _ nSize As Long) As Long Function GetLoginName() Dim strBuffer As String * 255, retValue As Long retValue = GetUserName(strBuffer, 255) GetLoginName = Left(strBuffer, InStr(strBuffer, vbNullChar) - 1) End Function Sub sample() MsgBox GetLoginName() End Sub を実行しても同じです。 http://www.tsware.jp/tips/tips_013.htm も自分のユーザー名しか取得できません。 どれも標準モジュールに貼り付けました。 現在ファイルを開いているユーザー名を取得するにはどうすればいいでしょうか?

  • VBからExcelのテキストを指定して開きたい

     VBのアプリケーションから文書名を指定してエクセルを起動したいのですが 出来なくて困っています。ちなみにコードは下記のとおりです。どこに問題があ るのか教えていただけないでしょうか。 Private Sub Command1_Click() Dim lngReturnCode As Long Dim strFileName As String strFileName = "AllTitles.csv"   lngReturnCode = ShellExecute(Me.hwnd, _ "open c:\***\***.xls", _ strFileName, _ vbNullString, _ App.Path, _ SW_SHOWNORMAL) End Sub

専門家に質問してみよう