|
▼タロウ さん:
>初心者なもので、ご指導お願いします。
>環境 WindowsXP SP2 ACCESS2003 SP2
>
>今までACCESSよりDAOで既存のEXCELファイルに出力していました
>ところが Office2003 ServicePack2をインストールしたところ
>「データベースまたはオブジェクトは読み取り専用なので、更新できません」
>というエラーが出るようになりました。
>調べた所下記URLの
>http://support.microsoft.com/kb/904953
>「Office Access2003またはAccess2002でExcelブックにリンクされている
>テーブル内のデータを変更、追加、削除できない」という所の問題かと思い
>回避策を確認したのですが、DAOの際の回避策がよくわかりません
>どなたか教えて頂けるでしょうか
>よろしくお願いします。
>
>ソースの抜粋です
>
> Dim XlsDb As Database, MyDb As Database
> Dim XlsRs As Recordset, MyRs As Recordset
> Dim EndFlg As Integer, I As Integer
>
> Set XlsDb = OpenDatabase(Path & "\" & ExcelName, False, False, ExcelType)
> Set XlsRs = XlsDb.OpenRecordset(SheetName & ExcelRange)
>
> Set MyDb = CurrentDb
> Set MyRs = MyDb.OpenRecordset(TblSql, dbOpenSnapshot)
「dbOpenSnapshot」を「dbOpenDynaset」にしたら、どうなりますか?
>
> ToExcel = 1
> EndFlg = 0
>
> If MyRs.EOF = False Then
> MyRs.MoveFirst
> Else
> ToExcel = 0 '出力データナシ
> DoCmd.Hourglass False
> Exit Function
> End If
>
> If XlsRs.EOF = False Then
>
> XlsRs.MoveFirst
> Do Until XlsRs.EOF
>
> If EndFlg = 0 Then
> With XlsRs
> .Edit ←ここでエラーが出ます
> For I = 0 To FieldCount - 1
> XlsRs.Fields(I) = MyRs(FieldArray(I))
> Next I
> .Update
> End With
> Else
> With XlsRs
> .Edit
> For I = 0 To FieldCount - 1
> XlsRs.Fields(I) = Null
> Next I
> .Update
> End With
> End If
>
> If EndFlg = 0 Then
> MyRs.MoveNext
> If MyRs.EOF = True Then
> EndFlg = 1
> End If
> End If
>
> XlsRs.MoveNext
> Loop
>
> If EndFlg = 0 Then
> ToExcel = -2 'エクセルデータ格納セル不足
> End If
>
> Else
>
> ToExcel = -3 'エクセルデータ格納セル0
> End If
> XlsRs.Close
> XlsDb.Close
|
|