Mein Problem ist, dass ich einige Excel-Dateien mit VBA (für Excel 2007) öffnen und die Daten extrahieren muss. Alle Dateien, die ich öffnen möchte, heißen "Gewinn für Januar.xlsx", "Gewinn für Februar.xlsx" und so weiter, nur der Monatsname ändert sich, also denke ich, dass ich eine Datei mit dem Namen "Gewinn für *" öffnen möchte. . Es gibt eine andere Datei im Ordner "total revenue.xlsx", die ich nicht öffnen möchte.Wie öffne ich bestimmte Excel-Ordner in einer Datei mit einem gemeinsamen Namen mit vba
Wenn möglich, brauche ich den Code, um die Daten aus den Dateien im Ordner zu extrahieren, wo auch immer der Ordner sein mag, weil ich diesen Code an meine Kollegen sende, um sie in ihren eigenen Ordnern zu speichern, die die gleichen Dateinamenformate haben usw. aber verschiedene Wege.
Ich habe den Code, um die Daten zu extrahieren, die funktioniert, aber es importiert entweder alle Daten im Ordner oder gar keine!
Jede Hilfe hier wäre sehr geschätzt, da ich ein Praktikant versuche, seinen Fuß in die Tür zu bekommen, und das wäre eine ziemlich große Pause für mich!
Weitere Informationen
Bisher habe ich den Code unten (Ich habe nicht die dim ist enthalten, weil ich fühlte sie unnötig sein?), Die ich von anderen Websites gezogen haben. Ich finde auch, dass beim Versuch, alle Dateien in dem Ordner zu öffnen, es sich öffnet! Wenn jemand vorschlagen könnte, dies zu verbessern, wäre ich sehr dankbar. Ich habe VBA schon lange nicht mehr benutzt und finde diese Aufgabe ziemlich schwierig!
Das Fehlerfeld, das auftaucht, sagt manchmal, dass ich ein 'Objekt' für die Variable sfilename benötige, und ich bin nicht sicher, wie man das macht, ohne einen anderen Teil des Codes zu vermasseln.
sub import data()
ChDir ThisWorkbook.Path
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set sfolder = objFSO.GetFolder(ThisWorkbook.Path)
For Each sfilename In sfolder.Files
If sfilename <> "Total Revenue.xlsx" Then
Workbooks.Open Filename:= _
sfilename *'open the file*
Set sfilename = ActiveWorkbook *'set the file name as sfilename, so the single piece of code will work with the copy-loop*
b = Sheets.Count *'for the data-import loop*
Call ImportData *'call in the loop*
sfilename.Close *'close the file*
End If
Next
end sub
Hallo Mark In SO, ist dieser Bereich für Antworten reserviert ist. Ich werde Ihren Beitrag bearbeiten, um diesen Abschnitt einzuschließen, und Sie können anfordern, dass dieser gelöscht wird. Okay? :) – Fionnuala
Ich habe ein paar Anmerkungen zu meiner Antwort hinzugefügt. – Fionnuala