[[20041227134317]] 『EXCELの隠しSHEETをACCESSへインポート』(あおくま) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『EXCELの隠しSHEETをACCESSへインポート』(あおくま)

ちょっとエクセルのお話とは、異なってくるかと思いますが、
もしお分かりの方がいらっしゃればご教授願います。

いま、エクセルのファイルで、隠してあるSHEETがあるのですが、
これをACCESSでインポートする方法はありますか?

ACCESS側で、決まった名前のSHEETを一括でインポートする方法は
できたのですが、そのSHEETが隠してある場合には、ACCESS上で
そのシートをみつけられないみたいなのです。

ちなみにエクセルのファイルは、全部で、250ほどあり、全ての
EXCELファイルを開いてSHEETを表示して、保存してとするのが
ちょっと面倒だったもので・・・

よろしくお願いします。


 >全部で、250ほどあり、全てのEXCELファイルを開いてSHEETを表示して、
 >保存してとするのがちょっと面倒だったもので・・・
 マクロを作って、この作業を自動化すれば、
 待っているだけで終わるので面倒なことはないと思います。
  (INA)

 1. エクスプローラを開きツール→フォルダオプション→表示を選ぶ。
 2. 詳細設定→ファイルとフォルダの表示→デフォルトだと
 「隠しファイル及び隠しフォルダを表示しない」にチェックがついているのではずし、 
 「全てのファイルを表示する」にチェックをつける。
 3. Accessでインポートし終わったら、必ず元のとおり
 「隠しファイル及び隠しフォルダを表示しない」にチェックしなおすことを忘れずに。

 バージョン2002では動作確認できましたがどうでしょうか?
(みかん)

 隠しファイルではなくエクセルブック内の隠しシートのことかと思われますが(・・)?
 (ひよっぴ)

 「全てのファイルを表示する」にすると、全てのシートが表示されますよ。
 おやりになってみましたか?
(みかん) 

 やってはみましたが、2000ではだめのようです。。。
 私のやり方が悪いのかもしれませんが
 (ひよっぴ)

 こちらでもできませんでした。
 Windowsの設定が、ブックを開いてもいないExcelファイルに
 影響するとは思えませんが・・・

   (INA) @Excel2000

 こちらはWin XP Excel2002 & Access2002で非表示のシートは見えないのですが・・・
    (Hatch)


 やはり勘違いでしょう。
  (INA)

 勘違いというより説明が悪かったようです。
 インポートするブックは開いてないとダメなんです。
(みかん)

 ブックを開いていたら、非表示のシートも見えました。  (Hatch)

 ブックを開いていれば、
 「隠しファイル及び隠しフォルダを表示しない」にチェック入ってても見えるようですね。。。
 エクセル2000(ひよっぴ)

 INAさん、
 >マクロを作って、この作業を自動化すれば、
 と仰いましたので、記録してみると、
Sub Macro1()
    Sheets("Sheet2").Visible = True
End Sub
 こうなりましたが、Sheet2を全部のシートにするには""の中をどう変更したらいいのでしょうか。
 (ひよっぴ)

 Excel2000 Access2000で自分も確認してみました。
結果、
「全てのファイルを表示」「隠しファイル及び隠しフォルダを表示しない」
どちらの状態であっても、
インポート対象となるExcelブックを開いてさえいれば
Access側でその隠しシートを選択する事が可能な状態となるようです。

 >EXCELファイルを開いてSHEETを表示して、保存してとするのが
 >ちょっと面倒だったもので・・・
この操作のうち、保存する必要は無くなったって感じですかね。
対象ブック開いたままにしてインポート処理をしなければならないという手間はあるけども。
 
衝突追記。
 >こうなりましたが、Sheet2を全部のシートにするには""の中をどう変更したらいいのでしょうか。
Sub a()
    Dim s As Worksheet
    For Each s In Worksheets
        s.Visible = xlSheetVisible
    Next
End Sub
あるいは
Sub b()
    Dim i As Integer
    For i = 1 To Worksheets.Count
        Worksheets(i).Visible = xlSheetVisible
    Next
End Sub
もう一つ
Sub c()
    Dim i As Integer
    For i = 1 To Sheets.Count
        Sheets(i).Visible = xlSheetVisible
    Next
End Sub
無条件に全てのシートを見えるようにします。
WorksheetsとSheetsって何が違うのかな…
 
自己解決追記。
Sheetsはグラフシートを含む、Worksheetsは通常(?)のシートのみ、か。
参考:シート数を数える(Countプロパティ)
http://www2.tokai.or.jp/mother/newhtm2/exvba/ev04/ev045.htm
(ご近所PG)

 もういらないでしょうけど・・・
 マクロの件は、250のブックが、1つのフォルダにあるのであれば、
 Do〜Loopのループ処理を用いて、そのフォルダ内のブック名をdir関数で取得しながら 
 ブックを開く→シートを表示→ブックを保存
 と繰り返して処理すれば可能です。

  (INA)

 ご近所PGさん、INAさん、有難うございました。
 全シートを選択するとなると途端に難しくなるんですね。。。
 有難うございましたm(__)m
 (ひよっぴ)

 すみません、一つだけ教えて下さい。
 s.Visible = xlSheetVisible を s.Visible = True に変えても大丈夫なようなのですが、
 何かわけがあってTrue以外をお使いなのでしょうか。
 (ひよっぴ)

 ひよっぴさんへ。
VBEの画面でシートのプロパティを見ていただくと分かるかと思いますが
(もしプロパティが表示されていなければ「表示→プロパティウィンドウ」で出ます)
シートに対するVisibleの状態は、TrueかFalseかの二通りではなく、三通りあります。
 -1 - xlSheetVisible 
  0 - xlSheetHidden 
  2 - xlSheetVeryHidden 
私はこれにしたがって設定しました。詳しくはヘルプ参照。

 とはいえ、VisibleはTrueかFalseかという二通りが一般。
Trueの持つ値は-1。
Falseの持つ値は0。
なので、
Visible = True
Visible = False
という書き方との互換性を得るために、
 -1 - xlSheetVisible (True = -1)
  0 - xlSheetHidden  (False = 0)
という定数値をExcel設計者は選んだのでしょう。
(ご近所PG)

 ご近所PGさん、有難うございました!
 xlSheetVeryHidden は、メニューから「再表示」自体がグレーアウトするんですね。
 すごいですね。。。
 プロパティの見方も教えて下さり有難うございます。
 色々覗いてみようと思います。
 (ひよっぴ)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.