• 締切済み

初心者ですが、Excelファイル(AAA.xls)の、A1セルの情報を

初心者ですが、Excelファイル(AAA.xls)の、A1セルの情報を Outlookの本文に入力したいと思っています。 そこで、下記プログラムを組んだのですが、間違いだらけのようで 起動しません。どなたか教えていただけませんか? Sub メール自動送信() Dim my01App As Outlook.Application Dim mymail As Outlook.MailItem Dim body As String Set my01App = CreateObject("Outlook.Application") Set tgtdb = CreateObject("Excel.Application") Set mymail = my01App.CreateItem(olMailItem) With mymail mymail.body = "C:\Users\tomohide\Desktop\AAAA.xls".cells(1,1) End With mymail.Display End Sub

みんなの回答

  • seastar3
  • ベストアンサー率69% (99/142)
回答No.2

ANo.1ですが、解答のコードに間違いがありましたので再回答します。 元の回答コード Dim xlsBook As Object Set xlsBook = xlsApp.Workbooks.Open("C:\Users\tomohide\Desktop\AAAA.xls", , True) mymail.body.text = xlsBook.Sheets(1).cells(1,1) のxlsAppの部分がtomohideさんの質問コードに対応してなくて、tgtdbでなくてはなりませんでした。どうも済みません。従って次のコードで試してみて下さい。 Dim xlsBook As Object Set xlsBook = tgtdb.Workbooks.Open("C:\Users\tomohide\Desktop\AAAA.xls", , True) mymail.body.text = xlsBook.Sheets(1).cells(1,1) がふさわしいコードです。

全文を見る
すると、全ての回答が全文表示されます。
  • seastar3
  • ベストアンサー率69% (99/142)
回答No.1

前提が説明されていませんが、Outlook内でのVBAですね。 実際に使ったことがないので検証していませんが、気づいた点をアップします。 ポイントとしては、いきなりcells()関数を使っているので適切に指定できていません。 With mymail mymail.body = "C:\Users\tomohide\Desktop\AAAA.xls".cells(1,1) End With の部分は、次のような記述がふさわしいと考えられます。 Dim xlsBook As Object Set xlsBook = xlsApp.Workbooks.Open("C:\Users\tomohide\Desktop\AAAA.xls", , True) mymail.body.text = xlsBook.Sheets(1).cells(1,1) 以上です。 With mymail .. End With のWithの入れ子は、mymail.bodyと記述しているので効果がないようです。 まだ、Outlookのオブジェクトとメソッドが分からないので、その分野のアドバイスができませんので悪しからず。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • CreateObjectとGetObjectの違い

    当方エクセル2003です。 Sub test_CreateObject() Dim App As Excel.Application Dim MyFileName As String Set App = CreateObject("Excel.Application") MyFileName = ActiveWorkbook.Path & "\新規Microsoft Excel ワークシート.xls" With App .Workbooks.Open FileName:=MyFileName .Visible = True End With Set App = Nothing End Sub --------------------------------------------------------- Sub test_GetObject() Dim App As Excel.Application Dim MyFileName As String Set App = GetObject(, "Excel.Application") MyFileName = ActiveWorkbook.Path & "\新規Microsoft Excel ワークシート.xls" With App .Workbooks.Open FileName:=MyFileName .Visible = True End With Set App = Nothing End Sub この二つは何が違うのでしょうか? どちらも既存のエクセルファイルがが開きます。

  • VBA エクセル メール送信 ハイパーリンクの貼り方

    お世話になります。 首題の通り、エクセルに記述したマクロを使いメールを送りたいのですが、その際に文章の記述にハイパーリンクを張りたいのです。 例えば下記のモジュールですと、文章のBODYの部分には「OKWAVE」とだけ表示されますが、これをクリックすると[http://okwave.jp/]が開くようにしたいのですが、どのように記述すればよろしいのでしょうか?よろしくご指南くださいませ。 Sub test() Dim strBody As String Filename = "ハイパーリンクの貼り方???" strBody = "OKWAVE" Set myOL = CreateObject("Outlook.Application") Set myMAIL = myOL.CreateItem(0) With myMAIL .to = "123@123.GOM" .Subject = Filename .body = strBody .display '.send End With Set myMAIL = Nothing Set myOL = Nothing End Sub

  • SETを使ったほうがよい?

    accwessからエクセルファイルを開きたいのですが、 App.Workbooks.Open と、 Set xlBook = xlApp.Workbooks.Open とどちらを使った方がいいのでしょうか? ////////////////////////////////////////////////////////// Private Sub ファイル1_Click() Dim App As Object Dim MyFileName As String MyFileName = "D:\My Documents\test.xls" Set App = CreateObject("Excel.Application") App.Workbooks.Open FileName:=MyFileName App.Visible = True End Sub でも Private Sub ファイル2_Click() Dim xlApp As Object Dim xlBook As Object Dim FileName As String Const FolderName = "D:\My Documents\test.xls" Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(FolderName & FileName) xlApp.Visible = True Set xlApp = Nothing Set xlBook = Nothing End Sub ////////////////////////////////////////////////////////// でも開けました。 多分、SETを使うかどうかの違いだと思うのですが VBAでコードを作る際、どちらのコードを使った方がいいか教えてください。

  • エクセルファイルが既に開いてるのなら開かない

    エクセルファイルが既に開いてるのなら開かない としたいです Sub test() Dim app As Excel.Application Dim book As Excel.Workbook app = CreateObject("Excel.Application") If app.ReadOnly Then MsgBox("既に開いています") End If End Sub このようにやろうと思ったけど、 これじゃファイル名をしてしてないから無意味ですよね しかも上記のコードを実行したら --------------------------------------------------------- 型 'System.MissingMemberException' のハンドルされていない例外が Microsoft.VisualBasic.dll で発生しました 追加情報: 公開メンバー 'ReadOnly' は型 'ApplicationClass' に見つかりませんでした。 --------------------------------------------------------- というエラーが発生しました。 Sub test() Dim app As Excel.Application Dim book As Excel.Workbook app = CreateObject("Excel.Application") app.Visible = True book = app.Workbooks.Open("C:\Users\test.xlsm") End Sub このようにして、エクセルファイルを開くコードは分かるのですが、 このコードに、「既に開いているのなら開かない」という処理を付け加えたいです。 よろしくお願いします。

  • outlook2003 本文の一部に色を付けたい。

    vbaでメールを作成するマクロは組めたのですが 一部の文字に色をつける方法がわかりません。 Sub test() Dim acoutlook As Outlook.Application Dim acmail As MailItem Set acoutlook = GetObject(, "outlook.Application") Set acmail = acoutlook.CreateItem(olMailItem) With acmail .To = "aaaa@com" .Subject = "件名" .Body = "赤です。よろしくお願いします。" .Display End With End Sub 上のコードの「赤」という部分を赤色にするにはどうすればいいでしょうか。 ちなみにこれはアクセスから起動しています。 よろしくお願いします。

  • EXCELVBA メール送信について

    EXCELVBAで加工したデータをメールに添付して送信するツールを作成したいのですが、送信後保存ファイルを削除したい場合の方法分からす困っています。自身(?)を削除する事になるのでうまく動作しません。何方か良い方法があったらご指導を頂けないでしょうか? 宜しくお願いします。 Sub MailSend() Dim app As Object Dim objml As Object Dim moji As String Set app = CreateObject("Outlook.Application") Set objml = app.CreateItem(0) moji = "ご査収ください" objml.To = "xxxx@xxx.xxx.or.jp" '宛先 objml.Subject = "TEST" '件名 objml.Body = moji '本文の代入 objml.Attachments.Add "D:\My Documents\TEST.xls" objml.Send '送信   kill(TEST.xls) →※この部分がどのように処理して良いか分かりません End Sub

  • アクセスからアウトルックでメールを送りたい

    アクセスからアウトルックでメールを送るために調べたのですが 新しいメッセージを作ってメールを送信するところまではできたのですが 送信ボタンを押下しても、どうやらアウトルックが開いてないと送信できないことがわかりました。 アウトルックは常に立ち上げていません。 なので下記のコードに、アウトルックを立ち上げるコードを入れたのですが わからないので教えていただけますか? Sub メール送信() Dim OlApp As Outlook.Application Dim mItem As Outlook.MailItem Set OlApp = New Outlook.Application Set mItem = OlApp.CreateItem(olMailItem) With mItem .To = "○○@docomo.ne.jp" .Body = "test" .display End With End Sub アウトルックのバージョンは2007です。ご教授よろしくお願いします。

  • ファイルが既に開いているかどうかを取得するには

    Sub Sample1() Dim App As Object Dim MyFileName As String Set App = CreateObject("Excel.Application") MyFileName = "C:\Users\test.xlsm" With App .Workbooks.Open Filename:=MyFileName .Visible = True If .ReadOnly Then MsgBox "既に開いています" App.Quit '既に開いているのなら、閉じる End If End With End Sub このようなコードを作ったのですが、どうやらIf .ReadOnly Thenの部分が間違っているようです。 エラーになります。 既にファイルが開いているか、読み取り専用かどうかを取得するコードをご教授ください。

  • マクロがうまくいきません!

    office2000を使用してます。 Excelでボタンをクリックするのみであらかじめ作られたメッセージがメールで送信されるマクロを作成中です。 Private Sub CommandButton2_Click() Dim OLApp As Outlook.Application Dim mItem As Outlook.MailItem Set OLApp = CreateObject("Outlook.Application.9") Set mItem = OLApp.CreateItem(olMailItem) With mItem .Recipients.Add("abcd@abcd.co.jp").Type = olTo .Subject = "明日の件" .BodyFormat = olFormatPlain .Body = "明日、久しぶりに会えるのを" & _ "楽しみにしています。" & vbCr & _ "それじゃ。" .Send End With Set mItem = Nothing Set OLApp = Nothing End Sub このように作成したのですがうまくいきません。 エラーで「オブジェクトは、このプロパティまたはメソッドをサポートしていません」と出ます。参照設定も行ったのですが、どうしてでしょうか?どなたかお願いします。

  • 開いているXLSファイルが読み取り専用か調べる

    Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open("C:\test.xls") Set xlSheet = xlBook.Worksheets(1) 開いたExcelファイルが読み取り専用になっているかどうかを調べるにはどうすればいいですか? ファイルの属性が読み取り専用かどうかは取得できるのですが、属性は読み取り専用ではなくても誰か他のユーザーがネットワークから開いているために読み取り専用で開いている場合もわかるようにしたいです。 お願いします。