[リストへもどる]
一括表示

投稿時間:2004/02/20(Fri) 02:34
投稿者名:寝タロ
Eメール:
URL :
タイトル:
Excelファイルのシート名及びシート数を高速に取得
Excel・Word関係 の
DAOを使ってExcelファイルのシート名及びシート数を高速に取得
を実行したのですが、
ほとんどのファイルは、シート名、シート数共に取得できるのですが、
ほんの一部のファイルですが、シート名、シート数共に取得出来ない
状態のファイルがあります。

取得出来ないファイルのマクロを見てみたのですが、
取得出来るファイルとの違いが判りません。
可能性として、どんな事が考えられるでしょうか?


参照設定でMicrosoft DAO 3.6 Object Library にチェックはしてます。

環境はWin98、Me、XP
CPUはPen2、Pen3、セレロン
今現状で、周りにあるパソコンでは(10台位)、
取得出来ません。

宜しくお願いします。

投稿時間:2004/02/20(Fri) 09:16
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: Excelファイルのシート名及びシート数を高速に取得
もう少し状況を整理して頂かないと解らないのですが?
(取得できる場合と出来ない場合にに分けて、ExcelやOS等のバージョンも含めて)
取得できないファイルにしても、まったく同じファイルなのかどうか(FDに入れた
状態で同じファイルで試すとか)
又、エラー等が発生しているのか、いないのか?

同じ機械で取得できるファイルと出来ないファイルがあるならファイルに何らかの
原因(要因)があるはずですから、シートを順番に削除するなりして試して見るとか
環境面の違いを詳しく調べるとか
(VBのランタイム・Excelの有無・バージョン・DAOのバージョン等)

投稿時間:2004/02/20(Fri) 21:28
投稿者名:寝タロ
Eメール:
URL :
タイトル:
Re^2: Excelファイルのシート名及びシート数を高速に取得
取得出来るファイルは、

-------------------------------------------------
Excel2000を使って作成したものです。
OSは、Win98SE、Me、XP。全てのOSで取得できます。
シート数は10枚程度でマクロは記載されていません。

私の廻りの環境では全てのパソコンで
シート数、シート名共に取得出来ます。

取得出来ないファイルとは別のファイルですが、
似通っているファイル(シート数、シート名)と
私は思っています。
-------------------------------------------------


取得出来ないファイルは、

-------------------------------------------------
以下の事柄は、すべて同一ファイルの事です。


ファイルはExcel2000を使って作成したものです。
OSは、Win98SE、Me、XP。全てのOSで取得は出来ません。
シート数は10枚程度でマクロは記載されていません。

私の廻りの環境では全てのパソコンで
シート数、シート名共に取得出来ません。
-------------------------------------------------



参照設定でMicrosoft DAO 3.6 Object Library にチェックはしてます。
バージョンは 3.6で間違いありません。

花ちゃんさんの指摘どうり、
FDに入れた状態で同じファイルで試してみたのですが、
シート数、シート名共に取得出来ません。

エラー等が発生しているのは確かで、
デバックモードで追ってみると、

Set DB = OpenDatabase(xlFileName, True, True, "Excel 8.0;")

の行で、エラーが出ています。

ファイルのシートを順番に削除して試してみたのですが
最後の1シートになった状態でも、
シート数、シート名共に取得出来ません。
反対に先程残した、最後の1シートを削除した状態でも、
シート数、シート名共に取得出来ませんでした。


他のファイルとの違いといえば一番最初に作成したという位で、

2回目に作成したファイルは、その次の日に作成して、
シート数、シート名共に取得出来ます。

本当にそのファイルの何が違うのか判りません。


どうして、そこまでそのファイルにこだわるかは、
今、そのファイルが、業務の中心になっているので
内部のリンクが複雑に重なり同じファイルを
もう一度作成するのは無理に近いからです。


宜しくお願いします。

投稿時間:2004/02/20(Fri) 22:07
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: Excelファイルのシート名及びシート数を高速に取得
> Set DB = OpenDatabase(xlFileName, True, True, "Excel 8.0;")
>
> の行で、エラーが出ています。

