Thema Datum  Von Nutzer Rating
Antwort
31.10.2008 18:27:08 Matiusch
NotSolved
Blau Aw:Porblem bei vba bitte hilfe
01.11.2008 09:54:00 jh
NotSolved
01.11.2008 10:13:03 tupfi
NotSolved

Ansicht des Beitrags:
Von:
jh
Datum:
01.11.2008 09:54:00
Views:
887
Rating: Antwort:
  Ja
Thema:
Aw:Porblem bei vba bitte hilfe
Hallo,

ich habe zwar nicht viel Ahnung von Access, aber natürlich kannst du
von Excel auf Access zugreifen:

1. Verweis auf die Access-Objektbibliothek setzen (in der VBA-IDE
Menü "Extras-Verweise..."). Dazu muss natürlich Access auf dem
Zielrechner installiert sein.

2. In einem allgemeinen Modul Objektvariable erstellen:

Public accApp As Access.Application

3. Die Objektvariable mit Access verbinden:

On Error Resume Next
' versuchen, existierende Access-Instanz zu finden
Set accApp = GetObject(, "Access.Application")
' Komma hinter der öffnenden Klammer nicht vergessen!
On Error GoTo 0
If accApp Is Nothing Then
' keine Access-Instanz aktiv - neue erstellen
Set accApp = CreateObject("Access.Application")
End If

Ggf. musst du die Instanz noch sichtbar machen, falls
Access so eine Eigenschaft hat:

accApp.Visible = True

Mit der Objektvariablen kannst du auf alle Objekte, Methoden
oder Eigenschaften von Access zugreifen nach dem Schema

accApp.(Name der Eigenschaft etc.)
(natürlich ohne Klammern)

Du kannst auch weitere untergeordnete Objekte erstellen:

Dim (Objektvariable) As Access.(Objektname)
Set (Objektvariable) = accApp.(Objektname)

Allerdings erkennt VBA laut M$ trotz Verweis nicht alle Access-
Objekte, so dass du sie ggf. einfach als Object deklarieren musst.

Was die Rechnungsnummer betrifft, natürlich kannst du die letzte
Nummer aus der gerade nicht benutzten Excel-Mappe auslesen, z. B.
etwa so:

Dim wkbA As Workbook, wkbB As Workbook
Dim strDateiname As String
Dim lngRechnungsnummer As Long
Dim lngTemp1 As Long, lngTemp2 As Long
Dim blnWkbOpen As Boolean

If ThisWorkbook.Name = "Datei1.xls" Then
strDateiname = "Datei2.xls"
Else
strDateiname = "Datei1.xls"
End If

' Prüfen, ob die andere Datei geöffnet ist
For Each wkbA In Application.Workbooks
If wkbA.Name = strDateiname Then
blnWkbOpen = True
Exit For
End If
Next wkbA

Application.ScreenUpdating = False
If blnWkbOpen = True Then
Set wkbB = wkbA
Else
' die andere Mappe sollte im gleichen Ordner stehen wie diese
Set wkbB = Workbooks.Open(ThisWorkbook.Path & _
Application.PathSeparator & strDateiname)
End If

' letzte Nummer in der aktuellen Mappe suchen
' es wird angenommen, dass sie in Tabelle 1 Spalte A steht
With ThisWorkbook.Worksheets("Tabelle1")
lngTemp1 = .Cells(.Cells(65536, 1).End(xlUp).Row, 1).Value
End With

' das Gleiche in der anderen Mappe
With wkbB.Worksheets("Tabelle1")
lngTemp2 = .Cells(.Cells(65536, 1).End(xlUp).Row, 1).Value
End With

If lngTemp1 > lngTemp2 Then
lngRechnungsnummer = lngTemp1 + 1
Else
lngRechnungsnummer = lngTemp2 + 1
End If

' ggf. andere Mappe wieder schließen
If blnWkbOpen = False Then
wkbB.Close False
End If
Application.ScreenUpdating = True
Set wkbA = Nothing
Set wkbB = Nothing

Ggf. könnte man die Nummer auch auslesen, ohne die andere Mappe
überhaupt zu öffnen (mit ADO oder DAO), aber das wäre noch mehr
Aufwand. Es wäre also auch zu prüfen, ob es einfacher ist, beide
Mappen zusammenzuführen.

Gruß

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
31.10.2008 18:27:08 Matiusch
NotSolved
Blau Aw:Porblem bei vba bitte hilfe
01.11.2008 09:54:00 jh
NotSolved
01.11.2008 10:13:03 tupfi
NotSolved