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

VBA ActiveSheet.Copy loopt vast bij sommige PC's

Status
Niet open voor verdere reacties.

oceanrace

Gebruiker
Lid geworden
14 mei 2008
Berichten
198
Hallo Forummers,
De volgende code werkt goed, echter bij sommige pc's krijg ik de melding dat er onvoldoende bronnen beschikbaar zijn of excel loopt vast.
Wie kan me helpen of deze code nog eens controleren?


Code:
Sub Opslaanzonderformules()
  Dim strFileName As Variant, strPath As String
  Dim VBProj As VBIDE.VBProject, VBComp As VBIDE.VBComponent, CodeMod As VBIDE.CodeModule
  Dim astrLinks As Variant
  strFileName = Application.GetSaveAsFilename(InitialFileName:=strPath & [AG2], _
                                              FileFilter:="Excel Files (*.xls), *.xls, Excel 2007 Files (*.xlsm), *.xslm", _
                                              FilterIndex:=1, _
                                              Title:="Opslaan als excel document (alleen werkblad kaart zonder formules)")
  If strFileName = False Then

    MsgBox "De kaart is niet opgeslagen!", vbInformation + vbOKOnly, "Er is iets misgegaan..."
  Else
      ActiveSheet.Copy
      With ActiveWorkbook
      With .Sheets("TK")
        .Unprotect
        .UsedRange.Value = .UsedRange.Value
        Union(.Range(.Cells(65, 1), .Cells(.Rows.Count, .Columns.Count)), _
            .Range(.Cells(1, 65), .Cells(65, .Columns.Count))).Clear
            ActiveSheet.Cells.ClearComments
            ActiveSheet.DrawingObjects.Visible = True
            ActiveSheet.DrawingObjects.Delete
        .Protect
      End With
      
    ' Define variable as an Excel link type.
    astrLinks = ActiveWorkbook.LinkSources(Type:=xlLinkTypeExcelLinks)

    ' Break the first link in the active workbook.
    For i = 1 To UBound(astrLinks)

    
    ActiveWorkbook.BreakLink _
        Name:=astrLinks(i), _
        Type:=xlLinkTypeExcelLinks
     Next i
     Set VBProj = .VBProject
     For Each VBComp In VBProj.VBComponents
            If VBComp.Type = vbext_ct_Document Then
                Set CodeMod = VBComp.CodeModule
                With CodeMod
                    .DeleteLines 1, .CountOfLines
                End With
            Else
                VBProj.VBComponents.Remove VBComp
            End If
        Next VBComp
    .SaveAs Filename:=strFileName

      End With
      A = MsgBox("Wil je de kaart printen? Maak een keuze, de opgeslagen kaart wordt vervolgens afgesloten om terug te gaan naar het origineel. ", vbQuestion + vbYesNo, "Gelukt, de kaart is opgeslagen!")

      If A = vbYes Then
    
          Application.Dialogs(xlDialogPrint).Show
      End If
      ActiveWorkbook.Close Savechanges:=False
  End If
End Sub
 
Dat ligt waarschijnlijk niet aan de code maar aan het feit dat er op betreffende computers teveel applicaties open staan die allemaal een deel van het werkgeheugen in beslag nemen. Zoek eens uit of dat zo is.
 
kan er verder nog iets aan de code verbeterd worden zodat deze wat meer compatible wordt met alle versies van excel en misschien minder geheugen vergt?
In office 2007 krijg ik altijd de melding dat hij geen VBA kan opslaan terwijl deze er juist uit moeten...
Ook als ik het opgeslagen bestand wil openen verwijst hij nog naar koppelingen, deze zouden er toch ook uit moeten zijn?

Het doel is om blad 1 zonder formules, zonder macro's, zonder koppelingen naar andere werkbladen en zonder beveiliging op te slaan.
Dus als een kaal werkblad met alleen waarden.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan