VBA Sumif in geschlossener Excel Datei
#1
Hallo liebes Forum,

ich habe 2 Excel Dateien. Die eine ist offen (Datei A), in der ich per Knopfdruck die Operation ausführen lassen möchte. Die zweite Datei (Datei B) liegt auf einem Server und soll wenn möglich nicht geöffnet oder nur im Hintergrund geöffnet werden.

Ich möchte gerne eine Summe in der geschlossenen Datei (Datei B) in Spalte P, sobald in Spalte D der Wert x erfüllt ist. Diesen Wert x möchte ich in der offenen Datei (Datei A) im gleichen Sheet wie den Knopf eintragen. (Also eine Sumif von Spalte p mit Bezug auf Spalte D, in welcher sich Wert x befindet). Die gebildete Summe soll dann in Datei in einer bestimmten Zelle ausgegeben werden.

Ich kenne mich nur ganz grundlegend mit VBA aus und habe jetzt keine Ahnung, welche Definitionen ich vergeben muss, damit ich zwischen zwei verschiedenen Dateien hin und her "springen" kann.

Ich habe bereits ein wenig begonnen zu bauen:


Code:
Sub Sumif ()

Dim strName as string

strName = ThisWorkbooks.Sheets("Tabelle1").Cells(1, 2) 'Das ist der Wert X der in Datei A in Tabelle 1 steht

Workbooks.Open Filename:="Pfad\DateiB.xlsx"  'Hier möchte ich Datei B öffnen, geht das auch im Hintergrund oder komplett ohne sichtbares öffnen?
Sheets("Tabelle1").Select

With
      WorksheetFunction.SumIf(.Columns("D"), strName, .Columns("P"))
End With

End Sub

Wie kann ich da einen "Knopf" einbauen?

Für das weitere Vorgehen finde ich nach Google suchen leider immer nur Lösungen, bei denen ich nicht verstehe, was die Anpassungen für mein Problem sind.

Wenn ihr noch mehr Input und Informationen benötigt fragt einfach nach :19:

Ich hoffe ich konnte mein Problem einigermaßen verständlich darstellen.

Vielen Dank im Voraus!
Top
#2
Hallo,

zuerst ein Hinweis zu Makronamen: verwende keine schon vorhandenen (internen) Namen wie hier im Beispiel Sumif.

Teste es mal so:
Sub Prc_Sumif()
 Dim strName As String
 Dim lngSumme As Long
 strName = ThisWorkbook.Sheets("Tabelle1").Cells(1, 2).Value 'Das ist der Wert X der in Datei A in Tabelle 1 steht
 With GetObject("Pfad\DateiB.xlsx")
   lngSumme = Application.Sumif(.Sheets("Tabelle1").Columns(4), strName, .Sheets("Tabelle1").Columns(16))
   .Close False
 End With
 ThisWorkbook.Sheets("Tabelle1").Cells(2, 2).Value = lngSumme
End Sub
Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Rendexx
Top
#3
Hallo Kuwer,

vielen Dank für die schnelle Hilfe!

Es funktioniert einwandfrei! Jetzt muss ich nur noch den Knopfdruck einbinden :)

Liebe Grüße

Matthias
Top
#4
Hallo Matthias,

(11.10.2017, 09:19)Rendexx schrieb: Jetzt muss ich nur noch den Knopfdruck einbinden :)

schau mal hier: Makro einer Schaltfläche zuweisen

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Rendexx
Top
#5
Hallo Kuwer,

ich hatte den Button angelegt und einfach dort den Code reingeschrieben.
Die Lösung aus dem Link, einfach den Namen des Subs reinzuschreiben ist natürlich eleganter.
Gut zu wissen dass das so funktioniert :)

Danke nochmals!

Gruß Matthias
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste