PDA

Vollständige Version anzeigen : Drucken von Formularen möglich?


Tiberius
27.02.2008, 21:14
Hallo,

ich habe eine Excel Tabelle (Office 2003) welche in jeder zeile daten von Personen enthält. Diese sind nicht besonders formatiert sondern die Zellen dienen nur zur Aufnahme der Informationen als Schema.

Die Daten für diese Tabelle kommen aus einer Oberfläche (Makro in Excel) die ihre Eingaben zeilenweise in die Tabelle einträgt.

Gibt es jetzt eine möglichkeit wie in Access daß ich ein Formular entwerfe wo ich diese Daten so wie ich sie brauche zeilenweise anzeigen lasse oder auch ausdrucken kann.

Oder muß ich auf einem neuen Blatt mir ein Formular gestalten und dann zeilenabhänig die Informationen aus dem Datenblatt holen???

Grüße

Tiberius

jinx
28.02.2008, 04:51
<font size="2" face="Century Gothic">Moin, Tiberius,

bei Excel 2000 gab es noch das AddIn AccessLinks-AddIn, was genau das ermöglicht hat - ansonsten bleibt nur der von Dir vorgeschlagene Weg mit einer entsprechend aufzubereitenden weiteren Tabelle, die ggf. beschützt und nur zum Drucken eingeblendet wird (ansonsten über VBA sicher ausgeblendet).</font>

Sebastian Schulz
28.02.2008, 18:50
Hallo Tiberius,

vll. hilft dir dieser Code von Max (Nepumuk) auch schon weiter. Lege einfach ein Userform für die Daten an und drucke dieses dann aus. Diese musst du aber trotzdem noch zeilenweise rüberholen.


Code im Userform:

Private Sub CommandButton1_Click()
Call prcPrintForm(Me)
End Sub

Code in einem Standardmodul:

Option Explicit

Private Declare Function MapVirtualKey Lib "user32.dll" Alias "MapVirtualKeyA" ( _
ByVal wCode As Long, _
ByVal wMapType As Long) As Long
Private Declare Sub keybd_event Lib "user32.dll" ( _
ByVal bVk As Byte, _
ByVal bScan As Byte, _
ByVal dwFlags As Long, _
ByVal dwExtraInfo As Long)

Private Const KEYEVENTF_KEYUP = &H2
Private Const VK_MENU = &H12
Private Const lngMargin = 1 'Breite der Seitenränder in cm

Public Sub prcPrintForm(objForm As Object)
Dim intAltScan As Integer, intIndex As Integer
Application.ScreenUpdating = False
intAltScan = MapVirtualKey(VK_MENU, 0&)
keybd_event VK_MENU, intAltScan, 0&, 0&
keybd_event vbKeySnapshot, 0&, 0&, 0&
DoEvents
keybd_event VK_MENU, intAltScan, KEYEVENTF_KEYUP, 0&
ThisWorkbook.Worksheets.Add
Rows.RowHeight = 3
Columns.ColumnWidth = 0.83
With ActiveSheet
.Paste
With .PageSetup
.Orientation = IIf(objForm.Width > objForm.Height, xlLandscape, xlPortrait)
.LeftMargin = Application.CentimetersToPoints(lngMargin)
.RightMargin = Application.CentimetersToPoints(lngMargin)
.TopMargin = Application.CentimetersToPoints(lngMargin)
.BottomMargin = Application.CentimetersToPoints(lngMargin)
.HeaderMargin = Application.CentimetersToPoints(0)
.FooterMargin = Application.CentimetersToPoints(0)
.CenterVertically = True
.CenterHorizontally = True
.Zoom = 10
For intIndex = 1 To 3
Do Until ExecuteExcel4Macro("Get.Document(50)") > 1
.Zoom = .Zoom + Choose(intIndex, 50, 10, 1)
Loop
.Zoom = .Zoom - Choose(intIndex, 50, 10, 1)
Next
End With
.PrintOut
Application.DisplayAlerts = False
.Delete
Application.DisplayAlerts = True
End With
Application.ScreenUpdating = True
End Sub

jinx
28.02.2008, 18:53
Moin, Sebastian,

ich hatte herausgelesen, dass es noch gar keine Userform gibt...

Sebastian Schulz
28.02.2008, 18:56
Hallo jinx,

hast recht. Habe es nochmal durchgelesen. Habe ich wohl zuviel rein interpretiert. ;)
:rolleyes: