• 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.

Cellen kopiëren als waarde en werkblad exporteren als .xls

Status
Niet open voor verdere reacties.

ngijsbers

Gebruiker
Lid geworden
17 mei 2018
Berichten
8
Hallo Allen,

Ik ben op zoek naar een VBA code waarmee ik gegevens uit het werkblad "Exportpagina" als los Excelbestand worden opgeslagen. Echter zijn er enkele voorwaarden.

- De "exportpagina" is nu voorzien van codes in cellen. Bij het opslaan dienen alleen de uitkomsten/gegevens overgenomen te worden. De achterliggende formules moeten dus worden omgezet in harde waardes.
- De "exportpagina" bevat nu in veel cellen een "0" doordat de index-formule geen resultaat heeft kunnen vinden. Deze "0" mag niet worden overgenomen in het op te slaan bestand.
- De bestandsnaam incl. padnaam is opgegeven in werkblad "Setup" cel C37
- Het bestand wat opgeslagen moet worden dient in .XLS te zijn.


Ik heb het al voor elkaar dat het specifieke werkblad wordt opgeslagen in .XLS. Maar hoe krijg ik het voor elkaar dat de formules worden omgezet in waarden en dat iedere cel met "0" wordt leeggemaakt?

Dank voor jullie hulp!

Huidige code:
Code:
Sub Opslaan()
  Dim strFileName As Variant
  Dim strPath As String
  strFileName = Sheets("Setup").Range("C37").Value
  
  If strFileName = False Then
    MsgBox "Oh oh... je hebt niet opgeslagen! "
  Else
    Sheets("Exportpagina").Select
    ActiveSheet.Copy
    ActiveWorkbook.SaveAs Filename:=strFileName
    MsgBox "Gelukt!  Opgeslagen als: " & strFileName
  End If
End Sub
 
Om te beginnen door je document te plaatsen.
 
Vanzelfsprekend,
 

Bijlagen

  • concept calculatie V2.2.xlsm
    283,2 KB · Weergaven: 16
Geef op het blad Setup aan dat het document moet worden opgeslagen als .xlsx document en gebruik dan deze code:
Code:
Sub Opslaan()
  Dim strFileName As Variant
  Dim strPath As String
  
  strFileName = Sheets("Setup").Range("C37").Value
  
  If strFileName = False Then
    MsgBox "Oh oh... je hebt niet opgeslagen! "
  Else
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Sheets("Exportpagina").Copy
    ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value

    For Each cl In Range(ActiveSheet.UsedRange.Address)
        If cl = 0 Then cl.ClearContents
    Next cl

    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    ActiveWorkbook.SaveAs strFileName, 51
    ActiveWorkbook.Close
    MsgBox "Gelukt!  Opgeslagen als: " & strFileName
  End If
End Sub
 
Geweldig @edmoor!

Het werkt perfect. :d
Nu heb ik nog 1 aanvullende vraag.

Wanneer ik de "Exportsheet" verborgen heb werkt de code niet meer doordat hij het blad niet kan terugvinden.
Waar moet ik in de code de regel toevoegen dat eerst de exportsheet zichtbaar gemaakt moet worden en na de copy weer verborgen moet worden?

Super bedankt tot nu toe!
 
Dat kan zo:
Code:
Sub Opslaan()
  Dim strFileName As Variant
  Dim strPath As String
  
  strFileName = Sheets("Setup").Range("C37").Value
  
  If strFileName = False Then
    MsgBox "Oh oh... je hebt niet opgeslagen! "
  Else
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    [COLOR="#FF0000"]Sheets("Exportpagina").Visible = True[/COLOR]
    Sheets("Exportpagina").Copy
    ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value

    For Each cl In Range(ActiveSheet.UsedRange.Address)
        If cl = 0 Then cl.ClearContents
    Next cl

    [COLOR="#FF0000"]ThisWorkbook.Sheets("Exportpagina").Visible = False[/COLOR]
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    ActiveWorkbook.SaveAs strFileName, 51
    ActiveWorkbook.Close
    MsgBox "Gelukt!  Opgeslagen als: " & strFileName
  End If
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan