Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1292to1296
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

Visual Basic

Visual Basic
11.01.2013 18:07:19
Thomas
Hallo liebe Experten!
Über das VBA Studio wurde eine Userform erstellt.
Mit Excel kein Problem. Funktioniert wunderbar.
Nun möchte ich aber über eine .exe Datei, erstellt über VBA Studio eine Exceltabelle öffen. Die Einträge in der Combobox und Textbox sollen dann in die Exceltabelle eingetragen werden. Ich hab´s mir natürlich einfach gemacht und einen Teil des Quellcodes einfach reinkopiert. Aber er erkennt Sheets nicht. Die Arbeitsmappe wird zwar geöffnet. Aber die Einträge werden nicht übernommen.
Könnt ihr mir bitte weiterhelfen?
Vielen Dank
Unten der erstellte Quellcode.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles  _
Button1.Click
Dim Projekt As New Object
Projekt = CreateObject("excel.application")
Projekt.Application.Workbooks.Open("c:\Exceldatei.xlsx")
Projekt.Visible = True
Dim ErsteFreieZeile As Integer
ErsteFreieZeile = Sheets("Liste_Klass").Range("A65536").End(xlUp).Offset(1, 0).Row 'Nächste  _
freie Zeile finden
Sheets("Liste_Klass").Cells(ErsteFreieZeile, 1) = ComboBox1.Text
Sheets("Liste_Klass").Cells(ErsteFreieZeile, 2) = ComboBox2.Text
Sheets("Liste_Klass").Cells(ErsteFreieZeile, 3) = TextBox1.Text 'Einträge aus Form übergeben
End Sub

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Visual Basic
11.01.2013 18:15:05
Hajo_Zi
vielleicht ist dies ein Ansatz von Mischa.
ublic Sub bestehendeMappeÖffnen()
On Error GoTo errhd
Dim str_Testmappenname As String
str_Testmappenname = App.Path & "\testmappe.xlsx"
If Dir(str_Testmappenname) = "" Then
MsgBox "Testmappe nicht gefunden: " & str_Testmappenname, vbExclamation
Exit Sub
End If
Dim objExcelApplication As Object
Set objExcelApplication = CreateObject("Excel.Application")
objExcelApplication.Visible = True
objExcelApplication.DisplayAlerts = True
objExcelApplication.ScreenUpdating = True
'objExcelApplication.WindowState = xlMaximized
'Öffnen zum bearbeiten:
With objExcelApplication
.Workbooks.Open str_Testmappenname, False, False
.Range("a1").Activate
End With
Set objExcelApplication = Nothing
Exit Sub
errhd:
Dim msg As String
msg = Err.Description
MsgBox msg, vbCritical, "Fehler: "
End Sub
ublic Sub NeueMappeErstellen()
On Error GoTo errhd
Screen.MousePointer = vbHourglass
Dim ExlApp As Excel.Application  'as Object
Set ExlApp = CreateObject("Excel.Application")
'erst nach Datenfüllung sichtbar machen, damit nicht vorher drin rumgeklickert wird:
ExlApp.Visible = False
'ExlApp.DisplayAlerts = False
'ExlApp.ScreenUpdating = False
Dim wkb As New Excel.Workbook
Set wkb = ExlApp.Workbooks.Add
'Überschriften
ExlApp.Cells(1, 1).Value = "Zelle A1"
ExlApp.Cells(1, 2).Value = Time
'erst nach Datenfüllung sichtbar machen, damit nicht vorher drin rumgeklickert wird:
ExlApp.Visible = True
ExlApp.ScreenUpdating = True
Set wkb = Nothing
Set ExlApp = Nothing
Screen.MousePointer = vbDefault
Exit Sub
errhd:
Dim msg As String
msg = Err.Description
MsgBox msg, vbCritical, "Fehler: "
End Sub

Anzeige
AW: Visual Basic
11.01.2013 18:38:51
ransi
HAllo Thomas
Ungestet:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles   _
_
Button1.Click
Dim Projekt As New Object
Dim WB
Projekt = CreateObject("excel.application")
WB=Projekt.Application.Workbooks.Open("c:\Exceldatei.xlsx")
Projekt.Visible = True
Dim ErsteFreieZeile As Integer
ErsteFreieZeile = wb.Sheets("Liste_Klass").Range("A65536").End(xlUp).Offset(1, 0).Row 'Nächste   _
_
freie Zeile finden
wb.Sheets("Liste_Klass").Cells(ErsteFreieZeile, 1) = ComboBox1.Text
wb.Sheets("Liste_Klass").Cells(ErsteFreieZeile, 2) = ComboBox2.Text
wb.Sheets("Liste_Klass").Cells(ErsteFreieZeile, 3) = TextBox1.Text 'Einträge aus Form übergeben
End Sub

...müsste eigentlich funktionieren.
ransi

Anzeige
AW: Visual Basic
11.01.2013 19:11:24
Thomas
Hallo ransi, hallo Hajo!
Werde es am Wochenende ausprobieren!
Euch vorab schon mal vielen Dank!
Schönes Wochenende
Thomas

AW: Visual Basic
12.01.2013 16:13:11
Thomas
Hallo Ransi, hallo Hajo!
Habe nun einen anderen Ansatz. Das neue Problem ist, dass ich eine Schleife brauch, damit immer die nächste freie Zeile gefüllt wird und nicht der alte Datensatz überschrieben wird. Hier mal der neue Quellcode.
Imports Microsoft.Office.Interop.Excel
Imports Microsoft.Office.Interop
hier mal der Code:
Dim Excel As Object
Dim Book As Object
Dim sheet As Object
Excel = CreateObject("excel.application")
Excel.Application.Workbooks.Open("c:\Exceldatei.xlsx")
Excel.Visible = True
Book = Excel.Workbooks.Add
sheet = Book.Worksheets(1)
sheet.Range("A1").Value = ComboBox1.Text
sheet.Range("B1").Value = ComboBox2.Text
sheet.Range("C1").Value = TextBox1.Text
'Save the Workbook and quit Excel
Bei "End(xlUp).Offset(1, 0).Row" hat er xlUp nicht akzeptiert.
Könnt ihr hier weiterhelfen.
Wie gesagt. Mache ich es über Excel VBA-Tool. Dann ist es ja kein Problem. Aber ich möchte das VBA-Studio etwas kennenlernen. Man kanns ja auch gut gebrauchen!!!
Gruß
Thomas

Anzeige
AW: Visual Basic
12.01.2013 16:16:58
Hajo_Zi
schön das Du auf Deinen Beitrag geantwortet hast, so sehen wir wenigstens nicht was Ransi und ich geschrieben haben.
' letzte belegte Zeile unabhängig von Excelversion für Spalte A (1)
LoLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
Gruß Hajo

AW: Visual Basic
12.01.2013 16:25:13
Thomas
Hallo Hajo.
Danke für deine schnelle Antwort.
Muss ich LoLetzte noch deklarieren? Z. B Dim LoLetzte As Cell?
Gruß
Thomas

AW: Visual Basic
12.01.2013 16:27:11
Hajo_Zi
Hallo Thomas,
as Long da 1.048.576 Zeilen.
Gruß Hajo

Anzeige
AW: Visual Basic
12.01.2013 16:37:08
Thomas
Hallo Hajo!
d. h., der Quelltext schaut aufgrund deiner Ergänzungen dann so aus:
Dim Excel As Object
Dim Book As Object
Dim sheet As Object
Dim LoLetzte As Long
Excel = CreateObject("excel.application")
Excel.Application.Workbooks.Open("c:\Exceldatei.xlsx")
Excel.Visible = True
Book = Excel.Workbooks.Add
sheet = Book.Worksheets(1)
LoLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
sheet.Range("A1").Value = ComboBox1.Text
sheet.Range("B1").Value = ComboBox2.Text
sheet.Range("C1").Value = TextBox1.Text
'Save the Workbook and quit Excel

Anzeige
AW: Visual Basic
12.01.2013 16:40:43
Hajo_Zi
dazu kann ich nichts schreiben ich bin nicht der VB Mensch, ich hätte vermutet da fehlt der Bezug zur Application.
Gruß Hajo

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige