Hallo liebe Forenmitglieder und Gäste,
ich habe ein Problem. Ich habe eine Übergabe von Daten mit einer temporären Abfrage an Excel. Da sich aus diesen Daten ein Lieferschein ergibt, habe ich viele leere Zeilen in der Vorlage. Jetzt möchte ich von Acces aus die Leeren Zeilen des Lieferscheins löschen. Jemand eine Idee?
Danke im Voraus!
Hallo,
ZitatDa sich aus diesen Daten ein Lieferschein ergibt, habe ich viele leere Zeilen in der Vorlage.
kannst du das bitte genauer erklären? Woher kommen die leeren Zeilen, kann man das nicht verhindern?
Hallo MeggieMay,
die leeren Zeilen habe ich in die Vorlage eingefügt, da eine "Fußzeile" nötig ist, die sich mit der Excel Fußzeile nicht realisieren lässt. Leider kann ich aber auch nicht abschätzen, wieviele Artikel auf den Lieferschein müssen. Bei einer Baustelleneinrichtung können das schon einige werden!
Es ginge natürlich auch, die Zeilen automatisch hinzu zu fügen ..... Leider entzieht sich aber auch das meiner Kenntnis!
Viele Grüße
Peter
Und warum schreibst du die Fußzeile nicht auch aus Access heraus in die Tabelle?
Zeig doch bitte mal deinen bisherigen Code hierzu.
So, nun auch hier ......
Private Sub TransferToExcel4()
Dim Excel_Application As Object
Dim Excel_WorkBook As Object
Dim Excel_WorkSheet As Object
Dim RS As DAO.Recordset, intI As Integer
Dim txtNokiaDatei
Dim z As Integer
Dim sFilename As String
Dim strDate As String
Dim sOrdner As String
Dim sSQL As String
Dim qdf As DAO.QueryDef
Dim strBelegnr As String
Dim lngSpalte As Long
Dim x As Integer
Dim xlApp As Object
Dim xlWb As Object
Dim Zeile As Long
strBelegnr = InputBox("Bitte Lieferscheinnummer eintragen: ", , "LS " & "")
strDate = Date
sFilename = "E:\MV2016\MV2016_End\Export\Lieferschein.xltm"
'// Excel-Beziehung erstellen
Set Excel_Application = CreateObject("Excel.Application")
Excel_Application.Application.Visible = True
'// Workbook definieren und Register auswählen
Set Excel_WorkBook = Excel_Application.workbooks.Open(sFilename)
'Set Excel_WorkBook = Excel_Application.Workbooks.Add(sFilename)
Set Excel_WorkSheet = Excel_WorkBook.Worksheets("Lieferschein")
'// Daten befüllen
Excel_WorkSheet.Cells(8, 3).Value = strBelegnr
Excel_WorkSheet.Cells(9, 7).Value = Date
sSQL = "SELECT * " & _
"FROM " & Me![sfmBestellungen].Form.RecordSource & _
" WHERE " & Me![sfmBestellungen].Form.Filter
On Error Resume Next
DoCmd.DeleteObject acQuery, "tmpAbfrage4"
On Error GoTo 0
Set qdf = CurrentDb.CreateQueryDef("tmpAbfrage4", sSQL)
Set RS = CurrentDb.OpenRecordset(sSQL)
RS.MoveFirst
z = 29
While Not RS.EOF
Excel_WorkSheet.Cells(25, 3) = RS("KostSt")
Excel_WorkSheet.Cells(z, 1) = RS("AnzBest")
Excel_WorkSheet.Cells(z, 2) = RS("Bezeichnung") & ", " & RS("Typ") & ", " & RS("Zollidentnr") & ", " & RS("NetGewicht")
z = z + 1
RS.MoveNext
Wend
Excel_Application.DisplayAlerts = False ' Warnungen deaktivieren
Excel_Application.ScreenUpdating = False
x = 998
With Excel_WorkSheet
Do Until x = 39
If .Cells(x, 1) = "" Then
.Rows(x).Delete
x = x - 1
End If
Loop
End With
sOrdner = "E:\MV2016\MV2016_End\Lieferscheine\"
txtNokiaDatei = Excel_Application.GetSaveAsFilename _
(sOrdner & strBelegnr, "Micrsoft Excel-Dateien (*.xlsx),*.xlsx")
If txtNokiaDatei = False Then
MsgBox "Fehler bei der Dateispeicherung"
End If
Excel_WorkBook.SaveAs txtNokiaDatei
Excel_WorkBook.Close
Excel_Application.Quit
End Sub
Danke für die Hilfe!
Habe mit der Löschfunkion schon etwas "herumgespielt", bekomme aber jetzt den Laufzeitfehler 424 Objekt nicht gefunden!
Hi,
was hast du dir dabei gedacht: [color=red]x = 998[/color]
With xlWsh
Do Until x = 39
If .Cells(x, 1) = "" Then
.Rows(x).Delete
x = x - 1
End If
Loop
End With
Hast du tatsächlich so viele leere Zeilen eingefügt?
Und was hat es mit der 39 auf sich? Hier muss "z" ins Spiel kommen.
So vielleicht:
With xlWsh
For x = 998 To z Step -1
If .Cells(x, 1) = "" Then
.Rows(x).Delete
End If
Loop
End With
BTW:
Code bitte stets in Code-Tags einfügen und auf (überflüssige) Leerzeilen verzichten.
Hallo ,
habe ich vergessen meinen Newiestatus zu erwähnen?
Die 998 ist gerade (zum Test) die Statrzeile ! (Löschen rückwärts)
Werde Deinen Vorschlag morgen testen. Das mit den Codetags ist mir noch nicht ganz klar, werde mich aber schlau machen.
Wie sieht denn die Vorlage aus, wo befindet sich die Fußzeile und bis zu welcher Zeile sollen Leerzeilen gelöscht werden?
Für die Code-Tags gibt es einen Button im Antwort-Fenster, wenn du nicht die Schnellantwort benutzt.
Hallo MaggieMay,
Ich danke Dir! Nach kleinen Anpassungen läuft es!!!!!!!! ;D
Die 39 sollte die letzte zu prüfende Zeile sein!
Damit das erste Blatt, sofern nur eines bemötigt wird nicht halb leer ist!
Finde ich optisch dann nicht ansprechend!
Jetzt bin ich fast Durch mit der DB!!!!!
Endlich!!!!!
Ich habe noch eine Aktualisierung des Lieferscheins hinzugefügt und die Zeilenzahl dramatisch verringert.
Ich wollte, da ich keine Erfahrung damit habe, die Zeit sehen, die eine solche Aufgabe benötigt. Also Erfahrung sammeln!
Danke für die schnelle und kompetente Hilfe
Gruß Peter