Excel-Documenter

Bild

Betrifft: Excel-Documenter von: Knut
Geschrieben am: 06.04.2005 14:45:33


Hi nochmal,

*threadnachobenschieb*

Ich probiere es nochmal:

Ich suchen ein Werkzeug für Excel.

Excel bietet die Möglichkeit, den VBA Code zu exportieren.

Wenn man nun den Code exportiert, ändert und nochmal exportiert, kann man unterschiede zwischen diesen beiden Versionen feststellen (z.B. mit Beyond Compare oder ähnlichem, zur Not auch "per Hand"). Macht man das häufiger und bewart die alten Versionen auf (z.B. mit CVS), kann man damit die Entwicklung des Codes betrachten.

Mit den Exceldateien geht das leider nicht.

Daher suche ich ein Tool, dass vereinfacht folgenes tut:

Auf einem Excelblatt haben die Felder A1, A2, A3, A4 und B2 folgenden Inhalt:
A1 = "4"
A2 = "7"
A3 = "=A1+A2"
A4 = "=WENN(A3 > 10;"Ergebnis größer 10";"Ergebnis nicht größer 10")"
B2 = "Ein einfaches Beispiel"

Das Werkzeug das ich suche, würde nun daraus z.B. folgende Textdatei generieren:

Cell Value
A1 4
A2 7
A3 =A1+A2
A4 =WENN(A3 > 10;"Ergebnis größer 10";"Ergebnis größer 10")
B2 Ein einfaches Beispiel

Dann könnte man, ohne großen Aufwand nachvollziehen, dass irgnedwann die Zelle A4 geändert und nun "=WENN(A3 > 11;"Ergebnis größer 11";"Ergebnis nicht größer 11")" lautet.

Kennt jemand so ein Werkzeug?

Gruß
Knut

Bild


Betrifft: AW: Excel-Documenter von: marko_ti
Geschrieben am: 06.04.2005 15:38:40

Hallo Knut
ich habe vor einiger Zeit mal was ähnliches programmiert (Achtung: Quick & Dirty!), aber vielleicht hilft es Dir.
Meine Datei hat als erstes ein Blatt "Übersicht" in dem ein Protokoll aller in allen weiteren Blättern erfolgten Änderungen geführt wird. In den anderen Datenblättern wird außerdem in eine bestimmte Zelle ein abgespeckter Kommentar geschrieben, der bei neuer Bearbeitung ständig aktualisiert wird.
Protokolliert wird nur bei Zeilen / Spalten kleiner als die Position der Zelle, die ich "Ecke" genannt habe.
Du kannst Dir sicher etwas aus dem Code "rausziehen". Die Textdatei bekommst Du, wenn Du das Blatt "übersicht" als Text speicherst - oder eben nicht in die Zellen schreibst, sondern die gesamten Zeilen in eine Textdatei.

in Modul1:
Declare Function GetUserName Lib "advapi32.dll" _
Alias "GetUserNameA" (ByVal lpBuffer As String, _
nSize As Long) As Long

Sub Protokoll(ByVal Target As Excel.Range)
Dim Buffer As String * 100
Dim BuffLen As Long
'Debug.Print Target.Text
c = Target.Column
R = Target.Row
' crow = Range("FIRST").Row
If c = 2 And R = 7 Then GoTo ende 'Datum per Hand geändert

On Error Resume Next
BuffLen = 100
GetUserName Buffer, BuffLen

adresse = WorksheetFunction.Substitute(Target.Address, "$", "")

If c <= Range("Ecke").Column And R <= Range("Ecke").Row Then _
Cells(7, 2) = Date & " " & Time & " " & Left(Buffer, BuffLen - 1) & " (" & adresse & ")"

rü = Worksheets("Übersicht").Cells(65536, 1).End(xlUp).Row
ListDateTime = Worksheets("Übersicht").Cells(rü, 1).Value
ListUser = Worksheets("Übersicht").Cells(rü, 2).Value

Worksheets("Übersicht").Cells(rü + 1, 1).Value = Date & " " & Time
Worksheets("Übersicht").Cells(rü + 1, 2).Value = Left(Buffer, BuffLen - 1)
TValue = ""
If Len(adresse) < 5 Then
TValue = Target.Value
If TValue = "" Then TValue = Chr(34) & Chr(34)
Worksheets("Übersicht").Cells(rü + 1, 3).Value = ActiveSheet.Name
Worksheets("Übersicht").Cells(rü + 1, 4).Value = adresse
Worksheets("Übersicht").Cells(rü + 1, 5).Value = TValue
Else
Worksheets("Übersicht").Cells(rü + 1, 3).Value = ActiveSheet.Name
Worksheets("Übersicht").Cells(rü + 1, 4).Value = adresse
End If

ende:
End Sub

in allen Datenblättern außer "Übersicht":

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
 Call Protokoll(Target)
End Sub


Gruß
Marko


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Diagramme automatisch generieren"