Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1640to1644
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

ADO in geschlossene Arbeitsmappe schreiben

ADO in geschlossene Arbeitsmappe schreiben
01.09.2018 17:45:06
Timo
Hallo zusammen,
ich war auf der Suche nach einer Möglichkeit, Werte in eine geschlossene Arbeitsmappe zu schreiben und bin dabei auf die "ADO" Möglichkeit mit Excel gestoßen.
Mit folgendem Code schreibe ich eine Seriennummer fortlaufend in Spalte "A" einer anderen Excel-Datei:
Public Sub ADO_Write()
Dim objConnection As Object
Dim strConnection As String
Dim strWorkbook As String, strWorksheet As String
Dim Seriennummer As String
strWorkbook = "C:\Datenbank\Mappe1.xls"
strWorksheet = "Tabelle2"
Seriennummer = ThisWorkbook.Worksheets("Tabelle3").Range("A1").Value
Set objConnection = CreateObject("ADODB.Connection")
strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & strWorkbook & ";" & _
"Extended Properties=""Excel 12.0;HDR=Yes;IMEX=0"""
Call objConnection.Open(strConnection)
Call objConnection.Execute("INSERT INTO [Tabelle2$A1:A10]" & _
"VALUES ('" & Seriennummer & "')")
objConnection.Close
Set objConnection = Nothing
End Sub
Nun möchte ich aber die Seriennummer nicht fortlaufend untereinander in Spalte "A" schreiben sondern möchte die aktuelle Seriennumer immer in "A1" schreiben.
Deshalb habe ich folgende Codezeile geändert:
Call objConnection.Execute("INSERT INTO [Tabelle2$A1:A1]" & _
"VALUES ('" & Seriennummer & "')"
Leider funktioniert das nicht wie gewünscht, der Wert in "A1" wird nicht überschrieben sondern es erscheint eine Fehlermeldung, dass der benannte Bereich nicht erweitert werden kann.
Ich stehe hier total auf dem Schlauch und hoffe auf eure Hilfe.
Vielen Dank und viele Grüße
Timo

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ADO in geschlossene Arbeitsmappe schreiben
01.09.2018 18:40:42
Sepp
Hallo Timo,
zuerst einmal, die Datei wird trotzdem geöffnet! Du siehst es nur nicht.
In A1 schreiben geht nicht, das SQL immer nach einer Tabelle verlangt und bei einer Tabelle stehen in der ersten Zeile Überschriften. Schreibe in A1 also eine beliebige Überschrift und versuche folgenden Code. Die Seriennummer wird inA2 geschrieben.
Sub updateData()
  Dim ExcelTable As Object
  Dim Path As String, Table As String, SourceRange As String
  Dim SQL As String, Con As String
  Dim Seriennummer As String
    
  Path = "C:\Datenbank\Mappe1.xls"  ' Dateiname - Anpassen! 
  Table = "Tabelle2"                ' Tabellenname - Anpassen 
  SourceRange = "A1:A2"             ' Bereich - Anpassen! 
  
  Seriennummer = ThisWorkbook.Worksheets("Tabelle3").Range("A1").Value

  SQL = "select * from [" & Table & "$" & SourceRange & "]"

  If Right(Path, 3) = "xls" Then
    Con = "Provider=Microsoft.Jet.OLEDB.4.0;" _
      & "Extended Properties=Excel 8.0;" _
      & "Data Source=" & Path & ";"
  ElseIf Right(Path, 4) = "xlsx" Or Right(Path, 4) = "xlsm" Then
    Con = "Provider=Microsoft.ACE.OLEDB.12.0;" _
      & "Extended Properties=""Excel 12.0;HDR=YES"";" _
      & "Data Source=" & Path & ";"
  End If

  Set ExcelTable = CreateObject("ADODB.Recordset")

  ExcelTable.Open SQL, Con, 3, 3

  With ExcelTable
    .Movefirst
    .Fields(0) = Seriennummer
    .Update
    .Close
  End With
  
  Set ExcelTable = Nothing
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: ADO in geschlossene Arbeitsmappe schreiben
01.09.2018 19:08:16
Timo
Hallo Sepp,
herzlichen Dank für deine Erklärung und natürlich für den fertigen Code.
Es funktioniert alles so, wie ich es mir vorgestellt habe.
Viele Grüße Timo
AW: ADO in geschlossene Arbeitsmappe schreiben
01.09.2018 18:41:09
Oberschlumpf
Hi Timo
Wieso MUSS denn die Datei unbedingt geschlossen sein?
Mit...

Application.ScreenUpdate = False
WorkBooks("bekannterPfad+Name").Open
With ActiveWorkbook
.Sheets("bekannteTabelle").Range("bekannteZelle(n)").Value = Zielwert(e)
.Close True
End With
Application.ScreenUpdate = True

...ist es ein Leichtes, die Datei zu öffnen, Daten in Zellen eintragen + Datei mit Speichern schließen.
Alles automatisiert + der Anwender bekommt in Excel nix davon mit.
Ciao
Thorsten
Anzeige
AW: ADO in geschlossene Arbeitsmappe schreiben
01.09.2018 19:13:00
Timo
Hi Thorsten,
ich habe ein VBA-Projekt erstellt, was mehrere Anwender auf ihrem PC verwenden.
Es gibt aber eine gemeinsame Datei, in die Werte geschrieben werden.
Deine beschriebene Methode ist mir bereits bekannt.
Über die "ADO-Methode" läuft die ganze Sache aber bedeutend schneller ab.
Viele Grüße
Timo
alles klar, danke für die Erklärung...owT
01.09.2018 19:41:54
Oberschlumpf

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige