工場にてACCESS97を使い、営業からの発注に対して納期の回答やもろもろのデータをメールにて任意のアドレスに送りたいのですが、当方VBAはまったく使えず、クエリーの使い倒しとマクロにて、結構ややこしい処理をしています。
マクロにてオブジェクトの送信で行うと、
マクロの記述内でアドレスを書きこむかあるいはブランクにしておき、送信時に送り先を入力するかしか手がないのでしょうか?
該当する営業にその人に関わるデータのみ送りたいので
営業全員におくるわけもゆかないのです。
VBを使うしか手がないのでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (4件)

・・・。

VBA出来ないとムズイもしくは、遅いかも。
VBAで書けば?
今やってるオブジェクトの送信は下記のVBAを使ってます。

DoCmd.SendObject acSendTable, "書き出しテーブル名", acFormatXLS,TO(宛先), CC, BCC, "件名", "本文"

でっ問題の任意のアドレスってヤツだが一番簡単な方法で、、、
テーブル→新規作成→デザイン→フィールド名(Mail:テキスト型)
(送信:Yes/NO型)を作成して適当に2~3件入力しといてくれ!
テーブル保存名は、[メアドマスタ]で保存。
※その後、サブフォームを作って開けるようにすればなお可。


フォーム→新規作成→デザイン→コマンドボタン追加
→コマンド右クリック→プロパティ→クリック時→...
(3点リーダー)→【↓をコピペ】でボタン押してみ!

Dim dbo As DAO.Database 'DAO使用時のお決り文句
Dim rst As DAO.Recordset 'DAO使用時のお決り文句
Dim sSqlStr As String 'SQL文
Dim sTO As String 'sTO = "宛先のアドレス入れ。"
Dim sCC As String 'sCC = "カーボン・コピー"
Dim sBCC As String 'sBCC = "目隠しのCCだっけ?"
'「メアドマスタ」テーブルのチェックが付いている物だけを抽出。
sSqlStr = "SELECT mail FROM メアドマスタ WHERE (送信=True)"
Set dbo = CurrentDb
Set rst = dbo.OpenRecordset(sSqlStr)
Do Until rst.EOF
If sTO = "" Then
sTO = Trim(rst.Fields("mail"))
Else
sTO = sTO & ";" & Trim(rst.Fields("mail"))
End If
rst.MoveNext
Loop
rst.Close
dbo.Close
'↑【sTO】変数の中に【my@my.com;you@you.com;who@who.com】って
'感じに文字を当てはめる作業をしている。
'ちなみにCCやBCCもチョットソース変えれば使えるよん。sTO → sCCに変えたりとか。

DoCmd.SendObject acSendTable, "メアドマスタ", acFormatXLS, "'" & sTO & "'", "", "", "件名", "本文"

'ソースが汚いのは素人だから許せ!
    • good
    • 0

>VBA(VB)を基礎から分かりやすく解説しているような


お勧めの書籍には何がありますか。

私がVBを習得したのがもう5~6年前になるので、今となっては、どれが良かったのか、よく覚えていません。(お役に立てなくて申し訳無いです)

ただ、VB等の言語を学習するときには、同じような内容の本が2~3冊程度は必要だと思います。

同じ事柄についてかかれている部分でも、本によって考え方やとらえ方が違ってたりしますし、何よりもサンプルプログラムの量が増えるのがいいです。

同じ動作をするプログラムを見比べながら学習すると、一つだけの場合に比べ、かなり学習効率が高くなるんですよね。

>といってすべてシステム会社にお願いする予算もない
というありさまです

今回の場合のように、機能1個だけ、という場合には、それほど料金はかからないと思いますよ。
請け負う会社にもよりますが、数千円から数万円程度で、お使いのシステムに機能を組み込んでくれると思います。

タウンページなどで、お近くのソフトウェア開発会社を検索し、問い合わせてみられたらいかがでしょうか。

それ以外の方法としては、Accessを教えてくれるパソコン教室に入学して、「授業」と称して先生に無理やり作ってもらうってのも有りなんじゃないでしょうか(笑)。

↓インターネット上の「タウンページ」です。

参考URL:http://itp.ne.jp/servlet/jp.ne.itp.sear.SCMSVTop
    • good
    • 0

回答ではありません。



