Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10245 / 13646 ツリー ←次へ | 前へ→

【22914】不特定シートからの情報の読込 あさひな 05/3/7(月) 13:45 質問[未読]
【22923】Re:不特定シートからの情報の読込 ichinose 05/3/7(月) 17:50 発言[未読]
【22924】Re:不特定シートからの情報の読込 G-Luck 05/3/7(月) 17:55 発言[未読]
【22944】ありがとうございました あさひな 05/3/8(火) 13:55 お礼[未読]

【22914】不特定シートからの情報の読込
質問  あさひな  - 05/3/7(月) 13:45 -

引用なし
パスワード
   はじめまして、あさひな と申します。

早速質問です。
別ファイルのExcelから、シートに書かれている情報を読み込み、
書かれている情報を元に別ファイルを吐き出すツールを、
ExcelのVBAで作成する事になりましたが、いくつか問題点があります。
その情報はシート毎に種類が違い、
また、その情報のシートが幾づつあるのか分からない状態です。
その為シートのIndexやシート名では、
どんな種類の情報か書かれているか分りません。

例:
シート1 : A情報
シート2 : A情報
シート3 : B情報
シート4 : C情報
シート5 : C情報
 ※シート名、インデックスからは情報の種類が分からない
 ※種類毎の情報が必ずあるとは限らない
 ※情報のシートが幾つあるか分からない

シートのプロパティ情報に、情報の種類を持たせる方法がありますでしょうか。
それとも各シートのn列n行目に情報の種類を記入してもらい、
それを元に判断するしかないのでしょうか。

もし、良い方法をご存知の方がいらしましたら、
ご教授お願い出来ませんでしょうか。
よろしくお願い致します。

【22923】Re:不特定シートからの情報の読込
発言  ichinose  - 05/3/7(月) 17:50 -

引用なし
パスワード
   ▼あさひな さん:
こんにちは。


>はじめまして、あさひな と申します。
>
>早速質問です。
>別ファイルのExcelから、シートに書かれている情報を読み込み、
>書かれている情報を元に別ファイルを吐き出すツールを、
>ExcelのVBAで作成する事になりましたが、いくつか問題点があります。
>その情報はシート毎に種類が違い、
>また、その情報のシートが幾づつあるのか分からない状態です。
>その為シートのIndexやシート名では、
>どんな種類の情報か書かれているか分りません。
>
>例:
> シート1 : A情報
> シート2 : A情報
> シート3 : B情報
> シート4 : C情報
> シート5 : C情報
> ※シート名、インデックスからは情報の種類が分からない
> ※種類毎の情報が必ずあるとは限らない
> ※情報のシートが幾つあるか分からない
>

>それとも各シートのn列n行目に情報の種類を記入してもらい、
>それを元に判断するしかないのでしょうか。
↑これで不都合がないようなら、これでよいと思いますが・・・。
名前の定義を利用すると言うのはいかがでしょうか?
例えば、
'======================================================
Sub test()
  Dim sht As Worksheet
  For Each sht In ThisWorkbook.Worksheets
   With sht
    .Names.Add .Name, "abc" & .Index
    End With
   Next
End Sub

として情報を名前の定義を使用して登録します。

読込は、
'===============================
Sub test2()
  Dim sht As Worksheet
  For Each sht In ThisWorkbook.Worksheets
   With sht
    MsgBox Split(.Names(.Name).Value, """")(1)
    End With
   Next
End Sub

とこんな方法です。

一例ですが、ご検討ください。

【22924】Re:不特定シートからの情報の読込
発言  G-Luck  - 05/3/7(月) 17:55 -

引用なし
パスワード
   ▼あさひな さん:

直接的回答ではありませんが、いくつそれらしいことが実現できる方法を考えてみました。

1、ひとつのシートを非表示にしてシートの状態を記しておく。
問題点、シートのコピー、削除、移動等の時にマクロなどでデータを修正しなければいけない。

2、各シートに
Public Function myType() As String
  Const myTypeName As String = "A"
  myType = myTypeName
End Function
と書いておく。
問題点、マクロの有効無効のダイアログが出る。

3、セルのコメントを使う
buf = Range("A1").Comment.Text
で取得。
問題点、セルに赤三角マークが付く

4、セルに記入し、セルの色と文字色とを同じにして見えないようにする。
問題点、セルの削除等の影響を受ける。

5、Excelの定義を利用する。
Sheet1!myType = "A"
を定義して、
buf = Workbooks(XXX).Worksheets("Sheet1").Names("myType")
で取得する。
問題点、定義のところに残って、利用者に見えてしまう。

6、Labelを貼り付けVisibleをFalseにしておく。
問題点、他のコントロールを貼り付けた時、注意が必要。

それぞれにデメリットがありますが、許せるものはありませんでしょうか?

【22944】ありがとうございました
お礼  あさひな  - 05/3/8(火) 13:55 -

引用なし
パスワード
   ichinoseさま、G-Luckさま
幾つかの案を提供して頂き、ありがとうございます。
早速教えて頂いた案を試しながら、検討してみたいと思います。
他に方法が思いつきませんでしたので、大変助かりました。
ひとます、この質問は閉じます。

改めて、ありがとうございました。m(_ _)m

10245 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free