AW: Visualisieren von Verknüpfungen
31.07.2014 16:37:22
Verknüpfungen
Hallo Frank,
grundsätzlich geeignet ist ja jedes Programm, das Grafiken in Form von Flußdiagrammen darstellen kann.
So zum Beispiel auch Microsoft Powerpoint unter Verwendung der in Office integrierten Formen. Allerdings sollte man dann unter "Seite einrichten" ein entsprechend größeres Seitenformat einstellen.
Eine etwas teurere Variante mit mehr Möglichkeiten wäre Visio von Microsoft .
Ein kostenloses Tool zur Erstellung von strukturierten Diagrammen:
https://wiki.gnome.org/action/show/Apps/Dia?action=show&redirect=Dia
Dia sieht sich als kleine Schwester von Visio und erfordert für optimale Ergebnisse etwas Einarbeitungszeit.
Nachfolgend ein Excel-Makro, mit dem du dir die Verknüpfungen von Dateien zu anderen Dateien in einem Tabellenblatt listen kannst.
Eine Auswertung dieser Liste als Pivot-Bericht liefert eine einfache Übersicht darüber, welche Tabelle mit welchen Verknüpft ist.
Gruß
Franz
Sub MakeDiagram()
Dim zWs As Worksheet, qWs As Worksheet
Dim LeseZeit, LeseWert, SchreibZeile, Zeile, Startzeile
Dim rDiagramm1 As Range, Diagramm1 As ChartObject, Werte As Range
Set zWs = Worksheets("Ziel")
Set qWs = Worksheets("Quelle")
Startzeile = qWs.UsedRange.Row + 1
zWs.Cells(1, 3).Value = "Zeit" ' Hier werden die Spaltentitel übergeben
zWs.Cells(1, 4).Value = "Fahr_Brems"
'Call Rahmenlinie_zeichnen
zWs.Range("A1:G1").Font.Bold = True
LeseZeit = 4
LeseWert = 8
SchreibZeile = 2
For Zeile = Startzeile To qWs.UsedRange.Rows.Count ' Zählt die benutzten Zellen und kopiert _
deren Inhalt in das neue Excel File
zWs.Cells(SchreibZeile, 3).Value = qWs.Cells(Zeile, LeseZeit).Value
zWs.Cells(SchreibZeile, 4).Value = qWs.Cells(Zeile, LeseWert).Value
SchreibZeile = SchreibZeile + 1
Next
zWs.Activate
Set rDiagramm1 = Application.InputBox("Bereich wählen für die Diagrammkurve", "Eingabefenster" _
, Type:=8)
Set Diagramm1 = zWs.ChartObjects.Add(rDiagramm1.Left, rDiagramm1.Top, rDiagramm1.Width, _
rDiagramm1.Height)
Set Werte = Application.InputBox("Daten", "Eingabefenster", Type:=8)
With Diagramm1.Chart ' Daten für Diagramm werden per Inputbox übergeben
.SetSourceData Source:=Werte
.ChartType = xlLine
End With
'Werte aus 2. Spalte für 2. Kurve kopieren
With Werte.Columns(2)
.Copy Destination:=.Offset(0, 1)
End With
End Sub
Sub Liste_Verknüpfungen()
'Listet die externen Excel-Verknüpfungen von Dateien in einem neuen Tabellenblatt
Dim wksZiel As Worksheet, ZeileZ As Long
Dim wkbQuelle As Workbook
Dim varQuelle As Variant
Dim arrLinks, varLink As Variant
Dim StatusCalc As Long
NextDatei:
With Application.FileDialog(msoFileDialogFilePicker)
.Title = "Bitte Datei(en) auswählen deren Externe Verknüpfungen ermittelt werden sollen"
.InitialFileName = "*.xls*"
.AllowMultiSelect = True
If .Show = -1 Then
If wksZiel Is Nothing Then
Application.Workbooks.Add Template:=xlWBATWorksheet
Set wksZiel = ActiveSheet
With wksZiel
ZeileZ = 1
.Cells(ZeileZ, 1) = "Pfad\Datei"
.Cells(ZeileZ, 2) = "Verknüpfungen"
.Cells(ZeileZ, 3) = "Pfad"
.Cells(ZeileZ, 4) = "Datei"
Range("A2").Select
ActiveWindow.FreezePanes = True
End With
End If
Else
GoTo Beenden
End If
With Application
.EnableEvents = False
.ScreenUpdating = False
StatusCalc = .Calculation
.Calculation = xlCalculationManual
End With
For Each varQuelle In .SelectedItems
Set wkbQuelle = Application.Workbooks.Open(Filename:=varQuelle, _
ReadOnly:=True, UpdateLinks:=False)
arrLinks = wkbQuelle.LinkSources(Type:=xlExcelLinks)
If Not IsEmpty(arrLinks) Then
For Each varLink In arrLinks
ZeileZ = ZeileZ + 1
wksZiel.Cells(ZeileZ, 1) = wkbQuelle.FullName
wksZiel.Cells(ZeileZ, 2) = "'" & varLink
wksZiel.Cells(ZeileZ, 3) = wkbQuelle.Path
wksZiel.Cells(ZeileZ, 4) = wkbQuelle.Name
Next
Else
ZeileZ = ZeileZ + 1
wksZiel.Cells(ZeileZ, 1) = wkbQuelle.FullName
wksZiel.Cells(ZeileZ, 2) = "keine Verknüpfungen"
wksZiel.Cells(ZeileZ, 3) = wkbQuelle.Path
wksZiel.Cells(ZeileZ, 4) = wkbQuelle.Name
End If
wkbQuelle.Close savechanges:=False
Next
With Application
.EnableEvents = True
.ScreenUpdating = True
.Calculation = StatusCalc
End With
wksZiel.Columns.AutoFit
End With
If MsgBox("Weitere Datei(en) auswerten?", vbQuestion + vbYesNo, _
"Liste externe Vernüpfungen") = vbYes _
Then GoTo NextDatei
Beenden:
End Sub