MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 21.05.2019, 22:05   #1
JuMathias
MOF Profi
MOF Profi
Standard Frage - 2016: (Standard)Verweise von EXCEL

Hallo VBA-Entwickler unter EXCEL 2016,

ich frage, welche Verweise standardmäßig bei Excel 2016 gesetzt sind.
Bei mir sind zur Zeit aktiviert:


- Visual Basic for Applications
- Microsoft Excel 16.0 Object Libary
- OLE Automation
- Microsoft Office 16.0 Object Libary
- Microsoft Active Data Objects 6.1 Libary (wird genutzt, um eine Verbindung zu einer ORACLE-DB zu nutzen)



Ist die Reihenfolge der Verweise relevant?


Hintergrund:

Ich bekomme eine Fehlermeldung bzgl einer nicht bekannten Variablen:

Sub Option3()

Dim SQL_String As String
Dim dbConnectStr As String
Set con = New ADODB.Connection '<< con ist nicht bekannt (Connect zu ORACLE)


Wer hat eine Idee, was ich unternehmen kann, um den Fehler zu beseitigen?


Ein Dankeschön für Tipps und Hinweise.

Gruß

JuMathias

Geändert von JuMathias (21.05.2019 um 22:24 Uhr).
JuMathias ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 21.05.2019, 22:35   #2
Scorefun
MOF Meister
MOF Meister
Standard

con ist eine von Dir verwendete Variable, muß im Code deklariert werden
und hat mit den Verweisen erst mal nichts zu tun
genau wie Deine Variable SQL_String

Ergänze

Code:

Dim con as ADODB.Connection
sollte Dein Problem lösen

__________________

Gruss Ralf
======================================
Bitte keine PN Anfragen - Hilfe erfolgt nur im Forum!
======================================
Vorsicht Beim Ausprobieren...
Auch Chaotischer Code Entwickelt Sich Ständig
1) Ryzen 5 2600, 6x3,4 Ghz, 16GB RAM, 256GB SSD + 480GB SSD + 1TB HDD, AMD RX580 8GB, Win10 Pro 64-bit, Office 2019 Pro Plus
2) Macbook Pro 2017, 13.3 Zoll, Touchbar, i7-7567u 3,5 Ghz, 16GB RAM, 1TB SSD, Office 2019
Scorefun ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 21.05.2019, 23:20   #3
JuMathias
Threadstarter Threadstarter
MOF Profi
MOF Profi
Standard Ein erstes Dankeschön für deinen Hinweis

Hallo Scorefun,

ein Dankeschön für deine Zeilen zur Mitternacht!

Das Ganze ist ein wenig verzwickt. Ich fange 'mal bei den einfachen Dingen an.

Aspekt 1:


Den VBA habe ich erweitert und bzgl. den Zeilen ...

Sub Option3()

Dim con As ADODB.Connection
Dim SQL_String As String
Dim dbConnectStr As String
Set con = New ADODB.Connection '
Set recset = New ADODB.Recordset

erhalte ich die Meldung:

"Benutzer definierter Typ nicht definiert"


Aspekt 2:

Ich hatte 'mal zu Anfangs mit folgendem VBA-Code begonnen, um von EXCEL auf ORACLE zuzugreifen:


Code:

Sub Option1()      '>> "Late Binding": Ich benötige keinen Verweis auf aktuelles MS ActiveX 

'https://www.xing.com/communities/posts/zugriff-auf-eine-oracle-datenbank-per-vba-1002110381

Dim Conn, RS
Dim strSQL As String

Set Conn = CreateObject("ADODB.Connection")
With Conn

