Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1272to1276
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Aktualisierung der Tabellen

Aktualisierung der Tabellen
Ivek
Hallo Community,
ich brauche eure Hilfe und hoffe dass mir geholfen werden kann! Bin ganz neu im Gebiet der VBA-Programmierung. Meine ersten Erkenntnisse habe ich aus diesem Forum aber nun komme ich nicht weiter.
Ich habe mir eine Datenbank in Excel mit mehreren Tabellen erstellt. Jede Tabelle hat ein CommandButton mit welchem die Bilder der Datenbank aktualisiert werden. D.h. nach einer Änderung im Verzeichnis klickt man auf aktualisieren (CommandButton) und die Änderungen werden in der Datenbank übernommen. So wie es jetzt ist hat jede Tabelle das gleiche Makro.
Kann ich es so gestalten dass ich nur ein Makro habe, welches auf die ganzen Tabellen mit den CommandButtons zugreift und egal von welcher Tabelle ich auf aktualisieren klicke, soll diese Aktion für alle Tabellenblätter durchgeführt werden.
Ein weiteres Anliegen wäre noch, dass nach jedem Start bzw. Öffnen des Excel-Files die Aktualisierung automatisch durchgeführt werden soll.
Ich hoffe dass Ihr mir weiterhelfen könnt, denn ich wüsste nicht wie ich es umsetzen könnte.
Danke im Voraus.
Gruß Ivek

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Aktualisierung der Tabellen
10.08.2012 09:03:09
fcs
Hallo Ivek,
die Bearbeitung mehrere Blätter macht man z.B. in einer For-Next-Schleife.
Man muss dannn aber dafür sorgen, dass immer die Objekte korrekt angesprochen werden.
Gruß
Franz
'Code in einem allgemeinen Modul
'Dieses Makro dann von den Schaltflächen aus starten mit
'Call Tabellenaktualisieren
Sub TabellenAktualisieren()
Dim wks As Worksheet, objShAktiv
Set objShAktiv = ActiveSheet
For Each wks In ActiveWorkbook.Worksheets
Select Case wks.Name
Case "Tabelle XYZ", "Tabelle ABC"
'ggf. Namen der Tabellen nicht aktualisiert werden sollen
Case Else
Call AktualisierenBilder(wks)
End Select
Next
objShAktiv.Activate
End Sub
Sub AktualisierenBilder(ByVal wks As Worksheet)
wks.Activate
'ab hier dann das vorhande Makro der Schaltflächen
'ggf. müssen aber noch Anpassungen gemacht werden, damit
'auf das richtige Blatt zugegriffen wird
'Bei Programmierung ohne Verwendung von Select kann man auf
'das Aktivieren der einzelnne Blätter verzichten. Dann müssen
'aber alle Verweise auf die Objekte (Range, Cells, Shapes) vollständig
'sein inkl. Worksheet-Objekt.
'Dies macht man meistens mit einer With-Anweisung und einem Punkt vor
'den betreffenden Objekten.
End Sub

