エクセルのワークシートが複数あります。
VBAで 
ActiveWorkbook.SendMail Recipients:="xxxxxx@xxx.ne.jp"
とすると、ワークブックがメールに添付され送信されますよね。
これを、ワークブック全体ではなく、特定のシートだけをメールに添付して送信したいのですが・・・
送信側はワークブックにて入力用シートでデータの入力をし、送信用のシートを完成させます。受信側では入力用シートは不要です。
すいません、このような以前にもありましたか?
どなたか教えてください。お願いします。

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

A 回答 (1件)

SendMailは使ったことがないので以下は想像です。

参考意見として見て下さい。
SendMailはブックの送信を行うわけなので、送りたいシートだけのブックを作ればいいと思いましたが・・・

1.送信側のワークブックで送信指示(マクロが起動。以下はマクロ)
     ↓
2.送信側のワークブックの送信用シートを「新しいブック」にコピー
     ↓
3.送信用シートが複数あれば「新しいブック」に繰り返しコピーする
     ↓
4.コピー完了後、送信用の「新しいブック」をSendMailで送信
     ↓
5.送信用の「新しいブック」を削除

入力用シートと送信用のシートに何らかの関係(式)があれば、送信用シートに値を貼り付けることで解決できそうです。

うまくいくような気もしますが・・・ダメかな。
    • good
    • 0
この回答へのお礼

ありがとうございます。
やっぱり、そういう方法がいいですよね。やってみます。
受信側にもわかりやすいシートに作りなおした方がいいですし。
がんばってみます。

お礼日時:2001/07/02 10:11

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

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

Q多側のない1側レコードに多を入力するには

こんにちは、いつもお世話になっています。

ウィンドウズ7
Access2010


質問なのですが、
1対多でリレーションされたテーブルレコードに、
1の中に多が一つもないレコードに対し、共通のレコードを追加することができますか?


以下例

1側テーブル
 行コード(オートナンバー):1  行:あいうえお
 行コード(オートナンバー):2  行:かきくけこ
 行コード(オートナンバー):3  行:さしすせそ
    中略
 コード:10 行:わをん

多側テーブル
 分類コード(オートナンバー):1  行コード:1  分類:母音
 分類コード(オートナンバー):2  行コード:3  分類:子音
 分類コード(オートナンバー):3  行コード:7  分類:子音


この場合、
1側テーブルの行コードが2、4~6、8~10の多側が入力されていません。
この未入力の多側テーブルに共通のレコードを入力したいのです。
ただし、共通と言っても、分類コードはオートナンバーで、
行コードは1側のテーブルに対応した数字を入力してほしいです。


おそらく、クエリで多側のない1側を抽出することはできると思います。
しかし、多側のない1側に一斉に?楽に入力するには何かいい方法がないでしょうか。
説明不足でしたらすみません、補足いたします。

すみませんが、どなたかご教授お願いいたします。

こんにちは、いつもお世話になっています。

ウィンドウズ7
Access2010


質問なのですが、
1対多でリレーションされたテーブルレコードに、
1の中に多が一つもないレコードに対し、共通のレコードを追加することができますか?


以下例

1側テーブル
 行コード(オートナンバー):1  行:あいうえお
 行コード(オートナンバー):2  行:かきくけこ
 行コード(オートナンバー):3  行:さしすせそ
    中略
 コード:10 行:わをん

多側テーブル
 分類コード(オートナンバー):1  行コ...続きを読む

Aベストアンサー

一側のテーブル名:★★
多側のテーブル名:▲▲

とした時に、表示上あるように見せる一例

SELECT Q1.行コード, Q1.行, IIf(Q2.分類 Is Null,"子音",Q2.分類) AS 分類
FROM ★★ AS Q1 LEFT JOIN ▲▲ AS Q2 ON Q1.行コード=Q2.行コード;

の結果は

行コード 行     分類
1    あいうえお  母音
2    かきくけこ  子音
3    さしすせそ  子音
4    たちつてと  子音
5    なにぬねの  子音
6    はひふへほ  子音
7    まみむめも  子音
8    やゆよ    子音
9    らりるれろ  子音
10    わをん    子音


また、追加する形では

INSERT INTO ▲▲ ( 行コード, 分類 )
SELECT Q1.行コード, "子音"
FROM ★★ AS Q1 LEFT JOIN ▲▲ AS Q2 ON Q1.行コード=Q2.行コード
WHERE Q2.行コード Is Null;

とか

UPDATE ★★ AS Q1 LEFT JOIN ▲▲ AS Q2 ON Q1.行コード=Q2.行コード
SET Q2.行コード = Q1.行コード, Q2.分類 = "子音"
WHERE Q2.行コード Is Null;

の結果、多側テーブルの内容は

分類コード 行コード 分類
1       1   母音
2       3   子音
3       7   子音
4       2   子音
5       4   子音
6       5   子音
7       6   子音
8       8   子音
9       9   子音
10       10  子音

※ 後者(UPDATE)は、主キー等の設定でエラーになる場合あり


提示された例では、一対多より一対一のように見えましたが
実際にはどのようなデータになっているのでしょうか。

分類コード 行コード 分類
1       1   母音
11       1   ????

もしかすると

行コード 行
101   がぎぐげご

というものがあって

分類コード 行コード 分類
11      101   子音(?)
12      101   濁音(?)

とかになるのでしょうか


「分類コード」等どう使っていくのか、わかっていないので
一対一なら・・・・以下独り言

一側テーブルに「分類」を追加して、テーブルを1つにしても???

行コード 行     分類
1    あいうえお  母音
2    かきくけこ  子音
3    さしすせそ  子音


また、

分類コード 分類
1      母音
2      子音

行コード 行     分類コード
1    あいうえお   1
2    かきくけこ   2
3    さしすせそ   2

という構成も???・・・・と、思っただけでした。

一側のテーブル名:★★
多側のテーブル名:▲▲

とした時に、表示上あるように見せる一例

SELECT Q1.行コード, Q1.行, IIf(Q2.分類 Is Null,"子音",Q2.分類) AS 分類
FROM ★★ AS Q1 LEFT JOIN ▲▲ AS Q2 ON Q1.行コード=Q2.行コード;

の結果は

行コード 行     分類
1    あいうえお  母音
2    かきくけこ  子音
3    さしすせそ  子音
4    たちつてと  子音
5    なにぬねの  子音
6    はひふへほ  子音
7    まみむめも  子音
8    やゆよ    子音
...続きを読む

Qエクセルで入力用の場所に入力したら、入力内容が人ごとに反映される方法

入力用のシートを1つ用意して、その表の中の項目を入力したら、内容が他のシートに反映される方法ってありますか?
例えば、社員Aの社員番号が001で、
社員番号を入力したら、その人のシートに
次々に情報が入力されていくっていうことはできるのでしょうか??

すごく分かりにくい質問ですみません。

Aベストアンサー

#2のmatsu_junです。
>使用しているのが、エクセル97と古いからでしょうか??
おそらくそうだと思います。手元に97が無いので確認が取れませんが、私が以前に回答した手順は参考になりませんでしょうか。下の参考URLより、#5をご覧ください。

また、先の回答ではシート名を間違えるとExcelの再立ち上げが必要になります。一応下に再立ち上げが不要なように改良しておきました。こちらをご利用ください。

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ERREND
Application.EnableEvents = False
If Target.Address <> "$A$1" And Range("A1").Value <> Empty Then
Sh_Nam$ = CStr(Range("A1").Value)
Worksheets(Sh_Nam).Cells(Target.Row, Target.Column).Value = Target.Value
End If
Application.EnableEvents = True
Exit Sub
ERREND:
MsgBox Error(Err.Number)
Application.EnableEvents = True
End Sub

参考URL:http://okweb.jp/kotaeru.php3?qid=1225216

#2のmatsu_junです。
>使用しているのが、エクセル97と古いからでしょうか??
おそらくそうだと思います。手元に97が無いので確認が取れませんが、私が以前に回答した手順は参考になりませんでしょうか。下の参考URLより、#5をご覧ください。

また、先の回答ではシート名を間違えるとExcelの再立ち上げが必要になります。一応下に再立ち上げが不要なように改良しておきました。こちらをご利用ください。

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ERREND
Application.Enab...続きを読む

Q番号入力後に データベースシートから自動入力

エクセルの関数で、 下記、ご助言願います。


エクセルのシートで、 番号と項目名(1対1対応)を記載したデータベースシートを作ります。 
別シートで、番号を入力すると 先程のデータベースシートを参照して、(番号入力をしたセルの横のセルに) 入力番号に対応する項目名を自動で入力するようにしたいと思います。 関数で可能でしょうか?

例えば、 
データベースシート: 
01 りんご 
02 みかん
03 バナナ

入力シート
03 <ばななが自動入力>


よろしくお願いいたします。

Aベストアンサー

VLOOKUPで行けるでしょう

VLOOKUP関数の使い方
http://www.iwaseh.com/TSU06/nyuumon2b/09/nyuumon2-09.pdf

QActiveWorkBook VBA

Sub test()
Dim myCSV As String
Dim Fname As Variant
Dim Aname As String
Dim Fullp As String
Application.ScreenUpdating = False
Fullp = ActiveWorkbook.FullName
Pos = InStrRev(Fullp, "\")
Fname = Left(Fullp, Pos)

myCSV = Dir(Fname & "*.csv")
Do Until myCSV = ""
Workbooks.Open Fname & myCSV

Aname = Left(Fullp, InStr(1, Fullp, ".") - 1)
ActiveWorkbook.SaveAs filename:=Aname & ".xls", FileFormat:=xlExcel9795
ActiveWorkbook.Close
myCSV = Dir()
Loop

Kill Fname & "*.csv"
End Sub

あるフォルダにあるcsvファイルをxlsで保存したいと思いましたが、アクティブになるBOOKがバラバラ?
で、うまくいきません。csvファイルを開いたときに
そのファイルがアクティブになり、うまくloopできないでしょうか?

Sub test()
Dim myCSV As String
Dim Fname As Variant
Dim Aname As String
Dim Fullp As String
Application.ScreenUpdating = False
Fullp = ActiveWorkbook.FullName
Pos = InStrRev(Fullp, "\")
Fname = Left(Fullp, Pos)

myCSV = Dir(Fname & "*.csv")
Do Until myCSV = ""
Workbooks.Open Fname & myCSV

Aname = Left(Fullp, InStr(1, Fullp, ".") - 1)
ActiveWorkbook.SaveAs filename:=Aname & ".xls", FileFor...続きを読む

Aベストアンサー

こんばんは。

>あるフォルダにあるcsvファイルをxlsで保存したいと思いましたが、アクティブになるBOOKがバラバラ?

マクロを入れた元のブックにあわせた統一した枝番でもつけた名前を付けるつもりなのですか?コードの意味が良く分りません。いくらスクリプト言語でも、ActiveWorkbook が変わって、次のコードを見失うことはありません。

>Aname = Left(Fullp, InStr(1, Fullp, ".") - 1)
  ↑
マクロで動かしているアクティブブックのファイル名
>ActiveWorkbook.SaveAs filename:=Aname & ".xls", FileFormat:=xlExcel9795
 Aname =アクティブブックのファイル名 で保存?

それと、ファイルの削除は、その都度行ったほうがよいと思います。特に理由はありません。

サンプルとして作ってみました。

Sub test2()
  Dim myCSV As String
  Dim FilePath As String
  Dim BaseName As String
  Application.ScreenUpdating = False

  FilePath = ActiveWorkbook.Path & "\"
  myCSV = Dir(FilePath & "*.csv")

  On Error Resume Next
  Do Until myCSV = ""
   BaseName = Mid$(myCSV, 1, InStrRev(myCSV, ".") - 1)
   Workbooks.Open FilePath & myCSV
   ActiveWorkbook.SaveAs Filename:=BaseName & ".xls", FileFormat:=xlExcel9795
   ActiveWorkbook.Close
   Kill FilePath & myCSV
   myCSV = Dir()
  Loop
  On Error Goto 0

End Sub

こんばんは。

>あるフォルダにあるcsvファイルをxlsで保存したいと思いましたが、アクティブになるBOOKがバラバラ?

マクロを入れた元のブックにあわせた統一した枝番でもつけた名前を付けるつもりなのですか?コードの意味が良く分りません。いくらスクリプト言語でも、ActiveWorkbook が変わって、次のコードを見失うことはありません。

>Aname = Left(Fullp, InStr(1, Fullp, ".") - 1)
  ↑
マクロで動かしているアクティブブックのファイル名
>ActiveWorkbook.SaveAs filename:=Aname & ".xl...続きを読む

Qアクセスでテーブル入力用のフォームを他のテーブルのレコードを参照しながら入力するには

こんにちわ
アクセスでテーブルのレコードを作成するのに
他のテーブルのレコードを引っ張ってきて
フォーム上で表示したいのですが
うまくいきません

たとえば、社員名テーブル(従業員番号と名前)
配属テーブル(従業員番号と営業所コード)
支社テーブル(支社名と営業所コードの上2桁)
営業所テーブル(営業所名と営業所コード)を作成しておきます

退職者が出るたびに
退職者テーブル用のフォームに
従業員番号を入力すると
フォーム上にその人の名前・支社名・営業所名が表示され
それを確認してから
その他のデータをその同じフォームに
入力したいのです
今、試しに作ったのは
テーブルに一度上書きしないとデータを引っ張ってこないの不便なのです

よろしくお願いします

Aベストアンサー

従業員番号・名前・営業所コード・支社名・営業所名を表示するクエリを作りそれを基にコンボボックスをフォーム内に作ります。
そのコンボボックスをコンボ1と名前を付けたとしてフォーム上の名前・営業所コード・支社名・営業所名の各フィールドにコンボボックスに表示される内容を出したい場合。
(従業員番号はコンボボックスを作る時に次のフィールドに保存するのところで従業員番号を指定しておいて)

Private Sub コンボ1_AfterUpdate()
名前 = コンボ1.Column(1)
営業所コード = コンボ1.Column(2)
支社名 = コンボ1.Column(3)
営業所名 = コンボ1.Column(4)
End Sub
上記の記述を更新後処理にすれば出来ます。
試してみてください。


このカテゴリの人気Q&Aランキング

おすすめ情報