0

Access データベースに Excel データをインポートする VBA コードに問題があります。コードを実行すると、実行時エラー「実行時エラー 1004 アプリケーション定義またはオブジェクト定義エラー」が発生します。

With wks
    'arrêter l'importation lorsque l'on rencontre une case vide
    While .Range(A & i).Value <> ""
    '(où pKeyCol représente la colonne et i la ligne)

        If (cnt = 10) Then
'pour éviter les messages lors de l'ajout des enregistrements
DoCmd.SetWarnings False
        End If

        'condition de remplissage de la table => eviter les doublons
        'si l'enregistrement existe déjà dans la table destination,
        'on passe à la ligne suivante sans l'importer
        If DCount("*", acTable, pKey & " LIKE '" & .Range(A & i).Value & "'") = 0 Then

            'requête SQL (ajouter autant de champs que nécessaire)
            cSQL = "INSERT INTO " & acTable & " ( [champ1], [champ2], [champ3], [champ5], [champ6], [champ11],[champ14], [champ15], [champ18],[champ20], [champ21], [champ22],[champ23], [champ24]) VALUES (" & Chr(34) & .Range("A" & i) & Chr(34) & "," & Chr(34) & .Range("F" & i) & Chr(34) & "," & Chr(34) & .Range("AI" & i) & Chr(34) & "," & Chr(34) & .Range("X" & i) & Chr(34) & ", " & Chr(34) & .Range("H" & i) & Chr(34) & "," & Chr(34) & .Range("K" & i) & Chr(34) & "," & Chr(34) & .Range("R" & i) & Chr(34) & "," & Chr(34) & .Range("S" & i) & Chr(34) & "," & Chr(34) & .Range("AC" & i) & Chr(34) & "," & Chr(34) & .Range("AD" & i) & Chr(34) & "," & Chr(34) & .Range("AE" & i) & Chr(34) & "," & Chr(34) & .Range("AF" & i) & Chr(34) & "," & Chr(34) & .Range("AG" & i) & Chr(34) & "," & Chr(34) & .Range("AH" & i) & Chr(34) & ");"
            'exemple avec les colonnes E et G

            'exécute la requète
            DoCmd.RunSQL cSQL

        End If

        'on incrémente la variable i pour passer à la ligne suivante
        i = i + 1
        cnt = cnt + 1
    Wend

End With

担当課だと思います。問題は、 cSQL = part の champ が原因である可能性があると思います。私はこれをフランスの環境で部分的にコーディングしました。したがって、これが問題になる可能性があります。

4

1 に答える 1

2

Aが変数でない限り、次のようにする必要があります。

.Range("A" & i)

これは.Range("A1")例になります。

iが最初に 0 の場合、これによりエラーが発生します。

acTable既存の Access 列挙の名前であるため、変数名 (識別子) として使用しないでください。文字列なのでstrTableorを使いますsTable

于 2013-07-29T08:02:41.407 に答える