Anzeige
AW: Aktualisierung der Tabellen
10.08.2012 09:40:14
Ivek
Hallo Franz,
danke für deine Hilfe, aber wie gesagt bin ganz neu in diesem Gebiet und steh trotz deiner ausführlichen Erklärung auf dem Schlauch.
Dies ist nun mein Makro für Tabelle1:
Option Explicit
Private Sub cmbAktualisieren_Click()
Dim strPfad As String
Dim strSNR As String
Dim strDateipfadBild As String
Dim xlEnd As Long
Dim i As Integer
Dim wks As Worksheet
Dim P
xlEnd = Cells(Rows.Count, 2).End(xlUp).Row
For Each P In Worksheets("Tabelle1").Shapes
If P.Name Like "*.jpg" Then P.Delete
Next P
For i = 4 To xlEnd
strPfad = Worksheets("Tabelle1").Cells(i, 6).Value
strSNR = Worksheets("Tabelle1").Cells(i, 2).Value
strDateipfadBild = strPfad & "\" & strSNR & ".jpg"
Call InsertPicture(strDateipfadBild, strSNR, i)
Next i
End Sub
Sub InsertPicture(strPfadBild As String, strSNR As String, i As Integer)
Dim pct As Picture
Dim iLeft As Integer
Dim iTop As Integer
Dim iWidth As Integer
Dim iHeight As Integer
Dim sFile As String
Dim sinFaktor As Single
Application.EnableEvents = False
On Error GoTo FEHLER
sFile = strPfadBild
With Range(Worksheets("Tabelle1").Cells(i, 1), Worksheets("Tabelle1").Cells(i, 1))
iLeft = .Left
iTop = .Top
iWidth = .Width
iHeight = .Height
End With
Set pct = Worksheets("Tabelle1").Pictures.Insert(sFile)
pct.Name = "test.jpg"
sinFaktor = iHeight / pct.Height - 0.03
pct.ShapeRange.ScaleWidth sinFaktor, msoFalse, msoScaleFromTopLeft
pct.ShapeRange.ScaleHeight sinFaktor, msoFalse, msoScaleFromTopLeft
pct.Left = iLeft + iWidth / 2 - pct.Width / 2
pct.Top = iTop + iHeight / 2 - pct.Height / 2
FEHLER:
Application.EnableEvents = True
Range(Worksheets("Tabelle1").Cells(i, 1), _
Worksheets("Tabelle1").Cells(i, 1)).Select
End Sub
Der Code ista ber in jeder Tabelle, ich will in allgemein einmal für alle Tabellen und dann die genanneten Aktualisierungen. :-/
Anzeige
AW: Aktualisierung der Tabellen
10.08.2012 11:01:29
Ivek
Hallo Franz,
also ich krieg des einfach nicht. Trotzdem danke für deine Hilfe. Ich weiss nicht wie ich das umsetzen muss.
Grüße
AW: Aktualisierung der Tabellen
10.08.2012 12:07:41
fcs
Hallo Ivek,
mit den folgenden Anpassungen sollte es funktionieren.
Gruß
Franz
'Code in einem allgemeinen Modul
Sub TabellenAktualisieren()
Dim wks As Worksheet, objShAktiv
Set objShAktiv = ActiveSheet
Application.ScreenUpdating = False
For Each wks In ActiveWorkbook.Worksheets
Select Case wks.Name
Case "ALL", "LAENDER"
'ggf. Namen der Tabellen nicht aktualisiert werden sollen
Case Else
Call AktualisierenBilder(wks)
End Select
Next
objShAktiv.Activate
Application.ScreenUpdating = True
End Sub
Sub AktualisierenBilder(ByVal wks As Worksheet)
wks.Activate
'ab hier dann das vorhande Makro der Schaltflächen
Dim strPfad As String
Dim strSNR As String
Dim strDateipfadBild As String
Dim xlEnd As Long
Dim i As Integer
Dim P
With wks
xlEnd = .Cells(.Rows.Count, 2).End(xlUp).Row
For Each P In .Shapes
If P.Name Like "*.jpg" Then P.Delete
Next P
For i = 4 To xlEnd
strPfad = .Cells(i, 6).Value
strSNR = .Cells(i, 2).Value
strDateipfadBild = strPfad & "\" & strSNR & ".jpg"
Call InsertPicture(wksInsert:=wks, strPfadBild:=strDateipfadBild, _
strSNR:=strSNR, Zeile:=i)
Next i
End With
End Sub
Sub InsertPicture(ByVal wksInsert As Worksheet, strPfadBild As String, _
strSNR As String, ByVal Zeile As Long)
Dim pct As Picture
Dim iLeft As Integer
Dim iTop As Integer
Dim iWidth As Integer
Dim iHeight As Integer
Dim sFile As String
Dim sinFaktor As Single
Application.EnableEvents = False
On Error GoTo FEHLER
sFile = strPfadBild
With wksInsert
With .Range(.Cells(Zeile, 1), .Cells(Zeile, 1))
iLeft = .Left
iTop = .Top
iWidth = .Width
iHeight = .Height
End With
Set pct = .Pictures.Insert(sFile)
End With
pct.Name = "test.jpg"
sinFaktor = iHeight / pct.Height - 0.03
pct.ShapeRange.ScaleWidth sinFaktor, msoFalse, msoScaleFromTopLeft
pct.ShapeRange.ScaleHeight sinFaktor, msoFalse, msoScaleFromTopLeft
pct.Left = iLeft + iWidth / 2 - pct.Width / 2
pct.Top = iTop + iHeight / 2 - pct.Height / 2
FEHLER:
Application.EnableEvents = True
wksInsert.Cells(Zeile, 1).Select
End Sub
Für die Commandbuttons in den Tabellenblättern dann:
Private Sub CommandButton1_Click()
Call TabellenAktualisieren
End Sub

Anzeige
AW: Aktualisierung der Tabellen
10.08.2012 16:01:33
Ivek
Vielen Dank Franz!
Werd es am Wochenende mal probieren.
AW: Aktualisierung der Tabellen
13.08.2012 07:42:41
Ivek
Guten Morgen Franz,
Hab dein Programm jetzt mal am WE probiert! Ich kann es nachvollziehen und danke dir nochmals dafür,
aber im dem Code-Teil der im allgemeinen Modul eingefügt ist, kommt immer die Fehlermeldung
"Fehler beim Kompilieren: Sub oder Funktion nicht definiert",
dabei wird dann die Zeile in der Select-Auswahl
"Call AktualisierenBilder (wks)" (Dabei wird nur das Call Aktualisieren markiert ohne das (wks)
markiert.
Versteh nicht, wieso diese Meldung kommt. Wahrscheinlich ist es ein selbstverständliches Problem, aber wie gesagt bin relativ neu in diesem Gebiet.
Danke im Voraus.
Anzeige
AW: Aktualisierung der Tabellen
13.08.2012 08:23:00
fcs
Hallo Ivek,
ich kann jetzt schlecht nachvollziehen, was du evtl. nicht ganz richtig gemacht hast.
In dem gleichen allgemeinen Modul müssen aber auch die Prozeduren
Sub AktualisierenBilder(ByVal wks As Worksheet)
und
Sub InsertPicture(ByVal wksInsert As Worksheet, strPfadBild As String, _
strSNR As String, ByVal Zeile As Long)
stehen.
In den Tabellenblatt-Modulen muss dann nichts mehr stehen, außer den Codes für die Schaltflächen.
Die bisher dort vorhandenen Prozeduren zum einfügen der Bilder sind überflüssig.
Gruß
Franz
AW: Aktualisierung der Tabellen
13.08.2012 08:44:39
Ivek
Hallo Franz,
hat bereits geklappt, hatte einen kleinen Fehler drin. ^^
Danke für deine Hilfe. Hast mir sehr weitergeholfen.
Gruß Ivek
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige