Selecten sheet en sluiten, wat doe ik fout?

Status
Niet open voor verdere reacties.

MJKoolschijn

Gebruiker
Lid geworden
3 jan 2014
Berichten
51
Hallo,

IK heb een document waarin ik een bestand kan selecteren (heet dan SOURCE), nadat ik een tab hieruit gekopieerd heb wil ik dit neituwe bestand weer sluiten. Maar hij werkt zo neit. Zou iemand weten wat ik fout doe?

Workbooks.Add SOURCE

Sheets("sheet1").Copy After:=Workbooks("PMP.xlsm").Sheets(1)
Sheets("Blad1").Activate

Application.Goto Workbooks = SOURCE (hier blijft hij hangen!!)
Workbooks(SOURCE).Activate
ActiveWorkbook.Saved = True
Application.Quit


Alvast bedankt,.
Maarten

Bekijk bijlage PMP.xlsm
 
Maarten,

Wat je met je application.goto wilt is mijn niet duidelijk.
Op het moment dat je een werkbook opent met Workbooks.add is dit het active werkbook.
Na het kopiëren van het tabblad "Sheet1" (als dat in het net geopend bestand bestaat) wil
je naar tabblad "Blad1" waarom is mij ook weer niet duidelijk (als dit tabblad bestaat).
Daarna activeer je het bronbestand (niet nodig, deze was al actief) sla je de gegevens
van het bronbestand op (niet nodig, hier is niets gewijzigd) en sluit je excel af.
(zonder opslaan van de doelbestand PMP.xlsm).

Ik vrees dat je niet duidelijk is in welk bestand je bezig bent. Hierbij de macro zoals hij er volgens mij uit moet zien.

Code:
Public Sub TestExplorer()
Dim inputFileDialog As FileDialog                                                   'Definieer filehandler
Dim SOURCE As String                                                                'Definieer naam bestand

Set inputFileDialog = Application.FileDialog(msoFileDialogOpen)                     'Vul het filedialog object

With inputFileDialog
    .Title = "Selecteer bestand"                                                    'Naam van het scherm
    .AllowMultiSelect = False                                                       'Je kunt maximaal een bestand per keer kiezen
    .Filters.Clear                                                                  'Alle automatische filters verwijderen.
    .Filters.Add "Excel files", "*.xls; *.xlsx; *.CSV; *.xlsm", 1                   'Toon alleen de Excel bestanden
    If .Show = False Then Exit Sub                                                  'Toon het Filedialog, als niets wordt gekozen dan stoppen.
    SOURCE = .SelectedItems(1)                                                      'Neem het gekozen bestand en zet dit in een variabele
End With

Cells(6, 6).Value = SOURCE                                                          'Zet naam van bestand in werkblad
Workbooks.Add SOURCE                                                                'Open het bronbestand.

Sheets("sheet1").Copy After:=Workbooks("PMP.xlsm").Sheets(1)                        'Kopieer source bestand naar new tab
Workbooks(SOURCE).Close SaveChanges:=False                                          'Sluit bronbestand.

End Sub

Veel Succes.
 
Daar heb je geen objectvariabele voor nodig:

Code:
Public Sub M_snb()
  With Application.FileDialog(1)
    If .Show Then
       Cells(6, 6) = .SelectedItems(1)

        With GetObject(.SelectedItems(1))
            .Sheets(1).Copy ThisWorkbook.Sheets(1)
            .Close 0
        End With
    End If
  End With
End Sub
 
Laatst bewerkt:
Bedankt voor jullie reply,

Wow SNB, dat gaat me boven mij pet. Doe het in delen om het nog redelijk te begrijpen voor mezelf.

Elsendoorn, heb jou code toegevoegd, maar hij loopt vast op sluiten bron bestand regel...

Nog even voor wat duidelijkheid. In het door mij te openen bestand bestaat maar een sheet, die wil ik kopieren.
Die kopie wil ik (tijdelijk) op mijn eigen sheet zetten (parkeren), waarna ik hem later verplaatst naar een verzamel sheet en de sheet name wijzig.

Maar dat zijn stappen voor later, eerst dit in orde krijgen.

Alvast bedankt
 
Maarten,

Hier een variatie op de macro, waarbij het sluiten ook goed gaat.

Code:
Public Sub TestExplorer()
Dim inputFileDialog As FileDialog                                                   'Definieer filehandler
Dim SOURCE As String                                                                'Definieer naam bestand

Set inputFileDialog = Application.FileDialog(msoFileDialogOpen)                     'Vul het filedialog object

With inputFileDialog
    .Title = "Selecteer bestand"                                                    'Naam van het scherm
    .AllowMultiSelect = False                                                       'Je kunt maximaal een bestand per keer kiezen
    .Filters.Clear                                                                  'Alle automatische filters verwijderen.
    .Filters.Add "Excel files", "*.xls; *.xlsx; *.CSV; *.xlsm", 1                   'Toon alleen de Excel bestanden
    If .Show = False Then Exit Sub                                                  'Toon het Filedialog, als niets wordt gekozen dan stoppen.
    SOURCE = .SelectedItems(1)                                                      'Neem het gekozen bestand en zet dit in een variabele
End With

Cells(6, 6).Value = SOURCE                                                          'Zet naam van bestand in werkblad
Workbooks.Open SOURCE                                                               'Open het bronbestand.

Sheets("Sheet1").Copy After:=Workbooks("PMP.xlsm").Sheets(1)                         'Kopieer source bestand naar new tab
Workbooks(Mid(SOURCE, InStrRev(SOURCE, "\") + 1, 1000)).Close SaveChanges:=False                                     'Sluit bronbestand.

End Sub

Veel Succes
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan