• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel ado処理について)

Excel ado処理について

このQ&Aのポイント
  • Excel(インターフェース用)⇔(社内LAN経由)⇔Excel(マスターファイル×4)間でADOを使用してデータ処理を行おうとしています。
  • マスターファイル(A・B・C・D)のうち、Cのファイルのみ、データを10件ほど認識しておらず、A=B=D≠Cとなってしまいます。
  • Cのファイルだけ、"RS.MoveNext"の部分でデータが10件ほど飛んでいると思っています。

質問者が選んだベストアンサー

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

みたところ問題は無さそうな気がしますけどね。 エラールーチンがどうなっているか少し気になります。 素直に考えれば認識できないレコードセットがある。。 のではないでしょうか? 『主キー』が振ってあるとのことなので 欠落したレコードの特定は出来ますよね。 まずは、調べられては? ※ADOで接続した場合に競合やファイルの破損が避けられるかどうかは 未経験なのでなんともいえませんが、 私なら、SQL Server Express Edition で・・・と考えます。 無償版SQL Serverの制限と限界を知る http://www.atmarkit.co.jp/fwin2k/tutor/sqlexplmt/sqlexplmt_01.html SQL Server 2008 R2 Express Edition のインストール http://awoni.net/fc/sql-server-2008-express

aki0309
質問者

お礼

>『主キー』が振ってあるとのことなので > 欠落したレコードの特定は出来ますよね。 > まずは、調べられては? →ご回答ありがとうございました。  確かにその通りでございました。 Cのファイルには、顧客対応履歴のフィールドがあるのですが、 1つのセルにテキストデータが膨大な長文データが入っているセルが10件ほどあり、 その該当レコード部分がエラーを起こしていることが分かりました。 まずは、大元データをどうにかして対応することに致しました。 ありがとうございます。 あと、SQLサーバーについても検討したいと思います。 ありがとうございました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

読者には社内事情はわからないのに、質問が難しい書き方になっていて、言いたいことが判りにくいと思うが、問題にしているのは (1)エクセルの在るブック(Cといっているもの) (2)その中のある1つのシートで (3)ADOで扱う(読む)と、エクセルで読んで画面に現れる、エクセルでいう行数が違うということかな 普通にはありえないことだが、無駄だとは思うが、念のため 原因までは良くわからないが、質問に書いてあるコードと変わらんが、下記でやってみて、エクセルで開いてシートで見える データ行数と比べて違いの特徴を把握するようにしては。 Microsoft ActiveX Data Objects X Library を参照設定して Sub test01() Dim cn As ADODB.Connection Set cn = New ADODB.Connection With cn .Provider = "Microsoft.Jet.OLEDB.4.0" .ConnectionString = "Data Source=C:\Documents and Settings\XXXX\My Documents\YYYY.xls;" & _ "Extended Properties=Excel 8.0;" .Open End With Dim rs As New ADODB.Recordset ShtName = "Sheet1" ssql = "SELECT * FROM [" & ShtName & "$]" rs.Open ssql, cn, adOpenStatic, adLockReadOnly i = 1 Do Until rs.EOF For j = 1 To rs.Fields.Count ActiveSheet.Cells(i, j) = rs(j - 1) Next j i = i + 1 rs.MoveNext Loop End Sub ーー ファイルのパス ファイル名 シート名ShtName の部分は実情に変えてください。

aki0309
質問者

お礼

申しわけございません。確かに、関係者以外に分かりづらい表現となっておりました。 上記のソースを流用し、データ検証してみたところ、原因が分かりました。 Cのファイルには、顧客対応履歴のフィールドがあるのですが、 1つのセルにテキストデータが膨大な長文データが入っているセルが10件ほどあり、 その該当レコード部分がエラーを起こしていることが分かりました。 まずは、大元データをどうにかして対応することに致しました。 ありがとうございます。

関連するQ&A