Seite 1 von 1

makrobasierter Datenimport aus csv Datei

Verfasst: Sa 10. Mai 2014, 09:31
von CIS
Hallo liebe Community :)

Ich habe da ein recht kompliziertes Problem, was ich gerne durch ein Makro lösen würde.

Folgende Aufgabenstellung:
Jede Woche erhält man eine CSV Datei import.csv (1 Datenblatt). Die hier enthaltenen Datensätze sollen in eine erfassung.xls (8 Datenblätter) importiert werden, allerdings nicht 1:1. Vielmehr sollen nur einzelne Spalten, teilweise nach vorheriger verkettung und berechnung, in spezielle zielspalten eines einzigen datenblattes der datei erfassung.xls.

Leider habe ich noch nie ein Makro unter LO bzw OOO gescripted, beherrsche aber andere Script- & Programmiersprachen. Da das mein erstes Makro wird und der Quellcode, sowie ich nach ertsen Stöbern in den Dokus erahnen darf, nicht gerade klein werden dürfte, wollte ich dieses Vorhaben mal mit erfahrenen Hasen besprechen :idea:

Die Dateien:
Die import.csv hat folgende relevante Spalten:
A Buchungstag
C Umsatzart
D Buchungstext <-- in Abh. der Umsatzart ist hier der Empfänger/Auftraggeber genannt
E Betrag <-- in Abh. des Vorzeichens eine Einnahme oder Ausgabe

Die erfassung.xls...
... hat u.a. die gleich aufgebauten Datenblätter "Rechnungsausgang" und "Rechnunsgeingang". Einige davon befüllen sich selbst (Formeln) anderere sollen wie folgt durch das Makro befüllt werden. Das Makro soll entscheiden können, ob ein Eintrag in das Datenblatt "Rechnungseingang" oder Rechnungsausgang" soll:

D Buchungstag -> soll 1:1 von Buchungstag A übernommen werden
F Empfänger -> Wenn Umsatzart C = "Lastschrift" oder "Gutschrift" Dann Wert aus Buchungstext D per Stringvergleich mit Datenbereich in Zieltabelle
G Bemerkung -> soll 1:1 von Buchungstext D übernommen werden
H netto -> soll standartmäßig dem Betrag E abzgl 19% MWST (erstmal)
I MWST -> soll "19%" gesetzt werden standartmäßig (erstmal)


Erste Rezeptidee:
Ich persönlich würde jetzt nach folgendem Prinzip vorgehen (Was meint Ihr ?):
1. Um dem Problem mit der unterschiedlichen Anordnung von Spalten übersichtlich zu begegnen, die relevanten Werte aus der Quelldatei erstmal in ein entsprechendes Array einlesen
2. Dieses Array dann zeilenweise in die Zieldatei schreiben

Logik:

Code: Alles auswählen

lese import.csv zeilenweise in ein array "importwerte";
erstelle ein weiteres array "angepasstewerte";
#main
{
  für jeden zeile in array "importwerte"
  {
    schreibe wie folgt eie zeile in angepasste werte
    {
      angepasstewerte[x][Buchungstag] = importwerte[x][Buchungstag];
      wenn ((importwerte[x][Umsatzart] == "Lastschrift") ODER (importwerte[x][Umsatzart] == "Gutschrift") ODER (importwerte[x][Umsatzart] == "Überweisung"))
      {
	angepasstewerte[x][empfänger] = empfängersuche(importwerte[x][Buchungstext];
      } sonst {
      angepasstewerte[x][empfänger] = "Barkasse"
      }
      angepasstewerte[x][bemerkung] = importwerte[x][Buchungstext]
      angepasstewerte[x][MWST] = "19%"
      angepasstewerte[x][netto] = importwerte[x][betrag] * 0,84
    }
  }
  erstelle variable letzter-eingang;
  erstelle variable letzter-ausgang;
  letzter-eingang = ermittle erste leere zelle in spalte D datenblatt "Rechnungseingang"
  letzter-eingang = ermittle erste leere zelle in spalte D datenblatt "Rechnungseingang"
  
  für jede zeile in array "importwerte"
  {
    wenn(importwerte[x][netto] < 0)
    {
      
      gehe in zeile "letzter-ausgang" von datenblatt "Rechnungsausgang"
      spaltenweise die vorgefertigten werte aus array index in zielspalten einfügen    
      letzter-ausgang += 1;
    } sonst {
    
      gehe in zeile "letzter-ausgang" von datenblatt "Rechnungsausgang"
      spaltenweise die vorgefertigten werte aus array index in zielspalten einfügen    
      letzter-eingang += 1;
    }
  }
  
  
}

function empfängersuche(string zudurchsuchen)
{
  lese bereich a0-a45 aus datenblatt "stammdaten" in array "kontakte";
  für jeden "eintrag" in "kontakte"
  {
    wenn "eintrag" in "zudurchsuchen" enthalten
    {
      funktion mit rückgabewert "eintrag" beenden;
    }
  }
}
So ungefähr versuche ich anhand der Dokus im Web mal zu basteln ^^

Re: makrobasierter Datenimport aus csv Datei

Verfasst: Sa 10. Mai 2014, 10:10
von paljass
Moin,
was ich gerne durch ein Makro lösen würde.
... und warum fragst du dann nicht im dafür vorgesehenen Forum für Programmierung nach?

Gruß
paljass