Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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!
Antworten 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
Antworten 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
Antworten Top
#4
Hallo Matthias,

(11.10.2017, 08: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
Antworten 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
Antworten Top


Gehe zu:


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