''' diverse Varianten ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Variante ''' Err.Number ''''''''''''''''

'(1) https://www.connectionstrings.com/oracle-provider-for-ole-db-oraoledb/
'   .ConnectionString = "Provider=OraOLEDB.Oracle;Data Source=XE;User ID=SYSTEM;Password=RENEDI;"             '1   3706

'(2) Bevorzugter Ansatz:
'https://www.xing.com/communities/posts/zugriff-auf-eine-oracle-datenbank-per-vba-1002110381
  .ConnectionString = "Provider=MSDAORA;Data Source=XE;User ID=SYSTEM;Password=RENEDI;"                       '2   2147467259 (80004005)

'(3)
'  .ConnectionString = "Provider=MSDAORA;Data Source=XE_NameBeliebig;User ID=SYSTEM;Password=RENEDI;"         '3   2147467259 (80004005)
  
'
' .ConnectionString = "Provider=ExcelAufOracle;Data Source=XE;User ID=SYSTEM;Password=RENEDI;"                '4   3706

'  Quelle nicht mehr bekannt
'  .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=XE;User ID=SYSTEM;Password=RENEDI;"     '5   2147217843 (80004005)

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
     
   .Open  '>> unterschiedliche Fehlermeldung je nach (Variante 1 ...5), siehe oben

End With

'Hinweis: Ob die nächsten Zeilen letztendlich so passen, kann ich nicht sagen, da ich am open "hängen" bleibe.
'Wichtig: Ich bekomme das "open" hin. Ähnliche Problematik: Siehe unten "Sub Option2()"

Set RS = CreateObject("ADODB.Recordset")
strSQL = "select * from T_ABTEILUNG"
RS.Open strSQL, Conn, 3, 3
Range("A1") = RS("ID_ABTEILUNG")
Range("B1") = RS("ABTEILUNG")

RS.Close
Set RS = Nothing
Conn.Close
Set Conn = Nothing

End Sub
Grundlagen: ORACLE XE 18 ist installiert, der Connect über den ODBC-String (DSN-Festlegung) ist möglich.
Nur die obige rote Zeile bereitet Probleme.


Ein Gruß

JuMathias

Geändert von JuMathias (21.05.2019 um 23:34 Uhr).
JuMathias ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 21.05.2019, 23:44   #4
JuMathias
Threadstarter Threadstarter
MOF Profi
MOF Profi
Standard

Erweiterung:

Wenn ich den Verweis nutze "Microsoft Active Data Objects 6.1 Libary"
(weil ich ADO und ODBC zum Datenzugriff benötige), dann
dann laufen nachfolgende Zeilen bis zum con.Open (siehe unten)

Sub Option3()

Dim con As ADODB.Connection
Dim recset As ADODB.Recordset
Dim SQL_String As String
Dim dbConnectStr As String
Set con = New ADODB.Connection
Set recset = New ADODB.Recordset
Dim recordCount As Long
dbConnectStr = "Provider=msdaora;Data Source=" & "XE;"

'User Id=userId" & "; Password=" & "password"
'The statement above has been commented out. I use the statement below to prompt the user for the userId and password - which is what I prefer!

con.ConnectionString = dbConnectStr
con.Properties("Prompt") = adPromptAlways
con.Open[/color] dbConnectStr 'ConnectionString

Das ist derzeit alles ein wenig suspekt.

Wir sollte lieber 'mal in der Nacht das Forum schließen um eine Pause einzulegen.

Gruß

JuMathias

Geändert von JuMathias (21.05.2019 um 23:47 Uhr).
JuMathias ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.05.2019, 07:04   #5
JuMathias
Threadstarter Threadstarter
MOF Profi
MOF Profi
Standard

Hallo Forenleser am Morgen,

der ursprünglich VBA-Code stammt von

http://www.vbaexpress.com/forum/show...t=Thread40986&

Von dort habe ich den Code 1:1 übernommen und die zwei Variablen waren nicht deklariert.

Unter

http://www.vbaexpress.com/forum/show...894#post390894

habe ich dann nachgefragt, wieder Code des Entwicklers funktionstüchtig sein kann, wenn die Variablen nicht deklariert wurden.
Ich hatte irtümlicherweise vermutet, dass das Ganze vielleicht etwas mit den Verweisen zu tun hat.

Jetzt muss ich an die weiteren Problem.
Zumindest diese Hürde wurde Dank Scorefun genommen.

Dankeschön & Gruß

JuMathias
JuMathias ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.05.2019, 07:09   #6
Mase
MOF User
MOF User
Standard

Moin JuMathias,

wenn du wissen möchtest, wie der ConnectionString korrekt auszusehen hat, kannst Du auch alles mit dem Markorekorder aufnehmen.

a) Makrorekorder starten
b) mit MS-Query über eine DSN an die Oracle verbinden
c) ein einfaches SELECT absetzen
d) Makrorekorder stoppen
e) mit ALT+F11 in den VBA-Editor rein und schauen was aufgezeichnet wurde

Easy going

__________________

gruß
Marco
Mase ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.05.2019, 07:14   #7
JuMathias
Threadstarter Threadstarter
MOF Profi
MOF Profi
Standard

Hallo zusammen am Morgen,

antwortet erst einmal nicht weiter, ich probiere mich derzeit an der Stelle

con.Open

D.h.: Fehlernummern liegen vor; muss dann im www weiterrecherchieren.


Gruß

JuMathias
JuMathias ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.05.2019, 07:36   #8
JuMathias
Threadstarter Threadstarter
MOF Profi
MOF Profi
Standard

Hallo Mase,

dein Hinweis war optimal, zur Erkennung der aktuellen (Fehler)Problematik.
Bisher standen mir die Fehlernummern beim VBA bzgl.

con.Open



2147467259 (80004005) und 3706 zur Verfügung.

Beim Aufzeichnenvorgang kommen dann Details zum Vorschein:

Bit-Version EXCEL (32) passen nicht zum Treiber (64 bit).


Ich war davon ausgegangen, dass ich mir vor zwei Jahren EXCEL 2016 mit 64 Bit bestellt hatte.

Bei einem Blick unter "KONTO" (EXCEL) sehe ich auch, dass dort "Office 365"
dokumentiert ist.
Im Zeitraum um das Wochenende gab es ein Update und seit dem sind die Programm-Symbole auf der Task-leiste nicht mehr wie gehabt (nun "gestreifte Rechtecke).

Klasse MS.

D.h.: Ich benötige dann wohl ein EXCEL unter 64 Bit.
Oder ein 32 bit ORACLE - Treiber?

Hat von euch jemand Erfahrung mit dieser Problematik?


Gruß

JuMathias

Geändert von JuMathias (22.05.2019 um 07:41 Uhr).
JuMathias ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.05.2019, 07:46   #9
Mase
MOF User
MOF User
Standard

Hi,

schön das Du voran kommst.

Verwende über Excel 32bit eine 32bit-Odbc-DSN

Zu den ODBC-Administratoren kommst du wie folgt:
32-bit:
Code:

 %windir%\syswow64\odbcad32.exe
64-bit
Code:

%windir%\system32\odbcad32.exe

__________________

gruß
Marco
Mase ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.05.2019, 13:21   #10
JuMathias
Threadstarter Threadstarter
MOF Profi
MOF Profi
Standard

Hallo Marco,

ich habe auf den Einstellungen "Eigenschaften von Datenquellen (ODBC)"
folgende Eintragungen vorgenommen:

Ziel: C:WindowsSYSWOW64odbcad32.exe
Ausführen in: C:WindowsSYSWOW64

Bei dem "ODBC-Datenquellen-Administrator" will ich den Test des Connects durchführen und bekomme die Information:

"Die Setup-Routinen für den Oracle in OraDB1Home1 ODBC-Treiber konnten nicht gefunden werden. Installieren Sie den Treiber erneut."


Gruß

JuMathias
JuMathias ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.05.2019, 13:31   #11
JuMathias
Threadstarter Threadstarter
MOF Profi
MOF Profi
Standard

Bei dem Anlegen des neuen "Benutzer-DSN"-Eintrags
erhalte ich die nette Information:

"Die Client- und NW-Verbindung von Oracle(tm) wurden nicht gefunden. Dies Komponenten wurden von der Oracle Corporation geliefert und mitder Clientsoftware von Oracle Version 7.3 (oder höher) installiert.

Sie müssen diese Komponenten installieren, um den Treiber verwenden zu können.

Was ist wo nun auszuführen?


(Querverweis: https://community.oracle.com/thread/4271164)

Gruß

JuMathias

Geändert von JuMathias (22.05.2019 um 14:36 Uhr).
JuMathias ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.05.2019, 14:18   #12
Mase
MOF User
MOF User
Standard

Zwei Fragen nach deinen Posts:

a) Hast du ausreichend Berechtigungen auf dem System, um mit dem ODBC-Administrator eine 32-bit DSN anzulegen?

b) Sind die Oracle ODBC-Treiber installiert



zu a)
Testen kannst Du das, indem du eine DSN auf ein Excel-File oder Access-Datenbank erstellst und erfolgreich eine Verbindung aufbauen kannst

zu b)
Welche Oracle Treiber stehen dir im ODBC-Admin zur Verfügung und welche Anforderung hat dein System

__________________

gruß
Marco
Mase ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.05.2019, 14:21   #13
Mase
MOF User
MOF User
Standard

Zitat:

Was ist wo nun auszuführen?

1) Win+R
Code:

%windir%\syswow64\odbcad32.exe
2) enter

__________________

gruß
Marco

Geändert von Mase (22.05.2019 um 14:21 Uhr). Grund: edit: \
Mase ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.05.2019, 15:01   #14
JuMathias
Threadstarter Threadstarter
MOF Profi
MOF Profi
Standard

Ein "Hallo" und "Dankeschön" an Mase für deinen Support,

hier 'mal meine Informationen auf deine Fragen:


a) Hast du ausreichend Berechtigungen auf dem System, um mit dem ODBC-Administrator eine 32-bit DSN anzulegen?
Ja

b) Sind die Oracle ODBC-Treiber installiert ?
Da habe ich unter #11 an das ORACLE-Forum gepostet:
(Querverweis: https://community.oracle.com/thread/4271164)

(der 64 bit Treiber ist noch installiert und der Connect hatte funktioniert)


zu a)
Testen kannst Du das, indem du eine DSN auf ein Excel-File oder Access-Datenbank erstellst und erfolgreich eine Verbindung aufbauen kannst

Klappt ja nicht bzgl. fehlerhaften Treiber derzeit: 64 muss durch 32 bit ersetzt werden)
zu b)
Welche Oracle Treiber stehen dir im ODBC-Admin zur Verfügung
64 bit da die Installation für Windows 64 bit erfolgte.

und welche Anforderung hat dein System?
ORACLE (64 bit) > Treiber 32 bit > Excel (32 bit) auf Grund der Fehlermeldungen


D.h: Mir ist derzeit nicht bekannt, wie ich möglich einfach an die 32 bit-Dateien des Treibers komme.
Die stecken dann in der zip-Datei für die Oracle XE 32 bit Installation.


Gruß

JuMathias

Geändert von JuMathias (22.05.2019 um 15:40 Uhr).
JuMathias ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.05.2019, 15:24   #15
JuMathias
Threadstarter Threadstarter
MOF Profi
MOF Profi
Standard

Hallo Mase,

ist bzgl. deinem #9 nicht die Kennzeichnung der bit-Version gerade andersherum korrekt?

Gruß

JuMathias
JuMathias ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:40 Uhr.



Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.