Excel-werkblad automatisch invoegen in een andere werkmap

Status
Niet open voor verdere reacties.

gast0667

Gebruiker
Lid geworden
20 dec 2007
Berichten
136
Vraag: Is onderstaande mogelijk met VBA (volledig automatisch) ?

Ik heb een werkblad 'A' in een excel-bestand '1'.
Middels een btn-knop in werkblad 'A' wil ik graag dat onderstaande plaatsvindt:

- VBA opent een juiste excel-bestand, bijvoorbeeld '2' (die in een andere directory staat).
- Bij het openen moet het mogelijk zijn dat de gebruiker:
1) of zelfstandig het excel-bestand aan kan klikken (vergelijkbaar met 'Openen van bestand'
2) of dat VBA het bestand (dus de pad-naam van het bestand) automatisch kan vinden en vervolgens openen.

- Verder moet VBA dan (nog steeds in de zelfde VBA-code) automatisch werkblad 'A' van bestand '1' invoegen achter een bepaalde werkblad in bestand '2'
- Hiervan een melding geven dat e.e.a. is gekopieerd naar het bestand '2' achter werkblad '....' en vervolgens bestand '1' afsluiten.
- Hierna moet werkblad '2' automatisch de 'focus' krijgen.

Hoor graag jullie ideeën.
Alvast bedankt.
 
Je weet wel wat je vraagt hè! :p

Nou vooruit, hier komt ie. Omdat ik zo'n ontzettende goedzak ben... :D
Code:
Public Sub CopySheetFromOtherWorkbook()
    Dim vFilename
    Dim SourceBook As Workbook
    Dim TargetBook As Workbook
    Dim sSheet1 As String
    Dim sSheet2 As String
    
    'geef aan wat het originele werkboek is
    '(het werkboek waarin we gaan werken)
    Set TargetBook = Application.ActiveWorkbook
    
    'kijk of het standaard werkboek bestaat
    If FileExists("c:\data.xls") Then
        'het standaardbestand bestaat dus open die
        vFilename = "c:\data.xls"
    Else
        'het standaardbestand bestaat niet, dus vraag de gebruiker
        'om een bestand te selecteren
        vFilename = Application.GetOpenFilename("Excel bestanden (*.xls), *.xls")
    End If
    
    'kijk of er een bestand is geselecteerd
    If vFilename <> False Then
        'een bestand is geselecteerd dus open die
        Set SourceBook = Workbooks.Open(vFilename)
        
        'kopieer sheet "A" van het geopende werkboek
        SourceBook.Sheets("A").Select
        'plak de gekopieerde sheet achter de eerste sheet v/h originele werkboek
        SourceBook.Sheets("A").Move After:=TargetBook.Sheets(1)
        
        'geef melding dat de sheet is gekopieerd
        sSheet1 = "A"
        sSheet2 = TargetBook.Sheets(1).Name
        MsgBox "Sheet " & sSheet1 & " is gekopieerd in werkboek " & TargetBook.Name & " achter sheet " & sSheet2, _
               vbInformation + vbOKOnly, _
               "Sheet gekopieerd!"
        
        'sluit het geopende werkboek
        SourceBook.Close False
        
        'geef de nieuwe sheet in het originele werkboek de focus
        TargetBook.Sheets("A").Select
    End If
    
End Sub

Private Function FileExists(fname) As Boolean
'Geeft TRUE terug als een bestand bestaat
    Dim x As String
    
    x = Dir(fname)
    FileExists = IIf(x <> "", True, False)
    
End Function
 
Krijg ik nou een kerstpakketje van je? Bij nader inzien... een paaspakketje? ;)
 
Krijg ik nou een kerstpakketje van je? Bij nader inzien... een paaspakketje? ;)

:D Geinponnem :D
Maar :thumb: voor de code. Hij werkt.
Moest hem alleen even iets aanpassen (kopieren gebeurde namelijk anders om)

:)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan