data formulier opslaan in ander bestaand excelbestand

Status
Niet open voor verdere reacties.

uchhie

Gebruiker
Lid geworden
29 jan 2009
Berichten
34
Hallo allemaal,

Ik ben bezig om een formulier te maken in excel (97), hierbij loop ik tegen het volgende probleem aan.
Het formulier wordt opgeroepen uit excelbestand 1 en bij het opslaan moet de data van de formulier opgeslagen worden in excelbestand 2. Hierbij moet de gebruikers geen last hebben dat excelbestand 2 tevoorschijn komt. Excelbestand 1 is een gedeelde bestand. Meerdere gebruikers zouden via het formulier tegelijkertijd data wegkunnen schrijven in excelbestand 2. Ik ben zelf niet zo ervaren met VBA, voor de formulier heb ik een code gevonden om het bestand weg te schrijven, maar deze schrijft de data weg in hetzelfde excelbestand als waar het formulier in is gebouwd.

De volgende code heb ik gebruikt en enigzins aangepast voor de knop toevoegen op mijn formulier. Alleen bij het drukken op de knop wil ik dat de data wordt opgeslagen in excelbestand 2. Hopelijk dat jullie mij hiermee kunnen helpen. Alvast bedankt!

Code:
Private Sub cmdAdd_Click()
Dim lRow As Long
Dim ws As Worksheet
Set ws = Worksheets("PartsData")

Application.ScreenUpdating = False

'find first empty row in database
lRow = ws.Cells(Rows.Count, 1) _
.End(xlUp).Offset(1, 0).Row

'copy the data to the database
With ws
.Cells(lRow, 1).Value = Me.cboPart.Value
.Cells(lRow, 2).Value = Me.cboLocation.Value
.Cells(lRow, 3).Value = Me.cboAnker.Value
.Cells(lRow, 4).Value = Me.cboSubanker.Value
.Cells(lRow, 5).Value = Me.cboReden.Value
.Cells(lRow, 6).Value = Me.cboRedenaantekening.Value
.Cells(lRow, 7).Value = Me.txtDate.Value

End With

'clear the data
Me.cboPart.Value = ""
Me.cboLocation.Value = ""
Me.cboAnker.Value = ""
Me.cboSubanker.Value = ""
Me.cboReden.Value = ""
Me.cboRedenaantekening.Value = ""
Me.txtDate.Value = Format(Date, "Medium Date")
Me.cboPart.SetFocus
Application.ScreenUpdating = True
MsgBox "De gegevens zijn toegevoegd!"
Unload Me
End Sub
 
Laatst bewerkt door een moderator:
Het formulier wordt opgeroepen uit excelbestand 1
dat is dan je tabblad PartsData. Wat staat daar dan al in ? Nergens in je code verwijs je om dit op te slaan in je tabblad 2 ( naam ?? ) die PartsData zegt me iets ! hoe maak ik een userform ( ergens te vinden op het www ) .
Om zeker te zijn dat alles gaat werken post je bestandje > haal alle gevoelige data eruit zet er wat dummy gegens in en dan maar hopen dat we terug kunnen naar excel '97 ( ik kan testen 2002 / 2003 /2007 / 2010 )
 
Re

dat is dan je tabblad PartsData. Wat staat daar dan al in ? Nergens in je code verwijs je om dit op te slaan in je tabblad 2 ( naam ?? ) die PartsData zegt me iets ! hoe maak ik een userform ( ergens te vinden op het www ) .
Om zeker te zijn dat alles gaat werken post je bestandje > haal alle gevoelige data eruit zet er wat dummy gegens in en dan maar hopen dat we terug kunnen naar excel '97 ( ik kan testen 2002 / 2003 /2007 / 2010 )

Je hebt gelijk, het wordt nog niet opgeslagen in de tabblad Partsdata, maar dit is wel de bedoeling bij het wegschrijven in excelbestand 2

Hierbij het excelbestand, alvast bedankt voor de moeite
 

Bijlagen

uchhie , ik heb jouw bestandje getest in 2007 en 2010 en het werkt :(
 

Bijlagen

Deze zal dan moeten komen van de mensen die nog over excel - 2000 beschikken of jij excel 2002 aanschaffen of hoger :)
 
Ik heb de code als volgt aangepast, alleen blijft deze steeds een fout geven bij de volgende regel Set ws = Worksheets("Blad1"), Doe ik iets verkeerd?

Code:
Private Sub cmdAdd_Click()
Dim lRow As Long
Dim FName As String
Dim FPath As String
Dim ws As Worksheet
Set ws = Worksheets("Blad1")

FPath = "D:\test.xls"
    FName = Sheets("Blad1").Range("A1").Text
    ThisWorkbook.SaveAs Filename:=FPath & "\" & FName
     
Application.ScreenUpdating = False

'find  first empty row in database
lRow = ws.Cells(Rows.Count, 1) _
  .End(xlUp).Offset(1, 0).Row
  
'check for a part number
If Trim(Me.cboPart.Value) = "" Then
  Me.cboPart.SetFocus
 MsgBox "Geef aan wat voor soort vraag"
  Exit Sub
End If

If Trim(Me.cboLocation.Value) = "" Then
  Me.cboLocation.SetFocus
 MsgBox "Geef aan wat het onderwerp is"
  Exit Sub
End If

'copy the data to the database
With ws
  .Cells(lRow, 1).Value = Me.cboPart.Value
  .Cells(lRow, 2).Value = Me.cboLocation.Value
  .Cells(lRow, 3).Value = Me.txtDate.Value
  
End With

'clear the data
Me.cboPart.Value = ""
Me.cboLocation.Value = ""
Me.txtDate.Value = Format(Date, "Medium Date")
Me.cboPart.SetFocus
Application.ScreenUpdating = True
MsgBox "De gegevens zijn toegevoegd!"
Unload Me
End Sub
 
Opgelost

ik heb een andere weggetje genomen naar Rome. ik heb de VBA code zo gelaten zoals die eerder was, zonder dat deze overschakelde naar het andere bestand. ik heb een nieuwe code gemaakt in excelbestand 1, die overschakeld naar excelbestand 2 en vervolgens de vba code opstart in excelbestand 2 waarmee het formulier wordt gestart. Verder heb ik de code voor het toevoegen van de data uit de formulier aangepast zodat deze de data in excelbestand 2 opslaat en vervolgens afsluit. En warempel het werkt:d
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan