Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Nach Datenübergabe von Access 2010 nach Excel 2010 in Excel leere Zeilen löschen

Begonnen von NewDigger1970, März 02, 2016, 14:08:48

⏪ vorheriges - nächstes ⏩

NewDigger1970

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!
Viele Grüße
Peter

MaggieMay

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?
Freundliche Grüße
MaggieMay

NewDigger1970

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

Viele Grüße
Peter

MaggieMay

Und warum schreibst du die Fußzeile nicht auch aus Access heraus in die Tabelle?

Zeig doch bitte mal deinen bisherigen Code hierzu.
Freundliche Grüße
MaggieMay

NewDigger1970

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!
Viele Grüße
Peter

MaggieMay

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.
Freundliche Grüße
MaggieMay

NewDigger1970

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.
Viele Grüße
Peter

MaggieMay

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.
Freundliche Grüße
MaggieMay

NewDigger1970

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
Viele Grüße
Peter