点数の入れ方は、至って簡単で、質問者の方が、
「回答する・回答を締め切る」というリンクを
クリックすれば、点数を入れられるページに
いくので、そこで、選択すればOKです。

ちなみに、そこのところは、ヘルプに書かれて
いるので、参考にしてください。
ではでは☆

参考URL:http://www.okweb.ne.jp/help.php3
    • good
    • 0

真剣に取り組んだわけではないので、確かな答えではありませんが、多分、できません。



マクロで使える機能のほとんどはVBAからも扱えるので、ここは一つVBAに取り組まれてはいかがでしょうか。
ちなみに、「オブジェクトの送信」と同等の機能は、
DoCmd.SendObject
ですね。

ヘルプでDoCmdの項目をごらんになれば、マクロで使えるほとんどの機能が、DoCmd.XXX と記述するだけで使えることが分かると思います。

Accessを思い通りに使うためには、VBAの記述は避けては通れないことですので、今後ともAccessを使っていくんであれば、さわりの部分だけでも覚えておけばいいんじゃないでしょうか。

ちょっと作ってみましょうか。(どうせヒマですし)
「宛先一覧クエリー」(フィールド名"e-mail")の全員に、「送信内容クエリー」で抽出されたデータを送りたい時は、下記のようにします。

Sub SendMail()
  Dim AtesakiRST As Recordset
  Dim AtesakiStr As String
  Dim MailAddress As String
  
  On Error GoTo HandleErr

'宛先の一覧を、コンマ区切りで生成する
  '宛先の一覧を取得
  Set AtesakiRST = CurrentDb.OpenRecordset("宛先一覧クエリー")
  Do Until AtesakiRST.EOF
    MailAddress = Nz(AtesakiRST![e-mail], "")
    If MailAddress <> "" Then
      'コンマ区切で、文字列を生成
      AtesakiStr = AtesakiStr & "," & MailAddress
    End If
    AtesakiRST.MoveNext
  Loop
  '先頭のコンマを削除
  If Left$(AtesakiStr, 1) = "," Then
    AtesakiStr = Right(AtesakiStr, Len(AtesakiStr) - 1)
  End If
  
'メッセージの送信
  DoCmd.SendObject acSendQuery, "送信内容クエリー", acFormatXLS, , , AtesakiStr, "題名", "メッセージ"

'終了
ExitHere:
  Exit Sub

'エラー処理
HandleErr:
  MsgBox "エラー発生!!" & vbNewLine & Err.Description
  Resume ExitHere
End Sub

5分で作って5分でバグ取りしただけのものなんで、「ちゃんと使える」かどうかは疑問ですが、まぁ、参考程度にはなると思います。
(ちなみに著作権うんぬんは主張しません。勝手に使ってくださって結構です。)

この回答への補足

このシステム初めて使うのですが、
どうやって、回答頂いた方に点数を入れるのですか?

補足日時:2000/08/04 22:47
    • good
    • 0
この回答へのお礼

早速のご回答有難うございます。
お書き頂いたVBAの記述なんとなく、ほんの少し
わかるような気がします。
当方、中堅製造メーカーで現場のあわただしさの中で
夜まではほとんど静かにプログラムをかじれるような環境ではなく、おまけに年齢的に頭もなかなか回らなくなりVBA(VB)にはずっと踏み込む勇気がない状態です。
かといってすべてシステム会社にお願いする予算もない
というありさまです。
VBA(VB)を基礎から分かりやすく解説しているような
お勧めの書籍には何がありますか。
本屋には余りにも多すぎて選択が困難です。
今から約20年前ですけどBASIC、FORTRANは学生時代に
かじりました。
しかし、その後はまったく空白です。
脳みそもかなり腐ってきていると感じていますが、、
そういう人間向けの書籍がありましたら宜しくお願いします。

お礼日時:-0001/11/30 00:00

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qメールの署名設定

メールの署名設定がリッチテキスト形式のなっていて、テキスト形式に代えると青字のアドレスが黒字になってしまします。
返信の場合は変えても大丈夫なのですが、どうすればテキスト形式に変更できますか?

Aベストアンサー

オプションでテキスト形式で作成するようにしていますよね?
それでもリッチテキストになってしまうのですか?
返信するときに元のメールと同じ形式にする、とかしてます?

それ以外に設定はありません。
これでもおかしいなら、IEを再インストールしてみましょう。

Qマクロにてaccessへテキストファイルをインポートする方法

マクロを利用しaccessへテキストファイルをインポートしようとしているのですが、
どのHPを参照しても、
マクロを利用してのテキストインポートはできないみたいなことが書かれてます。
一度、CSVに落として実行するしか方法はないのでしょうか?

Aベストアンサー

1度、「ファイル」「外部データの取り込み」でテキストファイルを参照
左下の「設定」ボタンでフィールドの設定をして定義を保存します。

マクロにて「テキスト変換」を選び
[変換の種類]区切り記号付きインポート 又は 固定長インポート
[定 義 名]上記で保存した定義
[テーブル名]保存するテーブル
[ファイル名]テキストファイル名(パス付き)

これでできると思いますが...

QOutlook 2003 メール返信時の署名のずれについて

よろしくお願いします。
現在の設定
【OS】 Windows XP
【メール】 OutLook 2003
【形式】  HTML
【フォント】MS P明朝 新規・返信すべて
【署名】 返信時、新規作成時に設定

メールを返信する際に、署名を設定しているのですが、
相手のフォントが自分のフォントと違っている
場合、署名がずれておかしな形になります。
どんなフォントでも署名がずれないやり方って
ありますでしょうか?

Aベストアンサー

基本的にありません。

もともとメールは単なるテキストです。
質問者さんは、HTML形式でメールを送られているようですが、
メールを受け取った方が、HTMLメールに対応していなければ、
文字サイズやフォントはすべて無効になり、
相手の環境に依存します。

また、HTMLメールで同じフォントを指定している場合でも、
Windows XPとVistaでは、見え方が異なるようです。

メールの署名を凝ったものにするのも結構ですが、
ちょっとでもずれると表示が激しく乱れるようなものは
避けた方が無難と思います。

Qマクロにてセル比較後データ加工したいのですが。。。

こんにちは。

はじめまして。

膨大(万単位)なデータを前に、関数と手作業でデータ加工をしているのですが、マクロでなんとか処理時間の軽減を図りたいのですが。。。

マクロ初心者ですので、困っております。

また、マクロ以外でもよい方法があれば教えていただければ幸いです。

画像にありますが、

データは、8行1セットが延々続いていくのですが、
その1セットの中で、
B列における連続するデータを元に加工したいのです。

2度目のa1-a3のように。。。

わかりづらい説明だとは思いますが、とても困っています。

また、回答するに当たり必要な事項があればお手数ですがお知らせ下さい。

よろしくお願いします!

Aベストアンサー

原始的に作りました。標準モジュールに貼り付けてください
#01さん、#02さんと異なるのは
 …
 a7 nnn
 a8 nnn
 a1 nnn
 a2 kkk
 …
のようなデータが並んでいるとき以下のようになります。
(セットをまたがる場合は連続しているとは見なしません)

 a7-a8 nnn
 a1  nnn
 a2  kkk

Sub Macro1()
Dim actSh, newSh As Worksheet
Dim ptr, idx, cnt As Long
Dim str As String
Dim dat As Variant
Set actSh = ActiveSheet
Set newSh = Worksheets.Add
Application.ScreenUpdating = False
With actSh
  For ptr = 1 To .Range("A65536").End(xlUp).Row Step 8
    str = .Cells(ptr, "A").Value
    dat = .Cells(ptr, "B").Value
    For idx = 1 To 7
      If dat = .Cells(ptr, "B").Offset(idx, 0).Value Then
        str = Left(str, 2) & "-" & .Cells(ptr, "A").Offset(idx, 0).Value
      Else
        cnt = cnt + 1
        newSh.Cells(cnt, "A").Value = str
        newSh.Cells(cnt, "B").Value = dat
        str = .Cells(ptr, "A").Offset(idx, 0).Value
        dat = .Cells(ptr, "B").Offset(idx, 0).Value
      End If
    Next idx
      cnt = cnt + 1
      newSh.Cells(cnt, "A").Value = str
      newSh.Cells(cnt, "B").Value = dat
  Next ptr
End With
Application.ScreenUpdating = True
End Sub

原始的に作りました。標準モジュールに貼り付けてください
#01さん、#02さんと異なるのは
 …
 a7 nnn
 a8 nnn
 a1 nnn
 a2 kkk
 …
のようなデータが並んでいるとき以下のようになります。
(セットをまたがる場合は連続しているとは見なしません)

 a7-a8 nnn
 a1  nnn
 a2  kkk

Sub Macro1()
Dim actSh, newSh As Worksheet
Dim ptr, idx, cnt As Long
Dim str As String
Dim dat As Variant
Set actSh = ActiveSheet
Set newSh = Worksheets.Add
Application.S...続きを読む

Qアウトルックのメール送信時に手動で署名を入れたいのですが

アウトルック200のメール送信時に、通常は署名を入れない状態にしておいて、必要な時にだけ手動で入れるようにするにはどうすれば良いのでしょうか?
メール本文作成画面で、挿入から定型句の中の署名を選んで入れることはできるのですが、それだと、ツールのオプションののメール形式の中の署名で作成された署名が入力されずに、ただ単純に名前だけ入力されます。
アウトルックのヘルプを見たら、メール作成のエディタをワードにした時とアウトルックにした時とでは違うらしく、ワードをエディタとして選んだ場合、手動で入力される署名は、ワード起動時に入力した使用者名が挿入されるとのこと。
ならば、アウトルック上で作った署名を手動で入力するには、エディタをアウトルックにしないと不可能なのでしょうか?
それと、エディタをワードにした場合とアウトルックにした場合とでは何が違うのでしょうか?どちらの方が便利でしょうか?

Aベストアンサー

アウトルック2000を使ってます。
アウトルックのツールメニューのオプションでメール形式を選びます。
ここでたくさんの署名を作る事が出来ます。
私の場合、遊び感覚や正式な署名など色々作っています。
私は通常使用頻度の高い署名を設定してます。

テキストメール・HTMLメール・雛型メールについての署名の事。

メールを書くとき署名が既に入る設定にしていますが、その署名を使いたくないときは、面倒でもデリートで裂く一旦削除します。
メール作成画面で、挿入メニューの署名を選択すると、たくさん作った署名にタイトルを付けてありますので数ある署名から適宜を選びます。


ワードなどのオフィスドキュメントのメールについての事。

ワードエディターでの署名はワードのツールメニューの中のオプションの全般タブに電子メールオプションがあります。
その中で電子メール用の署名を作ります。そこでも色々な署名が出来ます。
そこで各種作るとワードメールを使った場合、挿入から署名を選ぶとワード起動時の使用者名の他にも、先ほど作った署名を任意に選ぶ事が出来ます。

余談ですが、動画のイラスト入り署名も出来ますよ。


説明が下手で申しわけありません。
わからなかったら補足します。

間違いなく出来ますよ。
色々署名で楽しんでいます。

(奥が深いです)

アウトルック2000を使ってます。
アウトルックのツールメニューのオプションでメール形式を選びます。
ここでたくさんの署名を作る事が出来ます。
私の場合、遊び感覚や正式な署名など色々作っています。
私は通常使用頻度の高い署名を設定してます。

テキストメール・HTMLメール・雛型メールについての署名の事。

メールを書くとき署名が既に入る設定にしていますが、その署名を使いたくないときは、面倒でもデリートで裂く一旦削除します。
メール作成画面で、挿入メニューの署名を選択すると、...続きを読む

Qアクセス2000:マクロで「オブジェクトの送信」のアドレス変更

マクロ機能の「オブジェクトの送信」では送信先が一つだけしか入れられません。

選んだオブジェクトがフォームで1レコードであるときに、そのレコードに入力しているメールアドレスを自動的に送信先に指定するにはVBAを使うしかないのでしょうか?

Aベストアンサー

> =[Forms]![フォーム1].[テキスト1]

[テキスト1]は フォーム上での テキストボックスの名前です。

クエリーのフィールド名は使いません。

QMicrosoft Office Outlookメール文に署名貼付で

Microsoft Office Outlookメールを利用しております。
Outlook expressの時は、メール文中に署名の貼付が、メニュー[挿入]、[署名]から署名を挿入できましたが、Microsoft Office Outlookでは、どのようにすれば良いのでしょうか、よろしく、お願い致します。

Aベストアンサー

