顧客管理で下記のようなことがしたいと思っています。
マクロ初心者なのですが、こういったことは可能でしょうか。

(1)事前に、顧客管理のデータ入力用ファイル(以下データファイル)、A、B、C、D、Eという定型ファイルを作成しておく。A~Eには、全て複数のシートが入っており、シート1にデータファイルに入力した情報が飛ぶようにしたい。

(2)データファイルに顧客情報「あ」を入力し、シート上に作成しておいたAという名のマクロボタンを押すと、Aのファイルのシート1に「あ」という情報が飛び、さらに、Aファイルは原本なので、“「あ」A”という名前の新しいファイルを作成できるようにしたい。

(3)同じように、データファイルに顧客情報「い」を入力して、今度はBというボタンを押したら、Bファイルのシート1に「い」という情報が飛び、“「い」B”という名前のファイルが新しく作成できるようにしたい。

非常にわかりにくい説明で申し訳ないのですが、これから自分でマクロやVBEを勉強しようと思っており、実際こういったことが可能なのかどうか、ご教示頂けますと幸甚です。何卒よろしくお願い致します。

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

A 回答 (4件)

bell_rinkaさんと同じく、エクセル・VBAを独学で学んだ人です。


可能か不可能かでいえば可能だと思います。が、オススメは出来ません。
ブックを分けて、さらに全てのブックに共通した作業内容を作り出すだけで、
多大な時間と労力が必要です。自身でuserformを作り、入力した内容を表記する為のプログラムも、適用場所の指定もしなければならないし、大変すぎます。
どんな顧客情報を管理したいのか具体的に分かりませんが、エクセルの範囲を超えたものについては、ファイルメーカーなどのビジネスソフトの使い方を覚えて扱った方が、余程効率のいい管理と、行き届いた管理が可能と思います。
汎用性も余程高いと思います。
VBAは所詮、時間のかかる繰り返しの作業を省略したい時に使うマクロの延長、
後から「あれも欲しい、これも必要だ」となった時に、根っこからまた修正を加えなければいけないので、可能不可能よりもやらないほうがいいです。
エクセルで管理出来そうな情報はエクセルで、複雑なシステムはビジネスソフトで、使い分けをしないと、ゆくゆく大きな反省を抱えますよ。
    • good
    • 0
この回答へのお礼

ご回答いただきまして、どうもありがとうございました。

独学で学ばれた方のご意見は何だか説得力がある気がします(^_^;)
頑張った結果、後から反省することになりそうですね。皆さまからのアドバイスのように、アクセスなどでどんなことができるのかをまずは調べてみようと思います。

今しばらくは自分の知識でできそうな形で、現状を改善したいと思います。どうもありがとうございました!

お礼日時:2009/05/24 21:58

エクセルしか知らず、エクセルばっかりに期待しているのではないですか。


エクセルはブックを分けると、後の処理(合計、検索など)が大変なことを知らないのだとおもう。
データが入力終了後の後の処理は何も書いて無いので、適否ははっきりいえないが。このアイデアは質問者の我流で、良いものとは思えません。
ーー
むしろ、変にエクセルにかこつけて(路線を決めて)、中途半端に具体的に質問で説明しているが、そうしないで、こういうデータを集めて、蓄積後こういう役に立てたい、と言う風に質問で聞くほうがよいと思う。
この質問は後の利用について説明していない。社内では今までから懸案で常識なのでしょうが、読者にはわからない。そもそもそれらの利用目的に応じてシステムを組むのは当たり前でしょう。
マクロ初心者でも有るが、エクセルの利用経験も浅く、システム創設の未経験者ではないですか。
顧客ごとにファイルを持つなんて。
顧客単位の情報はデータベース(アクセスなど)では、レコードと言う単位で持つのが普通。そしてファイル間の連携が出来るところのデータベースソフトが必要と思う。
ーー
どういう理由でA,B,C,Dというテンプレートのようなものがいるのか。
顧客情報をA-D別に分類し、一顧客一シートに情報を作るらしい。
こんな設計も普通しません。
質問の表現も判りにくい。
>自分でマクロやVBEを勉強しようと思っており
やるならアクセス(VBA)の方がましとおもう。
ーー
VBAにしろ、すぐ横で教えてもらえる環境に無いと、習得や仕事に使うレベルになるには難しいと思う。特に同じ部の他人に使ってもらうなどのレベルに作るとなると、さらに設計上、気を使うべきなので難しい。
あと障害対策や回復、セキュリティなど、単なプログラムコードだけでない、大切な面がある。そんなのは>マクロやVBEを、で頭がいっぱいで、吹っ飛んでいるのでは。
だから、こういうのは出来合いの顧客管理ソフトを使えるか検討し購入するか、業者に金を出してやってもらうものと思う。また周りの上司など同意が有るのかな。あるいは部下にやれと言っているだけかな。
実際ここでマクロやVBEをの質問を回答をしている人も、自力でシステムを組んでいる人も、過去にシステム関連の職場(ある程度の長期の訓練の場)にいたのではないかと思う。それぐらいプログラムは生易しくない。例外的に習得が早い人も居るようだが、知識の組み立て方・整理の仕方、文章の書き方、発想の仕方が天才的な人だと思う。
エクセルVBAにメソッド・プロパティというものがあり、VBなどプログラムのベテランでも、付け足して知らなければならないものが、解説書約1000ページ分も有る。
    • good
    • 0
この回答へのお礼

ご回答いただきまして、どうもありがとうございました。
なんだか甘い質問をしてしまったようで、大変失礼致しました。

エクセルを使いたかった理由は、他の便利なツールを知らないということと、既存の書式の大半がエクセルで、少しワード、という感じなので、エクセルで統一できたら、と思ったからです。

色々と想定して書いて下さってありがとうございました。ご説明不足で申し訳なかったのですが、小さな個人事務所に最近入りまして、基本的に事務職の私と上司しか使わないのですが、現在のやり方は、顧客ごとにフォルダがあって、さらにそのフォルダを開くとたくさんのエクセルとワードが並んでいて、そのエクセルには全て顧客名を入力する為、毎回、毎回誰かの分を加工して、毎回名前を変えて…としているので、Aという分類の顧客に必要な書式を1つのエクセルファイルに統合し、例えばそのファイルのシート1に、一度名前を入力すれば、シート2、シート3と飛ばせるので、何度も名前を入力したり、直したりする必要がなくなるな、と思ったのです。

もうちょっと具体例で書きますと、Aと分類された顧客に必要な書式が(1)請求書(2)計算書(3)領収書、だとしたら、今は「あ」という名前の顧客フォルダの中に、「あ」請求書、「あ」計算書、「あ」領収書、というエクセルファイルが並んでいるのです。私が考えたのは、だったら、「あ」Aというエクセルファイルの中の、シート1に基本データを入力し、シート2に請求書、シート3に計算書、シート4に領収書という形にすれば、顧客名の入力はシート1だけで済む、と思った訳です。

さらに、顧客の一覧がないので、顧客のデータを入力するファイルを別途作成し、そこからAと押したら、Aという書式のファイル(その中には、基本データシート、請求書シート、計算書シート、領収書シートがある)とうまくリンクしてくれたら、かなり楽になるな、と思ったのです。実際には分類Aに必要な書式が20ファイル近くあったりすると、私は1顧客ごとに20のファイルを加工し、20回もその顧客の名前を入力することになるので、現状を変えたいと思っているのです。

多少具体的に書いたつもりなのですが、まだわかりにくいですよね…すいません。。。まずは、今の自分の知識でできそうなやり方から実行していきたいと思います。どうもありがとうございました!

お礼日時:2009/05/24 21:52

VBA で出来ると思いますが、これから学ぶのであれば、VBA では無く アクセスや、ファイルメーカー等の、データベースを学ばれる事をお勧めします。



顧客データベースをイメージした場合、
入力フォームに必要事項を記載し、後は「あいうえお」順に並べ替えしたり、特定の人を検索、抽出し郵送用のラベルを作成する、メールを送信する等をイメージしているのであれば、エクセルでは無くデータベースの方が便利です。

もし、今イメージされいる事をエクセルで VBA を駆使して作成した場合、A ~ Z までのファイルが作成され、個々のファイルにシート頃に複数のユーザが記録されると思いますが、該当のユーザーはどのようにして探し出すのでしょうか?またエクセルのシートは無制限に作成出来る訳でありません、その点はどのようにクリアーしますか?

希望の回答ではありませんが、ご検討ください。
    • good
    • 0
この回答へのお礼

ご回答いただきまして、どうもありがとうございました。

皆さまからもご回答いただいたように、エクセルではなく、アクセスなどに挑戦した方が良さそうですね。

ごめんなさい。後半の回答部分がいまいち理解できず、うまくご説明できないのですが、1つのファイルに1顧客のデータのみでOKで、シートも最大でも20シートくらいあれば大丈夫な感じなので、最初のご回答者様にご説明いただいたような内容で今は解決しようと思っています。でも、アドバイスをいただき、どうもありがとうございました。

E-mailを送ることはないのですが、1顧客の関連先の送付先が多い場合は宛名ラベルを使えると便利なので、そういった機能があるものを使った方が後々良さそうですね。どうもありがとうございました!

お礼日時:2009/05/24 21:31

> 実際こういったことが可能なのかどうか



可能です。
しかし、
> Aファイルは原本なので、“「あ」A”という名前の新しいファイルを作成できるようにしたい。
ということは、Aファイルを変更させたくないのでしょう?
ならば、
> Aのファイルのシート1に「あ」という情報が飛び、
などと無駄なことをせず、Aファイルを複製し、複製ファイルのシート1に「あ」と入力してから"「あ」A"という名前で保存するだけでいいのでは?
    • good
    • 0
この回答へのお礼

ご回答いただきまして、どうもありがとうございました。

今の私の知識ですと、仰る通りのやり方が1番すぐに実行できるものなので、そうなりそうです(^-^)

一応補足させて頂きますと、わざわざデータファイルから飛ばしたかった理由は、Aファイルに入力する「あ」という情報を顧客情報一覧として、データファイルに残しておきたかったからです。

上記のやり方でいくと、Aファイルにしか「あ」という情報は残らないので、データファイルで一覧管理するためには、データファイルにも「あ」という情報を入力しないといけないので、二度手間だなぁ、、と思ったのです。でも、今の私の知識ですと、とりあえずAファイルに「あ」と入力してから、それをコピーして、データファイルに貼り付ける、というのが1番実行しやすそうなので、当面はそうしようと思います。

どうもありがとうございました!

お礼日時:2009/05/24 21:20

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

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

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

Qマクロでシートタブ色の変更

例えば、A1に数字が入ればシートタブが青色に、A1とA2に数字が入ればシートタブが黄色に、
A1とA2とA3に数字が入ればシートタブが赤色に、このようにするにはどのように記述したら良いでしょうか、よろしくお願いいたします。

Aベストアンサー

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Range("A1:A3"), Target) Is Nothing Then
Worksheets("Sheet1").Tab.ColorIndex = -4142
If Range("A1") <> "" And Range("A2") <> "" And Range("A3") <> "" Then
Worksheets("Sheet1").Tab.ColorIndex = 3
ElseIf Range("A1") <> "" And Range("A2") <> "" Then
Worksheets("Sheet1").Tab.ColorIndex = 6
ElseIf Range("A1") <> "" Then
Worksheets("Sheet1").Tab.ColorIndex = 5
End If
End If
End Sub
これで良いのかな。
ーー
結構、初心者には勉強点があるように思う。
(1)シートイベントというものの勉強
(2)マクロの記録でタブの色を変えるコードを勉強する
また色を抹消するコードを勉強する。
(3)3つの場合の場合分け(条件の多いほうから聞く)
(4)A1:A3以外は素通りさせる方が良いかな(ntersectの利用。これはIFでORを使っても出来る)
数字かどうかのチェックを略している(IsNumericで、使って追加してください)
しかしこの質問のアイデアは珍奇で使えるのかな(今まで質問に出たこと無いような)。
Changeイベントを扱う難しさなどがある。上記コードでは多数例テストして無いので、出来るだけテストして見てください。

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Range("A1:A3"), Target) Is Nothing Then
Worksheets("Sheet1").Tab.ColorIndex = -4142
If Range("A1") <> "" And Range("A2") <> "" And Range("A3") <> "" Then
Worksheets("Sheet1").Tab.ColorIndex = 3
ElseIf Range("A1") <> "" And Range("A2") <> "" Then
Worksheets("Sheet1").Tab.ColorIndex = 6
ElseIf Range("A1") <> "" Then
Worksheets("Sheet1").Tab.ColorIndex = 5
End If
End I...続きを読む

QA1に数字の1を入力するとB1の値がA1に表示、A2に数字の2を入力するとB2の値がA2に表示

エクセル初心者です

セルのA1に数字の1を入力するとB1の値がA1に表示、A2に数字の2を入力するとB2の値がA2に表示されるようなものを作りたいのですが・・・
どなたかご教授お願いします

例えば、A1に1を入れるとB1の値"北海道"がA1に表示され、A2に2を入れるとB2の値"青森"がA2に表示といった感じでです

宜しくお願いいたします

Aベストアンサー

No3,5,6です。
補足要求をしましたが時間がないので、No6での以下の理解、

B4がROOT,C4が♭9,D4が9,E4がm3,F4がM3~M4がM7
置き換え対象はB6:W11の範囲

ということでいいのなら以下で出来ます。

1.シートのタブを右クリックし、コードの表示を選択
2.出てきたVBエディター(白い画面)に下記をコピペ

Private Sub Worksheet_Change(ByVal Target As Range)
Dim x
If Intersect(Target, Range("B6:W11")) Is Nothing Then Exit Sub
x = Target.Value
Application.EnableEvents = False
Target.Value = Range("A4").Offset(0, x)
Application.EnableEvents = True
End Sub

3.AltキーとF11キーを一緒に押してワークシートへもどります。

QofficeXP Excel シートタブの色変更が出来るタイプと出来ないタイプ??? 

自宅も会社もofficeXPなんですが、少し違うところがあります。

エクセルで、自宅のはシートのタブが色変更できます。
シートタブ上で右クリックから色を選べます。

でも、会社のは同じXPなのに、右クリックからこの機能が出てこないのです。
これってバージョンによるものなんですか?

それとも、法人向けはこの色変更の機能を抜き取っているんですか?

どなたかわかるかたいますか?
よろしくお願いします。

Aベストアンサー

こんにちは

バージョンの違いがあるのでは、バージョンは?
検索していると2002からだとか(未確認ですが)
http://www.relief.jp/itnote/archives/002047.php

では。

QExcelのVlookupについて質問です シート1 ▽ A B ⑴ ⑵ シート2 ▽ A B C

ExcelのVlookupについて質問です

シート1
▽ A B



シート2
▽ A B C D E F
⑴ 1 あ 4 か 7 さ
⑵ 2 い 5 き 8 し
⑶ 3 う 6 く 9 す

というふたつの表から検索したいのですが、何か方法はあるのでしょうか。
シート1のA⑴に「5」と打てばA⑵に「き」と、「7」と打てば「さ」と検索するようにしたいです。
列は2列でないと検索できないのでしょうか。
よろしくお願いします。

Aベストアンサー

こんにちは!

VLOOKUP関数ではないのですが、A2セルに
=IFERROR(INDEX(Sheet2!A1:Z100,SUMPRODUCT((Sheet2!A1:Z100=A1)*ROW(A1:A100)),SUMPRODUCT((Sheet2!A1:Z100=A1)*COLUMN(A1:Z1))+1),"")

どうしてもVLOOKUP関数でやりたい場合は
=IFERROR(VLOOKUP(A1,OFFSET(Sheet2!A1:B100,,SUMPRODUCT((Sheet2!A1:Z100=A1)*COLUMN(A1:Z1))-1),2,0),"")

といった感じでしょうかね。

※ A1~Z100セルまでを対象としています。m(_ _)m

Q[EXCELマクロ] シートタブに自動で色をつけるには?

シートが、1日~31日まであり、シート内は31枚とも全て同じで、
例えば、セルA1 に、日付(平成19年7月18日と表示)があったとき、
その日付を参照して、土曜日なら青色、日曜日なら赤色、というふうに
自動で31枚全てのタブの色を変更してくれるようにしたいのですが、
可能でしょうか?
また可能であれば、どのようにマクロを組めばいいでしょうか?

Excel2003を使用しています。
よろしくお願い致します。

Aベストアンサー

全シートのセルA1に日付が入っている場合でのサンプル。

Sub test()
  Dim sh As Worksheet
  Dim hi As Integer
For Each sh In Worksheets
  With sh
     Select Case Weekday(.Range("A1").Value, vbMonday)
         Case 6
         .Tab.ColorIndex = 41
         Case 7
         .Tab.ColorIndex = 3
         Case Else
         .Tab.ColorIndex = xlColorIndexNone
     End Select
 End With
