Problem mit Verknüpfung zwischen Arbeitsmappen in VBA
Schönen guten Morgen!
Ich habe ein größeres Problem mit der Verwendung von VBA:
Ich soll quasi ein Mini CRM erstellen, bei dem Besuchsberichte aus einer Exceldatei mit Tagesberichten generiert werden
-Ich habe zwei Arbeitsmappen; in der einen sollen die Besuchsbereichte für unseren Außendienst(Besuchsberichte.xls) generiert werden, in der anderen stehen Angaben zum Kunden, Datum, Ergebnisse, etc.
-Mein Ziel ist es in der Mappe Besuchsberichte.xls eine Maske zu erstellen, in die die KW eingegeben wird.
-Dann soll in der CRM.xls nach der Kalenderwoche gesucht und die Anzahl der Berichte durchgezählt werden
-In Besuchsberichte.xls soll dann das bereits vorhandene Arbeitsblatt so häufig kopiert werden, die Berichte vorhanden sind
-Die Daten sollen dann von CRM.xls in die einzelnen Berichte übertragen werden
Da ich leider der einzige Programmiererfahrene unserer Abteilung bin, aber bisher leider wenig mit VBA und der Verknüpfung mit Excel zu tun hatte, bitte ich um ein wenig Unterstützung.
Besonders Punkt zwei und vier bereiten mir Kopfzerbrechen.
Ich freue mich über eure tatkräftige Hilfe
Danke im Voraus
Grüße
Jens
Ich habe ein größeres Problem mit der Verwendung von VBA:
Ich soll quasi ein Mini CRM erstellen, bei dem Besuchsberichte aus einer Exceldatei mit Tagesberichten generiert werden
-Ich habe zwei Arbeitsmappen; in der einen sollen die Besuchsbereichte für unseren Außendienst(Besuchsberichte.xls) generiert werden, in der anderen stehen Angaben zum Kunden, Datum, Ergebnisse, etc.
-Mein Ziel ist es in der Mappe Besuchsberichte.xls eine Maske zu erstellen, in die die KW eingegeben wird.
-Dann soll in der CRM.xls nach der Kalenderwoche gesucht und die Anzahl der Berichte durchgezählt werden
-In Besuchsberichte.xls soll dann das bereits vorhandene Arbeitsblatt so häufig kopiert werden, die Berichte vorhanden sind
-Die Daten sollen dann von CRM.xls in die einzelnen Berichte übertragen werden
Da ich leider der einzige Programmiererfahrene unserer Abteilung bin, aber bisher leider wenig mit VBA und der Verknüpfung mit Excel zu tun hatte, bitte ich um ein wenig Unterstützung.
Besonders Punkt zwei und vier bereiten mir Kopfzerbrechen.
Ich freue mich über eure tatkräftige Hilfe
Danke im Voraus
Grüße
Jens
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 154620
Url: https://administrator.de/forum/problem-mit-verknuepfung-zwischen-arbeitsmappen-in-vba-154620.html
Ausgedruckt am: 17.05.2025 um 12:05 Uhr
5 Kommentare
Neuester Kommentar
Punkt zwei kannst du mit Excel herausbekommen.
=ZÄHLENWENN(Bereich;Suchkriterium)
Bereich ist die komplette Spalte mit der KW-Angabe.
Suchkriterium die einzelne KW
zu vier:
könnetest du vielleicht über die Zeilenzuordnung machen
hinter einer KW steht immer eine zeile und dahinter stehen immer die Kundeninfos(wenn ich dich richtig verstanden habe)
=Zeile(Bezug)
Bezug richtet sich nach der Zeile der KW
damit könntest du dann die Angaben aus CRM.xls in Besuchsberichte.xls kopieren!
das wäre jetzt mein Ansatz
Gruß
Jens
=ZÄHLENWENN(Bereich;Suchkriterium)
Bereich ist die komplette Spalte mit der KW-Angabe.
Suchkriterium die einzelne KW
zu vier:
könnetest du vielleicht über die Zeilenzuordnung machen
hinter einer KW steht immer eine zeile und dahinter stehen immer die Kundeninfos(wenn ich dich richtig verstanden habe)
=Zeile(Bezug)
Bezug richtet sich nach der Zeile der KW
damit könntest du dann die Angaben aus CRM.xls in Besuchsberichte.xls kopieren!
das wäre jetzt mein Ansatz
Gruß
Jens

Hallo Jens!
Das Zählen in etwa so (Konstanten anpassen):
wobei für die Tabellennamen der Kalenderwochen von der Bezeichnung KW01, KW02,..., KW52 ausgegangen wird.
Gruß Dieter
Das Zählen in etwa so (Konstanten anpassen):
Const CRMPath = "E:\Test\CRM.xls"
Const StartZeile = 7
Const ZaehlSpalte = "A"
Sub Test()
Dim Anzahl As Long
Anzahl = GetAnzahl(2)
End Sub
Private Function GetAnzahl(ByVal KW) As Long
Dim Wkb As Workbook, Wks As Worksheet, i As Long, Counter As Long
Set Wkb = GetObject(CRMPath)
For Each Wks In Wkb.Sheets
If Wks.Name = "KW" & Right("0" & KW, 2) Then
For i = StartZeile To Wks.Cells(Wks.Rows.Count, ZaehlSpalte).End(xlUp).Row
If Not IsEmpty(Wks.Cells(i, ZaehlSpalte)) Then Counter = Counter + 1
Next
Exit For
End If
Next
Wkb.Close False
GetAnzahl = Counter
End Function
Gruß Dieter

Hallo Jens!
Hier der Zähler noch etwas vereinfacht:
Gruß Dieter
Hier der Zähler noch etwas vereinfacht:
Private Function GetAnzahl(ByVal KW) As Long
Dim Wkb As Workbook, Wks As Worksheet
Set Wkb = GetObject(CRMPath)
For Each Wks In Wkb.Sheets
If Wks.Name = "KW" & KW Then
GetAnzahl = WorksheetFunction.CountIf(Wks.Range("A7:A65536"), "<>"): Exit For
End If
Next
Wkb.Close False
End Function
Gruß Dieter