| |
 | Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
|
Autor
|
Thema: Werte aus VBA in EXCEL-Tabelle eintragen (1419 mal gelesen)
|
Günther Frischbier Mitglied EDV-Organisator

 Beiträge: 62 Registriert: 11.02.2002 AutoCAD Mechanical 2012 64-Bit Windows 7 Enterprise Microsoft Visual Studio 2010 Express / Microsoft .NET Framework Version 4.0.30319 RTMRel
|
erstellt am: 24. Aug. 2005 09:52 <-- editieren / zitieren --> Unities abgeben:         
Hallo Forum, Ich habe in VBA ein Berechnungsprogramm geschrieben, welches die Ergebnisdaten in AutoCAD-Zeichnungen einträgt. Klappt alles wunderbar. Die Ergebnisdaten sollen aber zusätzlich in eine vorhandene EXCEL-Tabelle eingetragen und später wieder ins VBA-Formular eingelesen werden. Da ich ein Anfänger in VBA bin, fehlt mir an dieser Stelle das Hintergrundwissen. Hier das Problem, welches es gilt zu lösen: Dim P, n, M as String P = "300" n = "4.0" M = "328" Jetzt sollte eine vorhandene EXCEL-Tabelle "Ergebnisse.xls" geöffnet werden und die Ergebnisdaten am Ende angehängt werden. Die Daten für P ("300") sollen nun am Ende der Datei in Spalte B, die für n ("4.0") in Spalte C usw. eingetragen werden. Anschließend ist die EXCEL-Tabelle wieder zu schließen. Der nächste Schritt wäre das zeilenweise Auslesen der Daten aus der EXCEL-Tabelle und Eintragen in das VBA-Formular, um ggfs. mit teilweise veränderten Eingaben die Berechnung erneut durchführen zu können, ohne jedesmal die kpl. Eingaben (ca. 60) machen zu müssen. Wer kann helfen und mir den Quellcode für mein Problem nennen?
------------------ Gruss Günther Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nepumuk Mitglied Entwicklungsleiter
 
 Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 24. Aug. 2005 10:14 <-- editieren / zitieren --> Unities abgeben:          Nur für Günther Frischbier
|
Günther Frischbier Mitglied EDV-Organisator

 Beiträge: 62 Registriert: 11.02.2002 AutoCAD Mechanical 2012 64-Bit Windows 7 Enterprise Microsoft Visual Studio 2010 Express / Microsoft .NET Framework Version 4.0.30319 RTMRel
|
erstellt am: 24. Aug. 2005 10:18 <-- editieren / zitieren --> Unities abgeben:         
Hallo, Aus AutoCAD heraus starte ich VBA (_vbaload, _vbarun) und möchte die genannten Aktionen durchführen. Danach wird das VBA-Programm wieder geschlossen (_vbaunload). ------------------ Gruss Günther Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nepumuk Mitglied Entwicklungsleiter
 
 Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 24. Aug. 2005 10:42 <-- editieren / zitieren --> Unities abgeben:          Nur für Günther Frischbier
Hallo Günther, AutoCAD - VBA hmm. Da kennt sich startrek besser aus. Aber versuch es mal so, das funktioniert zumindest aus VB heraus: Private Sub Main() Dim P As String, n As String, M As String P = "300" n = "4.0" M = "328" Dim xlApp As Object Dim xlWbk As Object Dim xlWks As Object Dim lngLastRow As Long On Error Resume Next Set xlApp = CreateObject(Class:="Excel.Application") On Error GoTo Err_exit If Err.Number <> 0 Then _ Err.Raise Number:=vbObjectError + 1, _ Description:="Excelinstanz kann nicht erstellt werden." Set xlWbk = xlApp.Workbooks.Open("C:\Ergebnisse.xls") Set xlWks = xlWbk.Worksheets("Tabelle1") With xlWks lngLastRow = .Cells(.Rows.Count, 2).end(-4162).Row + 1 .Cells(lngLastRow, 2).Value = P .Cells(lngLastRow, 3).Value = n .Cells(lngLastRow, 4).Value = M End With xlWbk.Save xlApp.Quit Set xlWks = Nothing Set xlWbk = Nothing Set xlApp = Nothing End Err_exit: MsgBox "Fehler " & CStr(Err.nnumber) & vbLf & vbLf & Err.Description End Sub ------------------ Gruß Nepumuk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nepumuk Mitglied Entwicklungsleiter
 
 Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 24. Aug. 2005 10:44 <-- editieren / zitieren --> Unities abgeben:          Nur für Günther Frischbier
|
Günther Frischbier Mitglied EDV-Organisator

 Beiträge: 62 Registriert: 11.02.2002 AutoCAD Mechanical 2012 64-Bit Windows 7 Enterprise Microsoft Visual Studio 2010 Express / Microsoft .NET Framework Version 4.0.30319 RTMRel
|
erstellt am: 24. Aug. 2005 13:34 <-- editieren / zitieren --> Unities abgeben:         
Hallo Nepumuk, Danke für die schnelle Antwort. Es funktioniert klasse, ganz so wie ich es mir vorgestellt habe. Unities sind unterwegs! Könntest Du mir ebnfalls verraten, wie ich die Daten eines ausgewählten Datensatzes der EXCEL-Tabelle in mein VBA-Formular bekomme? Danke nochmals! ------------------ Gruss Günther Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nepumuk Mitglied Entwicklungsleiter
 
 Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 24. Aug. 2005 13:45 <-- editieren / zitieren --> Unities abgeben:          Nur für Günther Frischbier
Hi Günther, genauso wie du sie rein bekommst, nur anders herum. Also an Stelle von: .Cells(lngLastRow, 2).Value = P einfach P = .Cells(deineZeile, 2).Value Ich weiß nur nicht, nach welchem Kriterium der Datensatz ausgewählt werden soll. ------------------ Gruß Nepumuk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Günther Frischbier Mitglied EDV-Organisator

 Beiträge: 62 Registriert: 11.02.2002 AutoCAD Mechanical 2012 64-Bit Windows 7 Enterprise Microsoft Visual Studio 2010 Express / Microsoft .NET Framework Version 4.0.30319 RTMRel
|
erstellt am: 24. Aug. 2005 13:56 <-- editieren / zitieren --> Unities abgeben:         
Hallo Nepumuk, Ich stelle mir vor, das die Zeilennummer des Datensatzes der EXCEL-Tabelle im VBA-Programm eingegeben wird, nach dem Motto "Welche Zeile der EXCEL-Tabelle soll eingelesen werden?". Der Konstrukteur hat die EXCEL-Tabelle geöffnet, um Daten nach gewünschten Kriterien zu finden. Hat er einen gefunden, der den Kriterien am ehersten entspricht, merkt er sich die Zeilennummer und gibt im VBA-Programm die Zeilennummer ein. ------------------ Gruss Günther Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nepumuk Mitglied Entwicklungsleiter
 
 Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 24. Aug. 2005 14:45 <-- editieren / zitieren --> Unities abgeben:          Nur für Günther Frischbier
Hi Günther, das meinst du jetzt aber nicht im Ernst? Oder willst du den Fauskeil wieder einführen? Option Explicit Private Sub Main() Dim P As String, n As String, M As String Dim xlApp As Object Dim xlWbk As Object Dim xlWks As Object Dim varRange As Variant On Error Resume Next Set xlApp = CreateObject(Class:="Excel.Application") On Error GoTo Err_exit If Err.Number <> 0 Then _ Err.Raise Number:=vbObjectError + 1, _ Description:="Excelinstanz kann nicht erstellt werden." Set xlWbk = xlApp.Workbooks.Open("C:\Ergebnisse1.xls") xlWbk.Worksheets("Tabelle1").Select xlApp.Visible = True On Error Resume Next Do varRange = xlApp.InputBox(Prompt:="Bitte wählen sie einen Bereich.", _ Title:="Auswahl", Type:=8) If VarType(varRange) = 8204 Then P = CStr(varRange(1, 1)) n = CStr(varRange(1, 2)) M = CStr(varRange(1, 3)) Else Exit Do End If If Err.Number = 0 Then Exit Do MsgBox "Wählen sie einen Bereich von" & _ " Spalte B bis Spalte D in einer Zeile!", 48, "Hinweis" Err.Clear Loop Ende: xlApp.Quit Set xlWks = Nothing Set xlWbk = Nothing Set xlApp = Nothing End Err_exit: MsgBox "Fehler " & CStr(Err.Number) & vbLf & vbLf & Err.Description Resume Ende End Sub ------------------ Gruß Nepumuk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Günther Frischbier Mitglied EDV-Organisator

 Beiträge: 62 Registriert: 11.02.2002 AutoCAD Mechanical 2012 64-Bit Windows 7 Enterprise Microsoft Visual Studio 2010 Express / Microsoft .NET Framework Version 4.0.30319 RTMRel
|
erstellt am: 14. Sep. 2005 08:49 <-- editieren / zitieren --> Unities abgeben:         
Hallo Nepumuk, Vielen Dank für deinen Programmvorschlag. Ist natürlich die bessere Lösung, funktioniert einwandfrei, also packen wir den Faustkeil wieder weg! Untities sind unterwegs! Doch nun noch eine Frage: Mein VBA-Programm besteht aus mehreren Registern zur Dateneingabe, zur Druckausgabe, zur Ergebnisdarstellung und Dokumentation. Um die ausgewählten Excel-Daten in meinem Formular zu sehen, muß ich vom Register "Berechnungen & Ergebnisse" (dort befindet sich der Schalter zum Übertragen der Excel-Daten) auf das Register "Eingabedaten" schalten. Kannst Du mir dafür die Befehlssequenz nennen? ------------------ Gruss Günther Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nepumuk Mitglied Entwicklungsleiter
 
 Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 14. Sep. 2005 10:38 <-- editieren / zitieren --> Unities abgeben:          Nur für Günther Frischbier
|