322 Aufrufe
Gefragt in Datenbanken von
Hi Forum; Ich versuche mich mal richtig auszudrücken. Ich habe auf einem Server ca 650 Excel Dateien. Die immer 2 Tabellenblätter hat. Die auch immer gleich heißen. Ich möchte jetzt mit Hilfe einer Userform mir diese Tabellen mit einer Listbox sehen. Das habe ich auch schon hinbekommen. Wenn ich die einzelne Tabelle in der Listbox markiere, will ich mit einem Commandbutton das er mir die 2 Tabellenblätter in die geöffnete Excel Datei kopiert bekommen.

Danach möchte ich die Tabellen mit Hilfe weiterer Userformen bearbeiten und danach sollen sie wieder im Server abgelegt werden. Wie müsste in VBA sowas aussehen?

Für Hilfe wäre ich sehr Dankbar.

falls was unklar ist bitte fragen.

mfg Andreas

31 Antworten

0 Punkte
Beantwortet von m-o Profi (15.7k Punkte)
Hallo Andreas,

wenn du die Tabellen bearbeiten und wieder speichern willst, musst du sie ja nicht unbedingt in die Tabelle kopieren, es sei denn, du willst die Datei dann neu unter einem neuen Namen speichern.

Was meinst du damit, wenn du sagst, du willst die Tabellen mit Hilfe weiterer Userformen bearbeiten? Willst du bestimmte Zellwerte einlesen und bearbeiten?

Gruß

M.O.
+1 Punkt
Beantwortet von
Hi M.O.

Danke für deine Antwort,

Ich hoffe ich kann mich verständlich ausdrücken.

Ich habe eine Arbeitsmappe wo die userformen drin sind, die Tabellen die sich auf dem Server befinden will ich die Zellwerte einlesen und bearbeiten.

eine Art material Áusgabe. das sind die arbeitsblätter der arbeitsmappen die auf einem Server gespeichert sind

1xMaterialausgabebeleg

1xMaterial (Gesamtauflistung des Materials in einem Werkzeugsatz)

Die Namen der Server Dateien darf gar nicht geändert werden das wär fatal. mit dem Tabellenname suche ich ja die richtige.

Das Öffnen der Arbeitsmappe vom Server funktioniert auch, und du warst es der mir das Skript geschickt hat.grinz

wenn ich jetzt aber da es 2 Arbeitsmappen sind kann ich ja keine userform öffnen zum bearbeiten der servertabelle. ich möchte ausserdem am liebsten das das ganze im Hintergrund läuft.

um es besser zu sagen idiotensicher.

Wenn es ne andere Möglichkeit gibt gerne nehm alles was ich bekommen kann.

ich hoffe du kannst mir folgen. da ich nicht weiss wie man sowas am besten ausdrückt.

über deine Hilfe würde ich mich sehr freuen.
+1 Punkt
Beantwortet von m-o Profi (15.7k Punkte)
Hallo Andreas,

wieviele Zellen aus den einzelnen Arbeitsblättern sollen denn bearbeitet werden? Sind das immer die gleichen Zellen, oder kann sich das ändern?

Wenn du nur wenige Zellen ändern willst, kannst du das über eine Userform machen. Ab einer gewissen Anzahl kann das aber dann unübersichtlich werden.

Gruß

M.O.
0 Punkte
Beantwortet von
Ich habe die userformen schon fertig, und die tuen auch was sie sollen.

Ich habe die Tabellen so angelegt das immer die selben Zellen angesprochen werden.

im Prinzip ist es immer das selbe.

Nur die Tabelle "Material" ist mal mehr oder weniger Inhalt drin.

in der Userform wird das material anhand einer Nummer gesucht und gefunden.

und wird nur ein wert geändert. Zum Beispiel: Ich suche ein Drehmoment Schlüssel die an Hand der Nummer gesucht wird. die userform zieht alle Daten aus der Tabelle, und bucht das in eine Materialausgabeliste.

die gedruckt wird und da wird der Empfang eines Handwerkers bestätigt.

sollte der Handwerker es wieder zurückbringen geht das selbe anders rum.

Ich habe hier ca 650 Werkzeugsätze wo unterschiedliche Mengen an Werkzeugen drin sind.

Danke für deine Mühe.

Mfg Andreas
+1 Punkt
Beantwortet von m-o Profi (15.7k Punkte)

Hallo Andreas,

ich habe dir mal eine kleine Beispieltabelle gebastelt, damit du siehst was möglich ist.

Die kannst über die zu öffnende Datei auswählen und dann das Arbeitsblatt, das bearbeitet werden sollen. Dann werden die Zellen A1 und B1 in eine Userform geladen, wo man die Einträge bearbeiten kann. Nach dem Speichern der Änderungen in der betreffenden Tabelle wird die Arbeitsmappe gespeichert und geschlossen.

Schau mal, was du daraus für dich verwenden kannst: Beispieldatei

Gruß

M.O.

0 Punkte
Beantwortet von
du bist der Burner.

ich guck es mir am Wochenende an.

danke schon mal und werde mich wieder melden dann.

mfg andreas
0 Punkte
Beantwortet von

Hi M.O.

ich habe mal versucht das etwas umzubauen.

deine Idee ist soweit für meine zwecke ok.

wenn du in deinem Skript von UserForm2 auf UserForm3 springst,

habe ich versucht statt deiner UserForm3 meine UserForm einzubetten und habe da auch das
UserForm_Initialize() umgebaut.

aber er Übernimmt die nicht und gibt ein fehler aus.

Private Sub CommandButton1_Click()

'Name der Tabelle in Variable schreiben
strTabelle = ComboBox1.Value

'diese Userform schlie?en
Unload Me

'Userform zum Bearbeiten der Tabelleneintr?ge bearbeit
UserForm4.Show 'da bleibt er stehen

End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

Private Sub UserForm_Initialize()
Dim i As Long


With ComboBox1
  For i = 1 To wkbdatei.Worksheets.Count
     .AddItem wkbdatei.Worksheets(i).Name
  Next i
  '1. Eintrag ausw?hlen
  .ListIndex = 0
End With

End Sub

Komisch ist er nimmt alle Anderen also wenn ich auf UserForm2 oder 3 gehe nur Die 4 nicht. 

am Liebsten würde ich dir alles schicken. Lach

Vielleicht weisst du noch ein Tipp.

In deiner UserForm2 Bekomme ich die Datenblätter angezeigt und kann Sie auch auswählen.

ich müsste nur unter den Datenblättern verschiede UserFormen aufmachen ginge das auch?

Mfg Andreas

 

0 Punkte
Beantwortet von m-o Profi (15.7k Punkte)

Hallo Andreas,

warum er die Userform4 nicht öffnet, kann ich dir so ohne Datei leider auch nicht sagen. Welche Fehlermeldung wird denn angezeigt?

Wenn du die zu öffnende Userform vom ausgewählten Tabellenblatt abhängig mach willst, kannst du das über eine IF-Abfrage machen:

If ComboBox1.Value = "Tabelle1" Then UserForm4.Show

Ansonsten lade mal deine Testdatei hier im Forum hoch (Anleitung).

Gruß

M.O.

0 Punkte
Beantwortet von

Ok ich probiere es mal.

hab da noch nicht so Erfahrung drin.

Beispieldatei ich hoffe es klappt.

danke nochmal an M.O.

mfg Andreas

0 Punkte
Beantwortet von m-o Profi (15.7k Punkte)

Hallo Andreas,

bitte deklariere die Public-Variablen in einem allgemeinen Modul (nicht in einem Klassenmodul).

Nun zu deinem Fehler, warum die UserForm4 nicht geladen wird:

Die Überschrift der Initialize-Routine lautet:

Private Sub UserForm_Initialize()

Das funktioniert daher für die Userform4 nicht. Ändere die Überschrift wie folgt:

Private Sub UserForm4_Initialize()

und die Userform4 wird wie gewünscht aufgerufen.

Gruß

M.O.

...