833 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo, ich bin fast am verzweifeln. Ich habe glaube ich das Ende vom Internet erreicht, ohne eine Antwort zu finden.

Ich bekomme aus unserer Software eine Datentabelle die jeweils immer neue Inhalte hat, je nachdem, aus welchem Projekt und welcher Filterung die Liste erzeugt wird.

In dem Tabellenblatt "Daten" sind die Informationen zum Projekt, zum Vorgang (Ticket) und in den Spalten AT-AY sind die URL's zu den Bildern, die zu dem Vorgang (Ticket) gehören. Max. 6 Stück.

Nun habe ich ein neues Tabellenblatt "Protokoll" erstellt und alle relevanten Daten aus der Tabelle Daten schön formatiert über Formeln hineingeholt.

So, jetzt mein Anliegen: Ich möchte wenn es Bilder gibt, diese in den Spalten unter meinen Inhalten als Bilder darstellen.

Beispiel in Zeile 5 des Protokolls sind in 6 Spalten Inhalte aus dem Datenblatt (A05 = eine laufende Nr., B05 = Raumbezeichnung, C05 = ausführende Firma, D05 = Problem, E05 = Frist, F05 = todo Anweisung

Nun soll in die Zeile 6 aus dem Tabellenblatt Daten aus der Spalte AT02 die URL als Bild dargestellt werden = A06.

In B06 soll nun die URL aus dem Tabellenblatt Daten aus der Spalte AU02 als Bild eingefügt werden usw.

Wenn es kein Bild gibt, soll es leer bleiben.

Ich habe einiges gefunden und ausprobiert, leider funktioniert es immer nur dann, wenn die Daten vorhanden sind. Meine Vorlage ist aber "leer" und füllt sich erst nach Aufruf aus der Software.

Hat da jemand eine Idee?

Ich sage schon jetzt erst mal ganz lieben Dank an alle, die sich jetzt den Kopf zerbrechen.

14 Antworten

0 Punkte
Beantwortet von

Guten Morgen M.O., 

die Tabelle 1 ist mein „Protokoll“, in dieses Arbeitsblatt hole ich per Excel-Formeln die Daten aus der Tabelle 2 (Daten).

Diese werden über mehrere Codes eingefügt. Die Excel-Tabelle, die ich nutze, ist die Vorlage unseres Software Herstellers.

Leider habe ich überhaupt keine Ahnung, wie man einen Code schreibt

Ich suche im Internet so lange, bis ich was Passendes finde und probiere es aus.

In Tabelle 1 (Protokoll) habe ich den Code

Private Sub Worksheet_Activate()

 ActiveSheet.Calculate

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)

 ActiveSheet.Calculate

End Sub

eingefügt.

Es gibt noch einen Code in „Diese Arbeitsmappe“

Private Sub Workbook_Open()

Dim sFile As String

On Error GoTo ErrHandler

  Call Refresh_Data

  Call SetPivotData

  'In Tabelle Hauptmenü in Feld A1 muss der Logopfad stehen! (Schriftart Weiß)

  sFile = GetLogo("Logo", _

                  "B2")

  If sFile <> "" Then

    Call InsertLogo(sFile, _

                    "Hauptmenü", _

                    "G3")

    Call InsertLogo(sFile, _

                    "T_2", _

                    "B1")

    Call InsertLogo(sFile, _

                    "T_3", _

                    "B1")

  End If

Exit_:

 On Error Resume Next

 Exit Sub

ErrHandler:

 HandleErrors

 Resume Exit_

 Resume

End Sub

Alle anderen Tabellen haben keinen Code. Dafür ist ein Globaler vorhanden unter „Module“

 „modGlobal“

Dieser ist unendlich lang und hat diese Code-Titel.

HandleErrors

InsertData

InsertLogo

InsertTable

LogoExist

PivotData

PrintVersion

ReadDefinition

Refresh_Data

Reset_Data

ResetTable

SetPivotData

Also ich bin erst mal überfordert.

Ich könnte mir vorstellen, dass in „Diese Arbeitsmappe“ dann noch die beiden Codes rein müssen, um zum einen die automatische Berechnung aus zu schalten und dann irgendwo, dass diese wieder eingeschaltet wird, wenn alle Berechnungen durchgeführt wurden.

Für mich Böhmische Dörfer sad

Gruß Christiane

+1 Punkt
Beantwortet von m-o Profi (22.8k Punkte)

Hallo Christiane,

lösche mal die Makros, die im VBA-Projekt der Tabelle "Protokoll" stehen. Also diese beiden Makros:

Private Sub Worksheet_Activate()

 ActiveSheet.Calculate

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)

 ActiveSheet.Calculate

End Sub

Dann ergänze mal den Code, der bei Dieser Arbeitsmappe steht, wie folgt:

Private Sub Workbook_Open()

Dim sFile As String

On Error GoTo ErrHandler

  Call Refresh_Data

  Call SetPivotData

  'In Tabelle Hauptmenü in Feld A1 muss der Logopfad stehen! (Schriftart Weiß)

  sFile = GetLogo("Logo", "B2")

  If sFile <> "" Then

    Call InsertLogo(sFile, "Hauptmenü", "G3")

    Call InsertLogo(sFile, "T_2", "B1")

    Call InsertLogo(sFile, "T_3", "B1")

  End If

  'Tabelle Protokoll aktualisieren
  With Worksheets("Protokoll")
     'automatische Berechnung ausschalten:
     Application.Calculation = xlManual
     'Tabelle neu berechnen
     .Calculate
     'automatische Bereichnung einschalten:
    Application.Calculation = xlAutomatic
  End With

Exit_:

 On Error Resume Next

 Exit Sub

ErrHandler:

 HandleErrors

 Resume Exit_

 Resume

End Sub


Probier dann mal aus, ob die Bilder nach dem Öffnenen der Arbeitsmappe (bei dem wohl auch der Import der Daten ausgeführt wird) angezeigt werden. Den Namen der Tabelle "Protokoll" (die in der die Bilder eingefügt werden sollen) musst du ggf. anpassen.

Gruß

M.O.

0 Punkte
Beantwortet von christiane27 Einsteiger_in (21 Punkte)

Super M.O. yessmiley 

Vielen lieben Dank, jetzt klappt es wunderbar. Danke für deine Mühe und deine Unterstützung.

Gruß Christiane

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Christiane,

freut mich, dass es jetzt funktioniert. Und vielen Dank für die Rückmeldung.

Gruß

M.O.
...