データベース変換~dhenkan2

以前データベースの入力支援として、dhenkanというVBコードを紹介しました。

「入力」と「データ」というシートを作り、「入力」シート側で入力したデータを「データ」シートへ蓄積していくというVBコードでした。

これは、「入力」と「データ」というシートにしか反応しないプログラムなので、単純明快なのですが、同じブックに目的の異なる複数のデータベースを作成したいという場合、「入力」と「データ」というシートだけでは、対応できません。

そこで、データを入力するシートと出力(蓄積)するシートを指定し、その指定されたシート間で反応するように改変しました。

以下がそのVBコードです。

Sub dhenkan2()
'
' データベース変換
'
Dim nyu As Integer, db As Integer
Dim wk1 As String
Dim wk2 As String

On Error GoTo Err_wkname

wk1 = Worksheets("コントロール").Range("b1")
wk2 = Worksheets("コントロール").Range("b2")

If Not wk1 = ActiveSheet.Name Then

MsgBox "入力シートに指定したシートではありません!"

Exit Sub

End If

nyu = Worksheets(wk1).Range("a1").CurrentRegion.Rows.Count
db = Worksheets(wk2).Range("a1 ").CurrentRegion.Rows.Count

For Count = 1 To nyu

Worksheets(wk2).Cells(db + 1, Count) = Worksheets(wk1).Cells(Count, 2)

Next

For Count = 1 To nyu

If Not Worksheets(wk1).Cells(Count, 2).HasFormula Then

Worksheets(wk1).Cells(Count, 2).ClearContents

End If

Next

Worksheets(wk1).Range("b1").Select

Exit Sub

Err_wkname:

MsgBox "存在しないシート名を指定しました。"

End Sub


「dehenakn」からの流れなので「dhenkan2」というプログラム名になってます。

コードの貼り付け方や使い方はほとんど同じです。(データベース変換①~コードを貼り付ける  ②dhenkanマクロの使い方を参照)

今度は「入力」「データ」シートにこだわる必要はなくなりました。

代わりにシートを設定する「コントロール」というシートを作成します。



この「コントロール」シートのセル「B1」にデータを入力するシート名、「B2」に出力(蓄積)するシートと名を設定します。セル「A1」「A2」には適当に項目名を付けてください。私はわかりやすく「入力」と「出力」と付けました。

たとえば、入力側「顧客入力」、出力側「顧客データ」としたい場合は・・・・・・



このように「コントロール」シートの「入力」と「出力」にシート名を入力します。



そうすると、ここで指定したシート間でのみデータが動きます。

別なシート間でのデータ入力する場合は・・・・・・



このように変更します。





1つのブックに目的の異なるデータベースをどんどん作成していけます。


「入力」と「出力」に指定するシート名を間違うと大変なことになるので慎重に。

もちろん、存在しない「シート」を指定するとエラーがでます。安心してください。




よかったら使ってみてください。

0 件のコメント: