プロが教える店舗&オフィスのセキュリティ対策術

一定のエクセル帳票があります。
それぞれのセルに項目があり、

納品書
A列 B列
1 納品日 2013/5/10
2 品目 カップラーメン
3 価格 128円
4 数量 1,000個
5 合計 128,000
6 賞味期限 2014/4/1

など・・・
これが1枚のExcel帳票として複数枚あるとします。
Excelを開くたびにマクロを実行し、一覧表を作成します。

納品日 品目 価格 数量 合計 賞味期限
xxxxx xxxx xxxxx xxxx xxxx xxxxxxx
yyyy yyyy yyyy yyy yyyy yyyyyyy

帳票を読み込んで自動的にこの一覧Excelを作るようにしたいのですが、
どのようにしたらよいのか、マクロ初心者のため全くわからなく困っています。
この一覧をDBと見立ててSQLで書き込んでいけばよいと感じているのですが、
これもどうすればいいか、途方に暮れています。

わかる人であれば、1時間もあればできるものだと思うのですが、
なかなか手を付けられず悩んでいます。

簡単に手ほどき、サンプルなどを教えていただけると嬉しいです。

よろしくお願いします。

A 回答 (4件)

>Excelを開くたびにマクロを実行し、一覧表を作成します。



それがヤリタイ事なのでしたら、次の2つをとっかかりにします。
1)Auto_Openマクロ、若しくはWorkbook_Openイベントプロシジャを使い、ブックを開いたときに自動起動させる
2)「既に収集済み」の伝票シートと「未収集シート(前回ブックを開いたのちに新たに追加した伝票シート)」を区別する方策を考える


準備:
伝票シートを束ね、さらに一枚「一覧表」シートを添えた一冊のブックを準備する

手順:
ALT+F11を押す
挿入メニューから標準モジュールを挿入する
現れたシートに下記をコピー貼り付ける

sub Auto_Open()
 dim w as worksheet

 for each w in worksheets
  if w.name <> "一覧表" then
  if w.range("A10") <> "済" then
   worksheets("一覧表").range("A65536").end(xlup).offset(1).resize(1, 6).value _
    = application.transpose(w.range("B1:B6").value)
   w.range("A10") = "済"
  end if
  end if
 next
end sub

ファイルメニューから終了してエクセルに戻る
ブックを保存し、閉じて、開きなおす


●具体的な転記マクロ、あるいは「記入済み」の識別方法などについては、実際のエクセルに一番適した方策をご自分で考えてマクロにしてください。
    • good
    • 0
この回答へのお礼

keithin さん、
ご返信が遅れまして、申し訳ありません。
具体的なソースの提示、ありがとうございます。
大変参考になりました。
また、SQLで書き込まなければいけないところが難しかったのですが、結局SQLを使用せず、書き込むことにしました。
ありがとうございました。
さっそくの回答、感謝しております。

お礼日時:2013/05/30 09:01

手ほどきということで


納品書のシートを Sheet3にすべてを貼り付けます。

Sheet1に1行目にでも

納品日 品目 価格 数量 合計 賞味期限
の項目を準備します。

以下のマクロを実行します。
Sub ボタン1_Click()
GYOU = Range("A" & Rows.Count).End(xlUp).Row + 1
Range("A" & GYOU).Value = Sheets("sheet3").Range("B1").Value
Range("B" & GYOU).Value = Sheets("sheet3").Range("B2").Value
Range("C" & GYOU).Value = Sheets("sheet3").Range("B3").Value
Range("D" & GYOU).Value = Sheets("sheet3").Range("B4").Value
Range("E" & GYOU).Value = Sheets("sheet3").Range("B5").Value
Range("F" & GYOU).Value = Sheets("sheet3").Range("B6").Value
End Sub

何をしているのか、ご理解して頂けるでしょうか。
    • good
    • 0
この回答へのお礼

hallo-2007 さん、
返信、遅れましてすみません。
親切な回答ありがとうございました。
おかげさまで、皆様のお力もあってなんとか対応できました。
ありがとうゴアいます。
また、具体的なソースの提示、ありがとうございます。初心者の私にとっては大変参考になりました。
重ねて、御礼申し上げます。

お礼日時:2013/05/30 09:03

DBやらSQLやら難しいことはわかりませんが、


肝心なところがスッポリ抜けていることだけはわかります。


> 1枚のExcel帳票として複数枚ある
同一のブックの中に「複数のシートが」あるということでしょうか。
同一のフォルダの中に「複数のブックが」あるということでしょうか。
仮に後者の場合、各ブックのシート数・シート名は同一でしょうか。
また、必要無いシートが混ざっていたりしないでしょうか。
それとも、複数のフォルダから複数のブックを読み込まなきゃならないのでしょうか。

> 一覧表を作成します
どこに作ったら良いでしょう。
「帳票(?)シート」が羅列されているブックに「一覧表」シートを付加したら良いでしょうか。
それとも、新規ブックを「一覧表」として作成したら良いのでしょうか。

> Excelを開くたびにマクロを実行し
エクセルをのものを立ち上げた時(新規ブックを作る時などにも)、
必ずこのマクロが動くようにしたいと言うことでしょうか。
それとも、特定のブックを読み込んだ時に限定したいのでしょうか。

などなど、組むに当たって不十分な情報だらけです。


よって一般論として、手ほどきと言うか考え方を。

エクセルには「マクロの記録」と言う機能があります。
質問文中のサンプルデータを拝見する限り、
「縦に並んでいる情報を横に並べ替える」だけのように見えます。
つまり、「マクロの記録」で
・範囲を指定
・コピー
・行列を入れ替えて貼り付け
以上の動作を記録し、アレンジしていけばよろしいのではないか、と思われます。

それが出来たらあとは「質問文中に無い処理条件」を加味し、
マクロを仕上げていけば出来上がります。
    • good
    • 2
この回答へのお礼

tsubuyuki さん、
返信が遅れまして申し訳ありません。
おかげさまで、回答いただいた皆様のソースをベースとして、自分でも勉強しながらなんとか対応できました。
マクロの記録は、認識しておりましたが、そこからの加工がよくわかららなかったことと、そして、SQLを利用しなければいけないことが条件としてあり、苦戦しました。
おかげさまで、皆様の助言を参考にして、なんとかたどり着くことができました。
ありがとうございます。

お礼日時:2013/05/30 08:59

帳票や一覧というのが、Excelの何に該当するのかわかりません。



Excel自体は、xlsやxlsxの拡張子のファイルなどを扱うアプリケーションです。
Excelを開くとは、ファイルを開くのか、シートを選択するのか、どちらにしても具体的にどのようなものなのですか?
Excelを開くではなく、Excelで~を開く
という認識に変えてください。

Excelファイルは
データが保存されているもののことで、
ブックとも言います。
ブックの中にシートがあります。
シートの中にセルがあります。

質問の内容がそれぞれ上記の関係でどうなっているのかわかりません。
それがわからなければ、サンプルはもちろん、ヒントも出せませんので、

どのファイルのどのシートのどのセルか?

わかるように、ご説明下さい。

具体的には1枚というのが、
ファイルなのかシートなのかわかりません。

1ファイルに1シートで複数枚なら複数ファイルになりますが、
1ファイルに複数シートなら、1ファイルということになります。
    • good
    • 0
この回答へのお礼

kamikami30さん、
返信が遅れまして申し訳ありません。
おかげさまで、回答いただいた皆様のソースをベースとして、自分でも勉強しながらなんとか対応できました。
質問に対して迅速な回答ありがとうございます。
助かりました。
ありがとうございます。

お礼日時:2013/05/30 08:58

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