だったら、ファイルのパスが間違っているか、Excel形式以外のファイルとか
ファイル事態が認識できていないのじゃないでしょうか?
このエラーを改善しないことには取得はできないかと思います。
エラーメッセージ等を調べてみて下さい。

投稿時間:2004/02/21(Sat) 00:30
投稿者名:寝タロ
Eメール:
URL :
タイトル:
Re^4: Excelファイルのシート名及びシート数を高速に取得
> エラーメッセージ等を調べてみて下さい。

----------------------------------------------
実行時エラー '3274'
外部テーブルのフォーマットが正しくありません。
----------------------------------------------

というエラーメッセージが出ていました。

MSDNで調べたのですが、

DAO
外部テーブルのオープン
外部テーブルの作成

のあたりを読んでいたのですが、
私の知識ではよく理解出来ないので、
諦め、

Googleで調べたところ、アクセス関係ばかりヒットしてきます。
一度読み進めてみたのですが、アクセスは使えないので、あまり理解出来ませんでした。
エクセルのヘルプも調べてみたのですが、ヒットしてこなかったので、
諦めました。

保存方法の仕方は、2回目以降の保存方法と
何ら変わりの無い保存方法をしたと思うのですが、



>Excel形式以外のファイルとか

Excel形式のファイルです。
そのファイルを新たに名前を付けて保存しても(Microsoft Excel ブック(*.xls))
やはり、認識されませんでした。


ファイルの外部テーブルが認識できていない
というのは判ったのですが、
このファイルを認識させる方法は、
どの様にしたらよいのでしょうか?

宜しくお願いします。

投稿時間:2004/02/21(Sat) 12:15
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^5: Excelファイルのシート名及びシート数を高速に取得
> ----------------------------------------------
> 実行時エラー '3274'
> 外部テーブルのフォーマットが正しくありません。
> ----------------------------------------------

そのExcelファイルを新規ブックにコピーして作り直してみてはどうでしょう。
内部的に壊れているのではないでしょうか?
今まで、Excelが開放されない原因でもよくそのような事がありました。
(Excel上では見られて問題がないようで実は内部的に壊れている)

投稿時間:2004/02/21(Sat) 21:37
投稿者名:寝タロ
Eメール:
URL :
タイトル:
Re^6: Excelファイルのシート名及びシート数を高速に取得
>そのExcelファイルを新規ブックにコピーして作り直してみてはどうでしょう。

少し前に、新規ブックにコピーして作り直してみたのですが、
同じ様に認識されませんでした。

今回、花ちゃんさんの指摘で、又、新たに
新規ブックにコピーして作り直してみたのですが、
同じ結果で、認識されませんでした。

その後、その新規ブックにコピーして作り直したファイルの
シートを全て消し(最後の1枚のシートを消せないので)
更に、新たに新規ブックを作りそのファイルからシートをコピーして、
残っていた最後の1枚のシートを消し

最終的に最初の認識出来ないファイルの
シートも無し、
本体も新たに作ったものを保存したファイルも
認識されませんでした。

でも、私の環境が悪い訳ではなく、
認識出来るファイルは、認識出来ます。

その後、エクセルを開き新規保存したものは、
認識出来ました。

全く原因が判らなくなりました。

UP板があれば、UPして、
見て頂きたい位です。

投稿時間:2004/02/24(Tue) 21:38
投稿者名:寝タロ
Eメール:
URL :
タイトル:
Re^7: Excelファイルのシート名及びシート数を高速に取得
解決しました。

結局、シートをコピーしても無理だったので
シート全体を選択し、コピー

新規ファイルのシートに、貼り付けで、
ファイルは認識できる様になりました。


> ----------------------------------------------
> 実行時エラー '3274'
> 外部テーブルのフォーマットが正しくありません。
> ----------------------------------------------
は、何とか解決。

リンクで大分、骨が折れましたけど。