下記の様な作業をVBAで行うのは可能でしょうか。毎月、手作業で困っています。
よろしくお願い致します。
それぞれの1行目には項目名があり、2行目からは下記のデータ(数字と名前)が入っています。
※1行につき、一人のデータとは限りません。
A列には、社員番号
B列には、名前
D列には(販売日の)日付
D列からK列までは、商品名
・上記のようなシートがあり、人(担当者、A列)により1行しかなかったり、50行ある人もあり、ばらばらです。
・それそれの担当者毎に、ファイル(ブック)を作成したいのです。その際には下記の様な名前をつけたいと思います。
※予めテンプレートがありますので、それに値張りする感じです。
例)社員番号_社員名_営業実績.xls
→00001_鈴木太郎_営業実績,xls
No.5ベストアンサー
- 回答日時:
No.4です。
>罫線と最後の列(L列にチェック1、M列にチェック2)に指定のチェック欄を入れることは可能でしょうか?
とは L1に「チェック1」・M1に「チェック2」という項目名が入れば良い!という解釈です。
↓のコードに変更してみてください。
Sub Sample2()
Dim i As Long, lastRow As Long
Dim myPath As String, fN As String
Dim wS As Worksheet, nB As Workbook
myPath = "保存場所のパス" & "\"
Worksheets.Add after:=Worksheets(Worksheets.Count)
Set wS = Worksheets(Worksheets.Count)
With Worksheets("Sheet1")
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
.Range("A:A").AdvancedFilter Action:=xlFilterCopy, copytorange:=wS.Range("A1"), unique:=True
wS.Range("A:A").Sort key1:=wS.Range("A1"), order1:=xlAscending, Header:=xlYes
For i = 2 To wS.Cells(Rows.Count, "A").End(xlUp).Row
Workbooks.Add
Set nB = Workbooks(Workbooks.Count)
.Range("A1").AutoFilter field:=1, Criteria1:=wS.Cells(i, "A")
Range(.Cells(1, "A"), .Cells(lastRow, "K")).Copy nB.Worksheets("Sheet1").Range("A1")
'//▼ 追加
With nB.Worksheets(1)
.Range("L1") = "チェック1"
.Range("M1") = "チェック2"
.Range("A1").CurrentRegion.Borders.LineStyle = xlContinuous
.Range("A1:M1").HorizontalAlignment = xlCenter
.Columns.AutoFit
End With
'//▲ まで
fN = Format(wS.Cells(i, "A"), "00000") & "_" & nB.Worksheets(1).Range("B2") & _
"_営業実績(" & Format(Date, "m月") & ")" '//敢えて拡張子は省いています ★
nB.SaveAs Filename:=myPath & fN
nB.Close '//ファイルを閉じない場合、この行を消去 ★
Next i
.Activate
.AutoFilterMode = False
Application.DisplayAlerts = False
wS.Delete
Application.DisplayAlerts = True
End With
End Sub
コレではどうでしょうか?m(_ _)m
No.4
- 回答日時:
こんばんは!
>毎月、手作業で困っています。
というコトですが、フォルダ内に同じファイル名があるとエラーになりますので
余計なお世話かもしれませんが、ファイル名に「○月」を追加するようにしてみました。
元データはSheet1にあるとします
標準モジュールです。
Sub Sample1()
Dim i As Long, lastRow As Long
Dim myPath As String, fN As String
Dim wS As Worksheet, nB As Workbook
myPath = "保存場所のパス" & "\"
Worksheets.Add after:=Worksheets(Worksheets.Count)
Set wS = Worksheets(Worksheets.Count)
With Worksheets("Sheet1")
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
.Range("A:A").AdvancedFilter Action:=xlFilterCopy, copytorange:=wS.Range("A1"), unique:=True
wS.Range("A:A").Sort key1:=wS.Range("A1"), order1:=xlAscending, Header:=xlYes
For i = 2 To wS.Cells(Rows.Count, "A").End(xlUp).Row
Workbooks.Add
Set nB = Workbooks(Workbooks.Count)
.Range("A1").AutoFilter field:=1, Criteria1:=wS.Cells(i, "A")
Range(.Cells(1, "A"), .Cells(lastRow, "K")).Copy nB.Worksheets("Sheet1").Range("A1")
nB.Worksheets("Sheet1").Columns.AutoFit
fN = Format(wS.Cells(i, "A"), "00000") & "_" & nB.Worksheets(1).Range("B2") & _
"_営業実績(" & Format(Date, "m月") & ")" '//敢えて拡張子は省いています ★
nB.SaveAs Filename:=myPath & fN
nB.Close '//ファイルを閉じない場合、この行を消去 ★
Next i
.Activate
.AutoFilterMode = False
Application.DisplayAlerts = False
wS.Delete
Application.DisplayAlerts = True
End With
End Sub
※ ファイル名を付けて保存(ファイルを閉じる)という操作にしていますが、
敢えて拡張子は指定していません。
(ファイル名を付けて保存する時点で、お使いのバージョンの拡張子に設定されるはずなので)
一発で解決!とはいかないと思いますが、
とりあえずはこの程度で・・・m(_ _)m
No.3
- 回答日時:
私だったら
1、シートの追加
社員データ
A B C
社員番号 名前 メールアドレス
データ抽出シート
エクセルのアドバンスフィルターを活用
http://www.eurus.dti.ne.jp/yoneyama/Excel/vba/vb …
を参考にしてください。
メール原稿のシート
B2 氏名
B3 メールアドレス
B4 件名(先月の売上の件
B5 本文(添付ファイルを確認の上、返信してください。
B6 添付ファイルへのパスとファイル名
2、VBAの準備
1、データ抽出のシートへ担当者のデータのみ抽出
2、テンプレートを開く
3、テンプレートに抽出したデータを入れる。
4、テンプレートを上書き保存(この場合、ファイル名は同じ)
5、エクセルからOutLookを操作して
現行シートに基づき、担当者へメールを送信する。
6、1~5を社員データを元に、全ての社員に対して自動で行う。
http://okwave.jp/qa/q1261338.html
に添付ファイルをOutLookで送信するマクロがありました。
これで、メールを送信する際に間違った添付ファイルなどのミスもなくなると
思います。
不要なファイルは作成せずに済みます。ファイルの管理はOutLook上で行えます。
No.2
- 回答日時:
しばし、お付き合いしますが。
>毎月、手作業で困っています。
この作業を、具体的に書いてもらった方が良いと思います。
もうひとつ、パソコンの中に作成されたファイルはどうされるのかも知りたいです。
毎月、フォルダが増えて、50個ものファイルが増えていく事もやめた方が良いと思います。
作成するファイルはエクセルで無ければならないのでしょうか。
配布用であれば、PDFなどの方が良いかと思います。
もし、配布したエクセルに担当者が何らかの編集を加えて返信されるようであれば別ですが。
No.1
- 回答日時:
そんなに難しそうな内容じゃないのですが、下記の内容が気になります。
>※1行につき、一人のデータとは限りません。
1行分のデータが特定の社員1名分ならば、社員番号をキーとしてフィルターなどで抽出して、その結果を新しいブックに張り付けて、所定のファイル名にすることになります。
ただし、上記のように1行に複数名のデータが入っている状態では、この方法が、管理方法によっては使えません。
また、そのような管理方法はあまりいい方法とは言えません。
社員番号と社員名の列に複数名の番号や名前が入ってるのかな??
だとすると、ちょっとその意図が分かりかねますね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) エクセルについて教えてください。 3 2023/06/28 09:11
- その他(データベース) Excel VBA 転記について 1 2022/04/20 16:55
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Visual Basic(VBA) evcel VBAについて 2 2022/08/02 21:37
- Visual Basic(VBA) vbaについて 主に以下のような設定をしたいです。 Aブックの表の行数が20未満だったら Bブックの 1 2023/06/08 23:40
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
- Excel(エクセル) VBA セルの値と同じ名前のシートにデータを貼り付けするやり方を教えてください 2 2022/05/17 16:26
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelでシートの違うデータでグ...
-
複数シートからデータを拾って...
-
エクセルファイルのシート毎の容量
-
トランジスタの選び方
-
ファンモータが作動しない。
-
EXCELで2つのファイルから重複...
-
エクセルで一覧表から担当別シ...
-
電子部品のデータシートの探し方
-
エクセル2010 別シートへのデー...
-
EXCEL 複数行のデータを1行にま...
-
excel vlookup 新担当者への実...
-
エクセルで名簿を50音で切り分ける
-
エクセル マクロ "特定の日付...
-
(VBAにて)日付でデータを抽出す...
-
エクセルで複数の条件を抽出し...
-
Googleスプレッドシートフィル...
-
エクセルで抽出分だけを別シー...
-
エクセルで1つのシートを拠点...
-
【エクセルマクロ】複数シート...
-
エクセルで行の自動非表示の方法は
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルファイルのシート毎の容量
-
複数シートからデータを拾って...
-
Excelでシートの違うデータでグ...
-
シート削除して同名シート追加...
-
excelの不要な行の削除ができな...
-
Excelで日付変更ごとに、自動的...
-
VBAで CTRL+HOMEの位置へ移動...
-
トランジスタの選び方
-
EXCELで2つのファイルから重複...
-
EXCEL 複数行のデータを1行にま...
-
他のシートの一番下の行データ...
-
オートフィルタで抽出したデー...
-
エクセルのカメラ機能について
-
(VBAにて)日付でデータを抽出す...
-
エクセルで名簿を50音で切り分ける
-
別々のシートの表をピボットテ...
-
Excel 売上管理シートに入力し...
-
Excelマクロ 差分抽出の方法が...
-
EXCEL の表を一行ずつシートに...
-
エクセルVBAで、特定文字から始...
おすすめ情報
ご指摘、ありがとうございます。自分の書き方が誤っていました。
1行につき、一人のデータです。
なので、A列でフィルターをかければ、その人の営業実績が特定されます。
※A列の人が販売した商品毎の数量が、(C列には販売日)D列以降に並ぶイメージです。当然ですが、A列の社員番号は、B列の担当者の社員番号です。
本当に申し訳ありません・・
ありがとうございます。
>この作業を、具体的に~
・担当者が商品を販売すると、社員番号と名前と商品毎に数字を入力します。
・2社(人)に対して、同日に販売すると2行になりますし、3社(人)であれば3行です。
・毎月、月初に先月末締めのデータを各担当者に、確認作業を行わせます。
・チェック欄があり、そこにコメントを入れてもらっています。
>パソコンの中に作成されたファイルはどうされるのかも知りたいです。
・上記のファイルはメールでやりとりを行い、確認作業が終わったファイルは指定フォルダに格納されます。
・社内共有ドライブがありますが、そこから直接、担当者が作業するということはありません。
>配布用であれば、PDFなどの方が良いかと思います。
・上記のとおり、そのファイルを使用して作業があるので、エクセルで渡したのです。但し、担当長に進捗を見せるので。それはXPSで渡しています。
ありがとうございます。
ほぼ、理想通りです。
これに加えて、罫線と最後の列(L列にチェック1、M列にチェック2)に指定のチェック欄を入れることは可能でしょうか?
何度も申し訳ありません。