Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Access-Datei öffnen (vba)

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Access-Datei öffnen (vba) (8961 mal gelesen)
Dexta
Mitglied



Sehen Sie sich das Profil von Dexta an!   Senden Sie eine Private Message an Dexta  Schreiben Sie einen Gästebucheintrag für Dexta

Beiträge: 38
Registriert: 23.02.2005

erstellt am: 09. Mrz. 2005 11:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

hi Leute,
wie kann man von autocad aus eine access-datei öffnen

ich habe in autocad schon eine schaltflache erstellt, hinter der eine vba-prozedur hinterlegt ist.
Nur wie lautet der code, um direkt in eine access datei zu springen.

bis jetzt weiss ich nur, wie man access öffnet:

---------------------------------------------------------------------
Sub Accessöffnen()
Dim stAppName As String

    stAppName = "C:\Programme\Microsoft Office\Office10\MSACCESS.EXE "
   
    Call Shell(stAppName, 1)
   
End Sub
---------------------------------------------------------------------

das funktioniert auch, aber der direkte weg wäre mir lieber.

zur information:
-Es ist in der access-db kein passwort hinterlegt.
-Pfad der access-datei:
C:\Dokumente und Einstellungen\ddre\Desktop\adp1.mdb

Danke schonmal, :-)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

startrek
Moderator
Architekt


Sehen Sie sich das Profil von startrek an!   Senden Sie eine Private Message an startrek  Schreiben Sie einen Gästebucheintrag für startrek

Beiträge: 1361
Registriert: 13.02.2003

.

erstellt am: 09. Mrz. 2005 12:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Dexta 10 Unities + Antwort hilfreich

Oh, ich dachte das mit dem Shell hat sich erledigt, vergisses das wird so nix ;-)

Guck mal in der Hilfe, ob da ein Bsp. zu finden ist,
ansonsten häng ich mal eines von einer Excel-CD dran,
wie vom Prinzip her der Zugriff gehen könnte.
Allerdings hab ich mit sowas auch noch nicht viel gemacht,
also bei weiteren Fragen ist mein Name Hase.

HTHHope this helps (Hoffe, es hilft weiter), Nancy

Code:

Sub rec_fields()
  Dim conn As New Connection
  Dim rec As New Recordset
  Dim f As Field
  Dim ws As Worksheet
  Dim i&
  Set ws = ThisWorkbook.Worksheets("fields")
  conn.Open "Provider=microsoft.jet.oledb.4.0;" + _
    "Data Source=" + ThisWorkbook.Path + "\nwind.mdb;"
  rec.Open "employees", conn
  For Each f In rec.Fields
    i = i + 1
    ws.[a1].Cells(i) = f.Name
    ws.[b1].Cells(i) = f.Type
    ws.[c1].Cells(i) = TypeName(f.Value)
  Next
  rec.Close: conn.Close
End Sub

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Dexta
Mitglied



Sehen Sie sich das Profil von Dexta an!   Senden Sie eine Private Message an Dexta  Schreiben Sie einen Gästebucheintrag für Dexta

Beiträge: 38
Registriert: 23.02.2005

erstellt am: 09. Mrz. 2005 12:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi startrek,
Danke für deinen Beitrag, aber ich glaube, du hast da was falsch verstanden, ich will eine einfache verknüpfung mit access, nicht excel. Diese soll nichts weiter machen, nur eine access-datei öffnen. kann eigentlich garnicht so kompliziert sein, aber ich weiss einfach nicht wie es geht. :-)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

startrek
Moderator
Architekt


Sehen Sie sich das Profil von startrek an!   Senden Sie eine Private Message an startrek  Schreiben Sie einen Gästebucheintrag für startrek

Beiträge: 1361
Registriert: 13.02.2003

.

erstellt am: 09. Mrz. 2005 13:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Dexta 10 Unities + Antwort hilfreich

Dann höchstens noch so [ungetestet]:
Code:

App= "C:\Programme\Microsoft Office\Office10\MSACCESS.EXE "
myFile="C:\Dokumente und Einstellungen\ddre\Desktop\adp1.mdb"
Shell(App & myfile, 1)

Gruss Nancy

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


Sehen Sie sich das Profil von fuchsi an!   Senden Sie eine Private Message an fuchsi  Schreiben Sie einen Gästebucheintrag für fuchsi

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 10. Mrz. 2005 15:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Dexta 10 Unities + Antwort hilfreich

ich würds eher mit der API ShellExecute machen
Das hat den Vorteil, dass ich NICHT wissen muss , wo access installiert ist. Mit einem Aufruf von ShellExecute kannst du direkt die accesDATEI öffnen, und die damit verknüpfte Applikation (MS Access) wird automatisch gesucht.


Die API Definition :

Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, _
    ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal _
    lpDirectory As String, ByVal nShowCmd As Long) As Long


Und der Aufruf z.B.:
ShellExecute(0, "open", "d:\test\test.mdb", "-fast", "C:\", 3)

------------------

Ing. Anton Fuchs
WWW.FFZELL.AT.TC

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Dexta
Mitglied



Sehen Sie sich das Profil von Dexta an!   Senden Sie eine Private Message an Dexta  Schreiben Sie einen Gästebucheintrag für Dexta

Beiträge: 38
Registriert: 23.02.2005

erstellt am: 10. Mrz. 2005 15:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi Fuchsi,
dank dir vielmals, ich hab nur ein kleines Problem,

ich versteh den unteren Code nicht wirklich, da ich neu in VBA bin.
Wenn ich den Code kompiliere, kommt die Fehlermeldung: "fehler beim kompilieren: Erwartet:="

Hier nochmal der Code:

Public Declare Function accessöffnen Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, _
    ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal _
    lpDirectory As String, ByVal nShowCmd As Long) As Long

    ShellExecute(0, "open", "C:\Dokumente und Einstellungen\ddre\Desktop\AutoCAD.mdb", "-fast", "C:\", 3)


End Function

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


Sehen Sie sich das Profil von fuchsi an!   Senden Sie eine Private Message an fuchsi  Schreiben Sie einen Gästebucheintrag für fuchsi

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 10. Mrz. 2005 15:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Dexta 10 Unities + Antwort hilfreich

Sorry, schreib einfach vor dem Aufruf ein

ret = ShellExecute ( 0, "open", "d:\test\test.mdb", "-fast", "C:\", 3)

oder einfach

CALL ShellExecute ( 0, "open", "d:\test\test.mdb", "-fast", "C:\", 3)

oder auch so (ohne Klammer):

ShellExecute 0, "open", "d:\test\test.mdb", "-fast", "C:\", 3

(Sch....  VB5/6 mit der undurchsichtigen Klammersetzung)

------------------

Ing. Anton Fuchs
WWW.FFZELL.AT.TC

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Dexta
Mitglied



Sehen Sie sich das Profil von Dexta an!   Senden Sie eine Private Message an Dexta  Schreiben Sie einen Gästebucheintrag für Dexta

Beiträge: 38
Registriert: 23.02.2005

erstellt am: 24. Mrz. 2005 08:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Morgen Fuchsi,
Habs jetzt , mit deinem neuen Code probiert, diesmal kommt ne andere Fehlermeldung: Fehler beim kompilieren, außerhalb einer Prozedur ungültig:
ret = ShellExecute(0, "open", "C:\Dokumente und Einstellungen\ddre\Desktop\AutoCAD.mdb", "-fast", "C:\", 3)

und die Null wird bei dieser Fehlermeldung markiert!
Hast Du vielleicht ne Ahnung woran es liegen könnte?? :-)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

BerndE
Mitglied
Hochbautechniker


Sehen Sie sich das Profil von BerndE an!   Senden Sie eine Private Message an BerndE  Schreiben Sie einen Gästebucheintrag für BerndE

Beiträge: 557
Registriert: 05.07.2003

Revit 2013
ACA 2012 deutsch
BuildingOne 5.4.5
Win7
WindowsNetz

erstellt am: 23. Nov. 2005 10:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Dexta 10 Unities + Antwort hilfreich

Danke Fuchsi,
bekam deinen code aber erst zum laufen als ich aus der public eine private-deklaration machte.
bernd

------------------

Bernd

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

autogis
Mitglied
Dr.-Ing. E-Technik


Sehen Sie sich das Profil von autogis an!   Senden Sie eine Private Message an autogis  Schreiben Sie einen Gästebucheintrag für autogis

Beiträge: 185
Registriert: 09.02.2001

erstellt am: 25. Nov. 2005 14:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Dexta 10 Unities + Antwort hilfreich

Hallo Dexta,

hab ich Dich richtig verstanden, dass Du aus AutoCAD auf die Werte einer Access-Tabelle zugreifen willst? Wenn ja, arum dann nicht einfach über DAO?

Hier ml ein einfaches Beispiel, mit dem ein Block an den Positionen der Koordinaten aus einer ACCESS-Tabelle eingefügt wird. Bei mir funzt es mit ACCESS2000. Zunächst unter Extras--> Verweise "Microsoft DAO 3.6 Object Library" aktivieren und dann folgenden Code testen:

Dim DB As Database
Dim NamDb As String 'Name meiner ACCESS-DB mit Pfad
Dim Rs1 As Recordset
Dim SymIns (0 to 2) as Double 'für Einfügepunkt
Dim Sym as AcadBlocReference


NamDb = "D:\APPS\autoverm\AV_Tracks\TRACKS2000.MDB"
Set DB = OpenDatabase(NamDb)
Set Rs1 = DB.OpenRecordset("POI_STADAT")'Tabellenname
Rs1.MoveFirst 'Auf ersten Datensatz gehen
While Not Rs1.EOF
    SymIns(0) = Val(Rs1![poi_x_wgs]) 'poi_x_wgs ist der Spaltenname, der die X-Koordinate enthält
    SymIns(1) = Val(Rs1![poi_y_wgs])
    SymIns(2) = 0
    Set Sym = ThisDrawing.ModelSpace.InsertBlock(SymIns, "POI_DENKMAL", 1, 1, 1, 0)
    Sym.Layer = "POI_DENKMALE"
    Rs1.MoveNext'gehe zum nächsten Datensatz
Wend

Im Prinzip ist es also so, dass Du zunächst die DB öffnest, dann ein Recordset nimmst. In unserem Fall eine Tabelle, kann aber auch ne Abfrage sein. Um an die einzelnen Werte zu kommen mußt Du nur die Syntax mit den eckigen Klammern und dem Ausrufezeichen beachten.

Ich hoffe das hilft weiter. Viele Grüße - Peter

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz