Tabelle mit Ein- und Ausgabe + Speichern einzelner Seite

Dieses Thema Tabelle mit Ein- und Ausgabe + Speichern einzelner Seite im Forum "Microsoft Office Suite" wurde erstellt von ArcaneLion, 30. Aug. 2004.

Thema: Tabelle mit Ein- und Ausgabe + Speichern einzelner Seite Mal wieder ein neues lustiges Problem: Für eine Nachkalkulation soll eine Tabelle erstellt werden. Auf der ersten...

  1. Mal wieder ein neues lustiges Problem:

    Für eine Nachkalkulation soll eine Tabelle erstellt werden.

    Auf der ersten Seite sollen die Werte eingegeben werden.
    Auf der zweiten Seite soll der Tabelle eine neue Zeile hinzugefügt werden. Zudem sollen die Zeilen dieser Tabelle dann auch gleich automatisch nadem dem Jahr und der Kalenderwoche sortiert werden.

    Auf der dritten Seite soll eine Ausgabe stattfinden.
    Eine gewählte Zeile Aus der Tabelle soll dort ein Druckbares Forumular ergeben, dass die Werte der markierten Zeile enthält (man muss eine Zeile die übertragen werden soll irgentwie auswählen können). Zudem soll dieses Formular noch abspeicherbar sein (in eine einzelne neue Exceldatei).

    Ich habe mal ne Beispielsdatei hochgeladen um die Sache zu verdeutlichen.

    www.ArcaneLion.com/Problem2.xls

    Es ist wie gesagt nur eine Beispielsdatei. Die eigentliche Ein- und Ausgabe wird dann ander strukturiert und zudem auch größer...

    Ist das Überhaupt so einfach möglich?
    Das Hauptproblem ist, dass ich von Makros keinen Peil habe!

    Danke schonmal!

    ---

    Kleine Änderung:
    Solch eine Tabelle liegt sogar schon vor.
    Die Eingabe und das erstellen der Tabelle funktioniert Problemlos.
    Was jedoch fehlt ist das Erstellen der Ausgabe (von Tabelle -> druckbaren/speicherbares Formular)!
     
  2. Hallo ArcaneLion,

    ich hab mal in die Beispieldatei einen Makro (siehe unten geschrieben),
    der das->Ausgabe'-Blatt in eine separate Datei kopiert.
    Die Datei wird in das Verzeichnis der Ausgangsdatei gespeichert.
    Der DateiName ist->separateAusgabe.xls'.
    Hier muß man überlegen, wie man den Dateinamen eindeutig macht,
    so dass die Datei nicht immer wieder überschrieben wird.

    (Mail ist unterwegs)

    Gruß Matjes :)

    Code:
    Option Explicit
    
    'Pfad in dem
    Public Sub BlattAusgabeInDateiSpeichern()
    
      Dim ws As Worksheet, wb2 As Workbook, ws2 As Worksheet
      Dim neuer_Dateiname As String
      Dim c_Path_export As String
    
      Set ws = ActiveWorkbook.Worksheets(Ausgabe)
     ->für den SpeicherPfad wird der Pfad des aktuellen Dokumnets
     ->ausgelesen
     ->hier kann auch ein Auswahldialog->Ordner' benutzt werden um einen
     ->Speicher-Pfad zuzuweisen
      c_Path_export = ActiveWorkbook.Path
    
     ->neue Mappe erzeugen
      Set wb2 = Workbooks.Add
    
      ws.Copy Before:=wb2.Sheets(1)
    
     ->überflüssige Blatter löschen
     ->Nachfrage bei delete abstellen
      Application.DisplayAlerts = False
      For Each ws2 In wb2.Worksheets
        If ws2.Name <> Ausgabe Then ws2.Delete
      Next
      Application.DisplayAlerts = True
    
     ->neue Mappe speichern
     ->Zielnamen festlegen
     ->hier muß überlegt werden unter welchem eindeutigen Namen
     ->die files abgelegt werden sollen - entsprechend muß der
     ->Dateiname gesetzt werden
     ->in diesem Beispiel fest separateAusgabe.xls
    
      wb2.SaveAs FileName:=c_Path_export & \ & separateAusgabe.xls
      wb2.Close Savechanges:=False
    
      Set ws2 = Nothing: Set wb2 = Nothing: Set ws = Nothing
    End Sub
    
     
  3. Auch dieses Makro erweisst sich absolut genial!!

    Ich bin von Makros sowieso schon immer begeistert, da ich selbst keinen Peil von habe...wollten wir mal in der Schule während meiner Ausbildung anfangen, haben wir aber leider nie gemacht...

    Die letzte Frage die sich mir hier jetzt noch stellt:

    Gibt es eine Möglichkeit Excel dazu zu bringen auf der dritten Seite, der Ausgabe, Daten anzuzeigen die ich auf der zweiten Seite (in der Tabelle) markiere?

    ---

    Ich habs grade selber so halbwegs hingekiregt!!

    Ich habe ein Makro aufgezeichnet, dass die von mir Makierte Zeile auf die Ausgabeseite kopiert. Dort in eine Zeile mit weisser schristfarbe, und aus dieser Zeile hole ich mir dann die Werte!

    Als falls wer ne Bessere Idee hat...
     
  4. Hallo ArcaneLine,

    weiterer Beispiel-Makro kommt heute abend per mail.

    Gruß Matjes :)
     
  5. Hallo ArcaneLion,

    hier die Version mit
    Public Sub DatenMarkierterZeileInBlattAufgabenUebernehmen()
    'Uebernahme der Daten aus einer markierten Zeile
    'des Blattes->Tabelle' in das Blatt->Ausgabe.
    'Pruefungen:
    'a) aktives Blatt, Name='Tabelle', nein -> Fehlermeldung, Abbruch
    'b) mehr als eine Zeile markiert -> Fehlermeldung
    'c) Zielblatt vorhanden , nein -> Fehlermeldung

    Wenn Du weitere Fragen hast, melde dich.

    Gruß Matjes :)

    Code:
    Option Explicit
    
    Public Sub DatenMarkierterZeileInBlattAufgabenUebernehmen()
    'Uebernahme der Daten aus einer markierten Zeile
    'des Blattes->Tabelle' in das Blatt->Ausgabe.
    'Pruefungen:
    'a) aktives Blatt, Name='Tabelle', nein -> Fehlermeldung, Abbruch
    'b) mehr als eine Zeile markiert -> Fehlermeldung
    'c) Zielblatt vorhanden , nein -> Fehlermeldung
    
    'Definitionen zum Quellblatt
    Const c_TabName_Quelle = Tabelle
    '*** Quelle Spaltennr
    Const c_qSP_Jahr = 1
    Const c_qSP_KW = c_qSP_Jahr + 1
    Const c_qSP_Anz = c_qSP_KW + 1
    Const c_qSP_Preis = c_qSP_Anz + 1
    Const c_qSP_Std1 = c_qSP_Preis + 1
    Const c_qSP_Std2 = c_qSP_Std1 + 1
    Const c_qSP_leer1 = c_qSP_Std2 + 1
    Const c_qSP_Mat = c_qSP_leer1 + 1
    Const c_qSP_Gew1 = c_qSP_Mat + 1
    Const c_qSP_Gew2 = c_qSP_Gew1 + 1
    
    'Definition zum Zielblatt
    Const c_TabName_Ziel = Ausgabe
    '*** Ziel Spalten/Zeilennr
    Const c_zZ_Jahr = 7: Const c_zSP_Jahr = 1
    Const c_zZ_KW = 7: Const c_zSP_KW = 2
    Const c_zZ_Mat = 7: Const c_zSP_Mat = 4
    Const c_zZ_Gew1 = 7: Const c_zSP_Gew1 = 5
    Const c_zZ_Gew2 = 7: Const c_zSP_Gew2 = 6
    Const c_zZ_Anz = 12: Const c_zSP_Anz = 1
    Const c_zZ_Preis = 12: Const c_zSP_Preis = 2
    Const c_zZ_Std1 = 16: Const c_zSP_Std1 = 1
    Const c_zZ_Std2 = 16: Const c_zSP_Std2 = 2
    
    Dim r As Range, x As Range, l_znr As Long
    Dim wsq As Worksheet, wsz As Worksheet, b_found As Boolean
    
    'Selection erstmal sichern
    Set x = Selection
    
    'a) aktives Blatt, Name='Tabelle', nein -> Fehlermeldung, Abbruch
    If ActiveSheet.Name <> c_TabName_Quelle Then
      MsgBox ( _
        Blatt-> & c_TabName_Quelle & _
       -> ist nicht aktives Blatt & vbLf & _
        Abbruch :-()
      Exit Sub
    End If
    
    Set wsq = ActiveWorkbook.Worksheets(c_TabName_Quelle)
    
    'b) mehr als eine Zeile markiert -> Fehlermeldung
    l_znr = 0
    For Each r In x
      If l_znr = 0 Then l_znr = r.Row
      If l_znr <> r.Row Then
        MsgBox ( _
          keine oder mehrer Zeilen markiert. & vbLf & vbLf & _
          Bitte eine Zeile markieren)
        l_znr = 0
        Exit For
      End If
    Next
    
    If l_znr <> 0 Then
    'c) Zielblatt vorhanden , nein -> Fehlermeldung
      b_found = False
      For Each wsz In ActiveWorkbook.Worksheets
        If wsz.Name = c_TabName_Ziel Then b_found = True: Exit For
      Next
      If b_found = True Then
     ->quelle und Ziel vorhanden -> loslegen mit Kopieren
      Set wsz = ActiveWorkbook.Worksheets(c_TabName_Ziel)
      
      wsz.Cells(c_zZ_Jahr, c_zSP_Jahr).Value = _
        wsq.Cells(l_znr, c_qSP_Jahr).Value
      wsz.Cells(c_zZ_KW, c_zSP_KW).Value = _
        wsq.Cells(l_znr, c_qSP_KW).Value
      wsz.Cells(c_zZ_Mat, c_zSP_Mat).Value = _
        wsq.Cells(l_znr, c_qSP_Mat).Value
      wsz.Cells(c_zZ_Gew1, c_zSP_Gew1).Value = _
        wsq.Cells(l_znr, c_qSP_Gew1).Value
      wsz.Cells(c_zZ_Gew2, c_zSP_Gew2).Value = _
        wsq.Cells(l_znr, c_qSP_Gew2).Value
      wsz.Cells(c_zZ_Anz, c_zSP_Anz).Value = _
        wsq.Cells(l_znr, c_qSP_Anz).Value
      wsz.Cells(c_zZ_Preis, c_zSP_Preis).Value = _
        wsq.Cells(l_znr, c_qSP_Preis).Value
      wsz.Cells(c_zZ_Std1, c_zSP_Std1).Value = _
        wsq.Cells(l_znr, c_qSP_Std1).Value
      wsz.Cells(c_zZ_Std2, c_zSP_Std2).Value = _
        wsq.Cells(l_znr, c_qSP_Std2).Value
     
      Else
        MsgBox ( _
          Blatt-> & c_TabName_Ziel & _
         -> in aktiver Arbeitsmappe nicht vorhanden & vbLf & _
          Abbruch :-()
      End If
    End If
    On Error Resume Next
    Set wsq = Nothing: Set wsz = Nothing
    On Error GoTo 0
    End Sub
    
     
  6. So, eine Letzte Frage zu dem Thema:

    wb2.SaveAs FileName:=c_Path_export & \ & Neue Datei.xls

    Kann ich hier als Namen den Wert einer Zelle einfügen?

    Soweit mal wieder vielen, vielen Dank.
    Ich bin grade dran die Tabelle endfertig zu machen!
     
  7. Hallo ArcaneLion,

    dies ist schon möglich. Sollte nur immer gewährleistet sein, daß dies auch zulässige Zeichen für einen Dateinamen sind. (Nichts ist auch nicht zulässig ! ;D)
    Ach sollte der Wert vorher einer String-Variablen zugewiesen werden.

    Beispiel:

    Code:
    Dim s_tmp As String
    s_tmp = Ausgabe_ & ActiveWorkbook.Worksheets(Ausgabe).Cells(2, 6).Value & .xls
    wb2.SaveAs FileName:=c_Path_export & \ & s_tmp
    
    Gruß Matjes :)
     
  8. :)
     
Die Seite wird geladen...

Tabelle mit Ein- und Ausgabe + Speichern einzelner Seite - Ähnliche Themen

Forum Datum
Excel Tabelle Werte zu ordnen Microsoft Office Suite 23. Sep. 2016
Einzelne Zeilen aus Tabelle Drucken. StarOffice, OpenOffice und LibreOffice 15. März 2016
Excel 2013 SVERWEIS ergibt bei Tabellenübergreifender Nutzung 0 Microsoft Office Suite 16. Sep. 2015
Excel Tabellen erstellen mit mehreren Prüfungen Microsoft Office Suite 28. Juli 2015
Fußballtabelle Excel #NV Windows 8 Forum 1. Apr. 2015