Next
End Sub
日付以外が入っている場合は、修正が必要かもしれません。
ご参考程度として下さい。

Q【質問】ブック名AからシートをブックBへ移動する時、ブックAにシートを残してブックBにもコピーするには?

こんにちは、みなさん!!

【質問】ブックAのシートを、ブックBに移動する時に、ブックAにも
同シートを残しておき、さらに、ブックBに同シートを移動する事は
できますか?ドラック&ドロップでは、ブックAにシートはなくなり、
完全に、ブックBに移動されてしまいます。

ご存知の方いらっしゃいましたらよろしくお願いします。

Aベストアンサー

はじめまして

ブックAの該当シートタブを右クリック、移動またはコピーを選択、移動先ブックをブックBに、コピーを作成するにチェックを入れてOK。
これでいけます。

また、ドラッグアンドドロップでするなら、「CTRL」キーを押しながらやってみてください。
移動ではなくコピーになります。

的外れでしたらごめんなさい。

Q該当月のみにシートタブに自動で色

いつもお世話になります。
Win7 Excell2010 てす。

記入 顧客名簿 1 ~ 12  とシートがあります。

1)記入、顧客名簿 のシートには色付けしています。
2)1 ~ 12 は半角文字です。 (1月~12月を意味しています)

例えば、
A1 のセルに 8 と 今月は 8月ですから 8のシートタブに自動的色付けさせたいのですが可能でしょうか。
いろんなサイトで検索しましたが見つけることができませんてした。
VBAの記述と思いますがもし可能ならご指導いただけませんか。

Aベストアンサー

例として。

Dim sh As Worksheet
    For Each sh In Worksheets
        If sh.Name = Month(Now) Then
            sh.Tab.Color = 255    ' 赤
        Else
            sh.Tab.ColorIndex = xlNone
        End If
    Next

これを「開く時」イベントに書いておくと、
おそらくお望みの
・該当月の見出しは「赤」
・それ以外の見出しは「無色」
に出来ます。

VBAの使い方は別途お調べくださいませ。

QExcelでシート2のデータ(A1からA10)をシート1(A10からA1)に反映させるには・・・。

いつもお世話になっています(_ _)
シート2のデータ(A1からA10)をシート1の(A10からA1)(シート2は上からに対してシート1は下から上へ)データを反映(=のかたちでシート2と同じ数字がシート1のも入るように)したいのですが・・・。

わかりにくいですね・・・。
もし補足の要求があればすぐに書き込みますのでよろしくお願いします。

Aベストアンサー

こんにちは

コピーですむような者ですね。

=INDEX(Sheet2!$A$1:$A$10,11-ROW(),1)

をSheet1のA1セルからA10セルにコピーペーストして見てください。
もし、Sheet2の値が空白だった場合、Sheet1も空白にするのであれば、

=IF(INDEX(Sheet2!$A$1:$A$10,11-ROW(),1)="","",INDEX(Sheet2!$A$1:$A$10,11-ROW(),1))

で良いですね。

QEXCELシートのタブの色

EXCELでシート(初期設定でsheet1とかsheet2とか)の色が変えられたと思ったんですけどやり方を忘れてしまいました。
教えてくださ~い!

Aベストアンサー

こんにちは。maruru01です。

一応、2000以前での方法を載せてあるページです。
裏技的なので、おすすめしませんが。

http://xcelfiles.homestead.com/Excel01_J.html#anchor_14133

参考URL:http://xcelfiles.homestead.com/Excel01_J.html#anchor_14133

Qエクセルについてなのですが、 例えば指定の範囲内に A B B C A B C A B B C D

エクセルについてなのですが、

例えば指定の範囲内に
A B B C A B C A B B C D B D
と並んだセルからAとDの合計を出したい時はどのようにすればいいのですか?

COUNTIFSだったら複数条件を満たした数を表示するので希望とは違います。
希望はA or Dの合計を出したいのです。

Aベストアンサー

こんにちは!

COUNTIFS関数はAND条件になりますので、今回の質問には適しません。

=COUNTIF(範囲,"A")+COUNTIF(範囲,"D")
のように「A」のセル数と「D」のセル数をコツコツと足し算するのが
間違いないと思います。m(_ _)m


人気Q&Aランキング

おすすめ情報