Hallo,
evtl kann mir hier jemand von Euch weiterhelfen!
Ich arbeite in einem Treppenfachbetrieb und habe für unsere Verpackung eine Packliste in Excel erstellt. Zu jeder Treppe gehören logischerweise auch Plegeanleitungen für die verschiedenen Oberflächen. Bsp. Lack, Öl, Wachs, etc.
Wenn ich jetzt im Excel in meiner Eingabemaske, Bsp. Feld A1 Wasserlack eingebe, sollte mir Excel das entsprechende Arbeitsblatt (Pflegehinweise für Wasserlack), welches sich in der gleichen Exceldatei befindet, zusätzlich und automatisch zu meiner Packliste ausdrucken.
Vielleicht weiß jemand wie man das einstellt oder wie ich das mit VBA herbekomme. Vielleicht ist es auch möglich ein Worddokument mit dem Excel zu verknüpfen, so dass der Ausdruck der Pflegehinweise automatisch abläuft.
For Each wks In ActiveWorkbook.Worksheets
If Len(Trim(wks.Cells(7, 4).Text)) > 0 Then
wks.PrintOut
End If
Next
End Sub
Probier mal eine Makro damit zu erstellen. In der IF Abfragen muss Du natürlich keinen Namen abfragen, also IF A1=„Wasserlack“ Then..
Eventuell muss Du noch dem wks vorher den Namen des Sheets zuweisen.
Gruß Armin
Im BeforePrint-Ereignis der Mappe könntest Du den Inhalt deiner Zelle prüfen und je nach Inhalt dann zuerst deine anderen Tabellenblätter drucken und dann mit dem eigentlichen weiterfahren.
In der Sheets(Array( sind die Blätter die ausgedruckt werden. Je nach selektiertem Wert sieht der Ausdruck anders aus. Kombiniere diesen Befehl mit der sogenannten Select Case Rutine und Du bist am Ziel.
Grüsse Sebastian
Hallo Sebastian,
danke für die Antwort.
Kannst du den Code noch ein bisschen umbauen?
So wie das jetzt ist, sind es ja fixe Tabellenblätter die durch einen Drucken-Button ausgelöst werden?!
Ich möchte gern dass der Button folgendes macht:
Steht in Zelle A1 „Lack“, soll er mir zusätzlich zu Tabellenblatt 1 auch Tabellenblatt 2 ausdrucken. Steht in Zelle A1 „Öl“, soll mir der Button Tabellenblatt 1 und Tabellenblatt 3 ausdrucken. Tabellenblatt 1 ist in dem Fall die Eingabemaske. Es wäre schön wenn du gleich diese Begriffe wie Lack, Öl und meine 3 Tabellenblätter in den Code integrierst damit ich das auch verstehen kann…
erstelle dir am besten eine Liste der Materialien und den zugehörigen Pflegeanleitungen auf einem separaten Tabellenblatt.
Per Formel kannst du dann die zum gewälten Material gehörige Pflegeanleitung ermitteln.
Tabellenblattname: Pflegeanleitungen
A B C
1 gewähltes Material Verzeichnis Word-Dokumente: C:\Users\Public\Test
2 Wasserlack Pflege Wasserlack Pflege Wasserlack.docx
3
4 Material Treppe Tabelle mit Pflegeanleitung Worddokument
5 Wasserlack Pflege Wasserlack Pflege Wasserlack.docx
6 Naturholz Pflege Naturholz Pflege Naturholz.docx
7 Wachs Pflege Wachs Pflege Wachs.docx
8 Öl Pflege Öl Pflege Öl.docx
9 verzinkt Pflege verzinkt Pflege verzinkt.docx
10 Edelstahl Pflege Edelstahl Pflege Edelstahl.docx
11
12
Benutzte Formeln:
A2: =Packliste!A1
B2: =SVERWEIS(A2;A5:B20;2;FALSCH)
C2: =SVERWEIS(A2;A5:C20;3;FALSCH)
Namen in der Tabelle:
AuswahlMaterial: =Pflegeanleitungen!$A$5:blush:A$20
Mit den nachfolgenden Makros kannst du dann beide Tabellen bzw. Packliste und Worddokument in einem Rutsch drucken. Die Namen der Tabellen und Zellen musst du ggf. anpassen.
Gruß
Franz
Sub Drucken\_mit\_Pflegeanleitung()
'Drucken von Packliste und zugehörigem Tabellenblatt mit Pflegeanleitung
Dim wksPflege As Worksheet, strPflege As String
On Error GoTo Fehler
strPflege = Worksheets("Pflegeanleitungen").Range("B2")
Set wksPflege = Worksheets(strPflege)
ActiveWorkbook.Sheets(Array("Packliste", strPflege)).PrintOut Preview:=True
Fehler:
With Err
If .Number = 0 Then
'alles OK
Else
MsgBox "Tabelle """ & strPflege & """ mit Pflegeanleitung fehlt", \_
vbInformation + vbOKOnly, "Fehler im Makro ""Drucken\_mit\_Pflegeanleitung"""
End If
End With
End Sub
Sub Drucken\_mit\_Word\_Pflegeanleitung()
'Drucken von Packliste und Word-Pflegeanleitung
Dim wdDoc As Object 'Word.Document
Dim wdApp As Object 'Word.Application
Dim strPflege As String
On Error GoTo Fehler
With Worksheets("Pflegeanleitungen")
strPflege = .Range("C1") & "\" & .Range("C2")
End With
If Dir(strPflege) "" Then
If MsgBox("Tabelle ""Packliste"" mit Pflegeanleitung """ & strPflege & """ drucken?", \_
vbQuestion + vbOKCancel, " Packliste + Pflegeanleitung drucken") = vbOK Then
ActiveWorkbook.Sheets("Packliste").PrintOut
Set wdDoc = VBA.GetObject(Pathname:=strPflege)
Set wdApp = wdDoc.Application
wdDoc.Application.Visible = True
wdDoc.PrintOut
wdDoc.Close savechanges:=False
wdApp.Quit
End If
Else
MsgBox "Worddkument """ & strPflege & """ mit Pflegeanleitung fehlt", \_
vbInformation + vbOKOnly, "Fehler im Makro ""Drucken\_mit\_Pflegeanleitung"""
End If
Fehler:
With Err
If .Number = 0 Then
'alles OK
Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End If
End With
End Sub
Hast du denn die Tabelle1? Sie wird im VBA Editor als tabelle 1 bezeichnet. Duies hat aber nichts mit der Tabellenbeschriftung im excel zu tun. Möchtest Du den Excel Namen verwenden, musst Du mit Woorkbooks.Sheet(„Mein tabellenname“) oder Woorkbook.Sheet(„Mein tabellenname“) Arbeiten.
Grüsse Sebastian
Hallo,
ich würde an Deiner Stelle ein weiteres Excelblatt nutzen, welches Deinem Ausdruck entsprechen soll.
Hier kannst Du entsprechend Deiner Auswahl mit der Funktion SVERWEIS alle zugehörigen Informationen einbringen. Solltest Du Hilfe benötigen, melde Dich einfach noch einmal.
Gruß,
Ptonka
Select Case Tabelle1.Cells(58, 9)
Case „Wasserlack Heidelberg“
Sheets(Array(„L_Sys“, „Pflege Lack“, „Konf System“)).Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:=„\treppe09\Utax Kopierer CD 5025 auf Ne08:“, Collate:=True
Case „Hartwachs Heidelberg“
Sheets(Array(„L_Sys“, „Pflege Öl“, „Konf System“)).Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:=„\treppe09\Utax Kopierer CD 5025 auf Ne08:“, Collate:=True
End Select
End Sub
Wenn jetzt weder Lack noch Öl in der Maske steht druckt mir Excel gar nichts.
Kannst du mir den Code noch umbauen dass es funktioniert?
Zum Beispiel mit der Oberfläche Beize, da brauch ich die Pflegeanleitung nicht, aber ggfls die Liste L_Sys und die Liste Konf System.