• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Database kopieren

Status
Niet open voor verdere reacties.

jammi

Gebruiker
Lid geworden
30 mrt 2010
Berichten
62
Beste,

Ik heb een vraag omtrent het kopiëren van een database uit een externe file.
De data die ik wil kopiëren komt steeds uit de masterfile "Database.xlsm file, deze kan gesloten of geopend zijn op de achtergrond.

De file waar deze naar toe gekopieerd wordt kan wijzigen in bv test1 of test2 enz. maar is wel de active file waar het naartoe gekopieerd moet worden.
Ik heb dus de volgende problemen
1 als de file reeds geopend is loopt deze vast
2 als de nieuwe file een andere naam heeft als test 1 loopt deze vast, de nieuwe file heet bv test 2 als actieve file

Ik heb de volgende code

Code:
Sub Test()

    Workbooks.Open Filename:= _
        "D:\Documenten\database.xlsm"
    
    Range("B3:F1000").Select
    Selection.Copy
    
    Windows("Test1.xlsm").Activate
    Range("B3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    
    Application.CutCopyMode = False
    
    
End Sub
 
Laatst bewerkt door een moderator:
Als je dit in zijn geheel plakt in een module:
Zoals je ziet geef ik ook aan om welke sheet het gaat. De bestanden worden nu niet automatisch gesloten na de macro, zou ook kunnen.

Het is nog wat gissen maar dit zou moeten werken.

Code:
Sub jec()
 Application.ScreenUpdating = False
 If IsFileOpen("database.xlsm") Then
   Workbooks("database.xlsm").Sheets(1).Range("B3:F1000").Copy
   Workbooks("Test1.xlsm").Sheets(1).Range("B3").PasteSpecial xlPasteValues
 Else
   Workbooks.Open("D:\Documenten\database.xlsm").Sheets(1).Range("B3:F1000").Copy
   Workbooks("Test1.xlsm").Sheets(1).Range("B3").PasteSpecial xlPasteValues
 End If
End Sub


Function IsFileOpen(objFile As String) As Boolean
  On Error Resume Next
  Set fileopen = Workbooks.Item(objFile)
  IsFileOpen = Not fileopen Is Nothing
End Function
 
Hallo Jveer,

Het bovenstaande is zeker een gedeelte wat ik zoek.

De macro is opgeslagen in een template als voorbeeld genomen test1.
Nu wordt deze template steeds opnieuw opgeslagen onder een nieuwe naam als voorbeeld test 2 of test 3 bv.
Als ik de desbetreffende file open test1 of bv test3 zou ik de file moeten kunnen updaten, uit de database.
Dus de file die geüpdatet wordt is dus active maar kan dus de ene keer test 1 heten maar ook bv test 10.
Maar de macro is wel ingesloten in de template bv “test5”

Ook zou ik de database weer willen sluiten na de update.
Hopelijk is het een beetje duidelijk?

Alvast bedankt
 
Laatst bewerkt:
bv.
Code:
Sub hsv()
 ThisWorkbook.Sheets(1).Range("b3:f1000") = GetObject("d:\documents\database.xlsm").Sheets(1).Range("b3:f1000").Value
End Sub
 
Probeer het eens zo
Klopt het dat je 3 bestanden open hebt staan?

Het bestand vanwaar je de macro runt, de database en het bestand waarin je plakt?

Code:
Sub jec()
 Application.ScreenUpdating = False
 Application.DisplayAlerts = False
 
 n = Application.InputBox("Hoeveelste testfile is dit?", "Kies", , , , , , 1)
 If IsFileOpen("database.xlsm") Then Set wb = Workbooks("database.xlsm") Else: Set wb = Workbooks.Open("D:\Documenten\database.xlsm")
 wb.Sheets(1).Range("B3:F1000").Copy
 Workbooks("Test" & n & ".xlsm").Sheets(1).Range("B3").PasteSpecial xlPasteValues
 wb.Close 0
 
 Application.DisplayAlerts = True
End Sub


Function IsFileOpen(objFile As String) As Boolean
  On Error Resume Next
  Set fileopen = Workbooks.Item(objFile)
  IsFileOpen = Not fileopen Is Nothing
End Function
 
Laatst bewerkt:
Als het bestand niet meer zichtbaar is.
Code:
Sub hsv()
with GetObject("d:\documents\database.xlsm")
 ThisWorkbook.Sheets(1).Range("b3:f1000") = .Sheets(1).Range("b3:f1000").Value
  windows(1).visible = true
  .close false
 end with
End Sub
 
Nee ik heb maar 1 bestand open, waar de code is opgeslagen.
Ik heb deze test1 of test 2 genoemd maar dit was als voorbeeld.
De file word namelijk iedere keer opgeslagen onder onderdeelnummer en datum.
Maar als ik dus de desbetreffende file open zou ik dus moeten kunnen update uit de database file

Er is 1 file, de database waar steeds records worden toegevoegd en of gewijzigd. Deze worden dus sporadisch gewijzigd.
Dus kan dus open staan als iemand wat wil wijzigen, deze database is dus normaal gesloten.

Hopelijk is het een beetje duidelijk
 
Zie code HSV dan.
 
Kijk ook eens bij data / connections.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan