| 内容 | No159681.エクセルインポート時の空レコードの処理
タイトル
: エクセルインポート時の空レコードの処理
記事No
: 159681
投稿日
: 2010/06/13(Sun) 22:59
投稿者
: ステラ
OS:vista
Access Version:2007
いつもお世話になります。
VBAでエクセルファイルからインポートして表Aを作っています。
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "表A", FileName, True
その後、フィールドを検査するループ処理をしていますが、どうやらエクセルファイルを処理する際に、行削除でなく値削除でシートに表示されるレコードを削除した場合、ファイル表Aに空白行がインポートされていしまうことに気付きました。
ループは空白行に来ると、エラー94、NULLの使い方が不正ですと出てしまいます。
一番は、インポートするときにどのような表整理方法で整理しても、シートに値の入っている行だけをインポートできるといいのですが・・・
(エクセルファイルは、新しい形で別から供給されるものなので、どんなファイルが来るかその時々なのです。)
何かいい方法があればご教授いただければうれしいです。
タイトル
: Re: エクセルインポート時の空レコードの処理
記事No
: 159689
投稿日
: 2010/06/14(Mon) 09:13
投稿者
: '77'SunsetStrip
> その後、フィールドを検査するループ処理をしていますが、どうやらエクセルファイルを処理する際に、
> 行削除でなく値削除でシートに表示されるレコードを削除した場合、ファイル表Aに空白行が
> インポートされていしまうことに気付きました。
こりゃどういうことなんですか?
文章を読んだだけではイメージできません。
タイトル
: Re^2: エクセルインポート時の空レコードの処理
記事No
: 159710
投稿日
: 2010/06/14(Mon) 22:18
投稿者
: ステラ
'77'SunsetStrip さん、いつもレスありがとうございます。
レスが遅くなって済みません。
> > その後、フィールドを検査するループ処理をしていますが、どうやらエクセルファイルを処理する際に、
> > 行削除でなく値削除でシートに表示されるレコードを削除した場合、ファイル表Aに空白行が
> > インポートされていしまうことに気付きました。
> こりゃどういうことなんですか?
> 文章を読んだだけではイメージできません。
説明が悪くてすみません。
元になるエクセルファイルをテストしているときに、エクセルファイルの内容を少なくしようと、データを削除しているときにおこりました。
書いてある通りなのですが、たとえば5つのレコードを削除する際、5行すべてを選んで行削除を実行すると、インポートされたファイルに空白行はできないのですが、この5つのレコードをセルを選んでDeleteキーでセル内容を削除すると、インポートされたファイルに5行分の空白行が入ってしまうのです。
もちろん、削除する内容がレコード群の途中の場合は自然と行削除するので問題ないのですが、末のレコードを削除する際、うっかりセル内容を消去する方法で削除をすると、インポートファイルに入ってきてしまうのです。
インポートに使っている式は
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "表A", FileName, True
で、Filenameは、「ファイルを開く」のコントロールから読み込んでいます。
わかっていただけたでしょうか??
インポートはエクセルシート全体を読み込んできているつもりですし、レコードが多くなっても、特定の範囲で無く全部を読み込んできます。
タイトル
: Re: エクセルインポート時の空レコードの処理
記事No
: 159711
投稿日
: 2010/06/14(Mon) 22:26
投稿者
: よろずや
> その後、フィールドを検査するループ処理をしていますが、どうやらエクセルファイルを処理する際に、行削除でなく値削除でシートに表示されるレコードを削除した場合、ファイル表Aに空白行がインポートされていしまうことに気付きました。
>
> ループは空白行に来ると、エラー94、NULLの使い方が不正ですと出てしまいます。
ループの中に、NULL かどうかを判定する処理を追加する。
タイトル
: Re^2: エクセルインポート時の空レコードの処理
記事No
: 159714
投稿日
: 2010/06/15(Tue) 00:46
投稿者
: ステラ
よろずやさん、レスありがとうございます。
インポート時にはさけられないということでしょうか・・・
|