collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 64
  • Punkt Versteckte: 1
  • Punkt Mitglieder: 1

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 13953
  • stats Beiträge insgesamt: 66364
  • stats Themen insgesamt: 8942
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Excel -Access VBA  (Gelesen 1060 mal)

Offline accessfan1

  • Newbie
  • Beiträge: 4
Excel -Access VBA
« am: Dezember 15, 2017, 09:27:21 »
Hallo Mitglieder des Forums,
Ich  benutze Access 2013 und excel 2003.
Mit dem Befehl transferspeadsheet hole ich Daten von Excel nach Access. Der Transfer-Befehl erzeugt eine
verlinkte Tabelle, auf die ich dann mit VBA mit einem recordset zugreife. Das funktioniert einmal.
Aber bei jeder Benutzung des Transfer-Befehls wird eine neue verlinkte Tabelle erstellt mit gleichem Namen und einer angehägten Nummer (kunex1,kunex2 usw.). Das recorset kann aber nur auf die erste verlinkte Tabelle zugreifen.
Löschen kann ich die verlinkten Tabellen aus Access auch nicht. Wenn ich statt des aclink im transfer-Befehl acimport verwende, erhalte ich die Fehlermeldung " isam nicht gefunden". Wie kann ich nun den Code benutzen? Ich wäre für eine Hilfe sehr dankbar!
Hier den Codeausschnitt:
DoCmd.TransferSpreadsheet acLink, xlsx, "kunex", AA, True, ""
Set zts = db.OpenRecordset("kunex")
Set kun = db.OpenRecordset("Kundenbestellungen", DB_OPEN_DYNASET)

kun.AddNew
kun("IDwert") = zts("IDwert")
.....
kun.update
« Letzte Änderung: Dezember 15, 2017, 09:36:34 von accessfan1 »
 

Offline markus888

  • Access-Profi
  • **
  • Beiträge: 192
Re: Excel -Access VBA
« Antwort #1 am: Dezember 15, 2017, 11:03:02 »
Löschen kann ich die verlinkten Tabellen aus Access auch nicht.

Warum nicht, damit wären doch alle Probleme gelöst.
10 Jahre Access
 

Offline accessfan1

  • Newbie
  • Beiträge: 4
Re: Excel -Access VBA
« Antwort #2 am: Dezember 15, 2017, 11:34:43 »
Das Löschen habe ich nach allen Regeln versucht. Aus der Access-Liste verschwinden aber die verlinkten
Files nicht und das Problem ist so nicht gelöst.
Oder gibt es eine Möglichkeit des totalen Löschens?
Mein versuchter Löschcode:
Sub kunexweg()
    Dim db As DAO.Database
    Dim tdf As DAO.TableDef
    Set db = CurrentDb
   
       For Each tdf In db.TableDefs
              If Left(tdf.Name, 5) = "kunex" Then
                          MsgBox tdf.Name
              On Error Resume Next
                      DoCmd.RunCommand acCmdConvertLinkedTableToLocal
                           On Error Resume Next
                           DoCmd.DeleteObject tdf.Name
                           MsgBox tdf.Name
              End If
                           
      Next tdf
  db.TableDefs.Refresh
db.Close
End Sub
Das Msgbox zeigt, daß die Files noch vorhanden sind und im Access-Tabellen-Feld stehen sie ja auch noch.
 

Offline ebs17

  • Access-Meister
  • ***
  • Beiträge: 883
Re: Excel -Access VBA
« Antwort #3 am: Dezember 15, 2017, 11:43:20 »
Zitat
Das funktioniert einmal.
Das reicht ja auch. Einmal verlinkt ist verlinkt.
Wenn Du immer neu verlinken willst pro Aufruf des Recordsets, muss die vorherige Verknüpfung gelöscht werden. Wenn die Verknüpfung beibehalten werden kann und soll, musst Du die Verknüpfungsanweisung aus diesem Code herausnehmen und an anderer Stelle einmalig vornehmen.

Zitat
Aus der Access-Liste verschwinden aber die verlinkten Files nicht
Manchmal hinkt die Anzeige oder ein vorhandener Speicher der eigentlichen Methode hinterher. Schiebe nach dem Löschen ein:
Application.RefreshDatabaseWindow
Alternativ kann man die Exceltabelle per Abfrage einbinden und spart sich da das permanente Verlinken und Entlinken:
SELECT T.* FROM [excel 12.0 xml;hdr=yes;imex=1;DATABASE=D:\eine\Exeldatei.xlsx].[Tabelle1$] AS T
Mit freundlichem Glück Auf!

Eberhard
 
Folgende Mitglieder bedankten sich: accessfan1

Offline accessfan1

  • Newbie
  • Beiträge: 4
Re: Excel -Access VBA
« Antwort #4 am: Dezember 15, 2017, 12:31:30 »
Lieber Access-Meister,
ich  muß nacheinander mehrere Excelfiles laden.
  "Einmal verlinkt ist verlinkt."
Alle durch den Transfer-Befehl entstehenden Files sind im Access-Tabellenfeld als verlinkt gekennzeichnet. Aber die Kontrolle, ob Tabellen verlinkt sind zeigt an, daß keine Files verlinkt sind und das Löschen klappt eben auch nicht. Ich habe gelesen, daß man von Access aus die Excel-Daten nicht bearbeiten kann, weil Microsoft die Möglichkeit gesperrt hat. Aber das Löschen der im Access-System angezeigten Tabellen würde mein Problem tatsächlich lösen. Aber das Löschen geht einfach nicht (ohne Fehlermeldung!). Muß ich nun auf den Transfer-Befehl einfach verzichten??
 

Offline ebs17

  • Access-Meister
  • ***
  • Beiträge: 883
Re: Excel -Access VBA
« Antwort #5 am: Dezember 15, 2017, 12:52:30 »
Zitat
Aber die Kontrolle, ob Tabellen verlinkt sind zeigt an, daß keine Files verlinkt sind und das Löschen klappt eben auch nicht.
Welch ein Durcheinander.
              On Error Resume Next
                      DoCmd.RunCommand acCmdConvertLinkedTableToLocal
                           On Error Resume Next
Was macht diese Passage genau? Eine Beschreibung zu der Accesskonstante finde ich nicht.

Ansonsten: Eine Kontolle auf Verlinkung sehe ich nicht, nur einen Test, ob es eine Tabelle mit einem  bestimmten Präfix gibt. Das kann dann eine interne oder eine verlinkte Tabelle sein.

Wenn ein Löschen oder etwas anderes nicht funktioniert, sollte man Fehler nicht ignorieren (On Error Resume Next), sondern vorhandene Fehler analysieren und beseitigen.
Mit freundlichem Glück Auf!

Eberhard
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1227
Re: Excel -Access VBA
« Antwort #6 am: Dezember 15, 2017, 13:12:06 »
Wenn die Verknüpfung nicht aktiv von einem anderen Objekt gerade genutzt wird, sollte ein einfaches   DoCmd.DeleteObject acTable, "NameDerVerknuepftenTabelle"zum Ziel führen.

PS: Lesen, Editieren und Anfügen von Daten-Tabellen in Excel-Blättern geht auch mittels Recordset - nur das Löschen von Datensätzen ist nicht statthaft.
Grüße von der (⌒▽⌒)
 
Folgende Mitglieder bedankten sich: accessfan1

Offline accessfan1

  • Newbie
  • Beiträge: 4
Re: Excel -Access VBA
« Antwort #7 am: Dezember 15, 2017, 13:48:14 »
On Error Resume Next
                      DoCmd.RunCommand acCmdConvertLinkedTableToLocal
                           On Error Resume Next
Diese Passage habe ich nicht ( immer ) dabei gehabt.
Das war nur ein Versuch, die Links in  totale Files zu
wandeln.
Jedenfalls kann ich die erstellten kunex-Files nicht löschen.
AberSo klappt es jetzt!:
    Dim db As DAO.Database
    Dim tdf As DAO.TableDef
    Set db = CurrentDb   
       For Each tdf In db.TableDefs
              If Left(tdf.Name, 5) = "kunex" Then
                 MsgBox tdf.Name
                 DoCmd.DeleteObject actable tdf.Name
              End If                           
      Next tdf
  db.TableDefs.Refresh
db.Close
End Sub
                        Vielen Dank!
« Letzte Änderung: Dezember 15, 2017, 13:52:03 von MzKlMu »