投稿時間:2003/03/17(Mon) 14:19 投稿者名:よれ
Eメール:
URL :
タイトル:DAO 実行時エラー3164
初めて質問します、よろしくお願いします。
実行時エラー3164「フィールドを更新できません」 というエラーが出て困っています。
MS-Excelのワークシートの内容を編集したいので、DAOを使っています。 読み込みは問題ありません。 また、書き込みは最初のレコードではうまくいくのですが、2番目以降の レコードで、表題のエラーが発生してしまい、編集できません。
問題のソースを添付しますのでよろしくお願いします。 LeftByte関数は入力された文字列を、指定バイト数までで切り取る機能 です。 gsDBNameは、Excelですでに編集&保存してあるExcelのブック形式ファ イルのファイル名が設定されています。
仕方なく、RS(レコードセット)を、1回編集ごとに作成&クローズする 方式に書き換えてもやはりだめでした。
皆さん、打開策をご教授よろしくお願いします。
Public Sub hosei() Dim DB As DAO.Database Dim RS As DAO.Recordset Dim MyData As String Dim SeetName As String Dim i As Integer 'open Set DB = OpenDatabase(gsDBName, False, False, "Excel 8.0;HDR=NO;") SeetName = DB.TableDefs(0).Name Set RS = DB.OpenRecordset(SeetName) Do Until RS.EOF With RS .Edit .Fields(0) = LeftByte(.Fields(0), 4) ' ←ここを2度目に通過するときにエラー .Fields(1) = LeftByte(.Fields(1), 1) .Fields(2) = LeftByte(.Fields(2), 8) .Fields(3) = LeftByte(.Fields(3), 16) .Fields(4) = LeftByte(.Fields(4), 16) .Update .MoveNext Debug.Print .EditMode, .LockEdits MyData = .Fields(0) & vbTab & .Fields(1) & vbTab & .Fields(2) i = i + 1 Debug.Print i, MyData End With Loop Set RS = Nothing Set DB = Nothing End Sub
|