Microsoft Office : Office Outlook 2003 コミュニケーション テクニック - 署名を作成してメールを使い分けたい!
http://www.microsoft.com/japan/office/previous/2003/experience/workstyle/tips/outlook/tips3.mspx

Outlook 2007 で電子メールの署名を作成する方法
http://support.microsoft.com/kb/931825/ja

Qマクロにてメール送信

よろしくお願いします
以前の質問等も調べてみたりしましたが、答えにたどり着けず皆様にお願いしたいと思います。
マクロにて、エクセルの例えばa1:b10の範囲をメール本文に貼り付けて送信するまでの命令をしたいときはどうしたらよいでしょうか?
あて先・件名は統一です。
※あまり高度な技は僕的には無理です。すみません・・・

Aベストアンサー

自分で一からコードを書いても良いですが、BASPを使うのが導入も簡単だし楽。
http://www.hi-ho.ne.jp/babaq/index.html

Qヤフーメールで署名がつけられない

ヤフーのメールを使っています。昨日あたりに突然仕様変更がありました。

そして、メール作成画面の下にあった、「メールに署名を入れる」とかいうボタンが見当たらなくなりました。この仕様で署名を入れるにはどうすればいいのでしょうか?

設定画面の「全てのメールに署名を入れる」だと、個人的には都合が悪いです。あと、これにチェックを入れて自分にテスト送信してみても、署名がありませんでした。

勝手に仕様変えるのって不便極まりないですね。

Aベストアンサー

#1です。

私は、YahooBB会員ですが、署名の入り具合を確認しました。

Yahooの契約IDのybb.ne.jpでの送信では、メールオプションの「メールアドレスの追加・編集・削除」の編集で作成した署名が、

yahoo.co.jpでの送信では、メールオプションの「署名」の項目で作成した署名が、「すべての送信メールに署名を付ける」を有効にすると、そのまま本文にそれぞれの署名が自動的に入るようです。

従って、作成画面での「利用する」のチェック入れは無くなって、不要であれば、本文から削除する必要があります。

追加アドレスでも使う署名はそれぞれ会員IDと同じですが、「署名を利用する」のチェックを入れる項目は作成画面にあって、チェックを入れてそのまま送信するとそのメールに自動的に入るようです。

まだ、完全にすべてのIDに行き渡っていない仕様のようですが、確認した状況はそのようになっていました。

Q任意のデータ範囲を手でドラッグ、グラフ作成のマクロ

やりたいことは、グラフを作成するマクロです。
ほぼ記録マクロでいくと、グラフのソースが指定
.SetSourceData Source:=Sheets("グラフ作成ver.1").Range("A3:G33"),
PlotBy:=xlRows
A3:G33と範囲が固定されています。
任意のデータ範囲を手でドラッグしてグラフ作成のマクロを
つくりたいのですが、グラフソースデータの個所でエラーに
なります。
どうしたら、手でドラッグした任意のデータ範囲が反映される
かを教えてください。

Aベストアンサー

こんばんは。

本当は、ユーザーフォームなどのほうが自由度があってよいのですが、以下のようになりますね。ただし、グラフをセレクトして、Selection を用いるのは、ややこしいので、それは割愛します。

Sub GraphDataArrangement1()
Dim myRng As Range
 On Error Resume Next
 Set myRng = Application.InputBox("範囲を入力してください。", Type:=8)
 If myRng Is Nothing Then Exit Sub
 On Error GoTo 0
 If WorksheetFunction.Count(myRng) = 0 Then _
  MsgBox "データが選択されていません。", vbInformation: Exit Sub
  With ActiveSheet.ChartObjects(1).Chart
    .SetSourceData Source:=myRng, PlotBy:=xlRows
  End With
End Sub

こんばんは。

本当は、ユーザーフォームなどのほうが自由度があってよいのですが、以下のようになりますね。ただし、グラフをセレクトして、Selection を用いるのは、ややこしいので、それは割愛します。

Sub GraphDataArrangement1()
Dim myRng As Range
 On Error Resume Next
 Set myRng = Application.InputBox("範囲を入力してください。", Type:=8)
 If myRng Is Nothing Then Exit Sub
 On Error GoTo 0
 If WorksheetFunction.Count(myRng) = 0 Then _
  MsgBox "データが選択されて...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング