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

Tabblad opslaan met alleen de waarden van de cellen

Status
Niet open voor verdere reacties.

badabing60

Gebruiker
Lid geworden
8 jun 2009
Berichten
18
Hallo,

ik heb een macro gemaakt waarin op bepaalde tijdstippen een tabblad van een excell 2007 document wordt opgeslagen. In dit tabblad staan dde koppelingen waardoor de waarden van die cellen constant veranderen. Nu worden bij het opslaan die koppelingen meegekopieerd. Dat wil ik niet ik wil alleen een kopie van de waarden van dat moment. Hoe doe ik dat?

hierbij een de macro zoals ik 'm heb.

Sub printen16()
'
' printen16 Macro
'
Dim sName, sDate As String
Dim i As Integer
Dim wb As Workbook

With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With

Workbooks("project1.xlsm").Activate

ChDir "C:\Documents and Settings\HP_Administrator\Bureaublad\map16"

Sheets("vandaag").Select
sName = ActiveSheet.Name
ActiveSheet.Copy

Set destwb = ActiveWorkbook
For Each sh In Worksheets
If sh.Index > 1 Then
sh.Delete
End If
Next

With ActiveWorkbook
.SaveAs Filename:=Format(Now(), "dd-mm-yyyy hh-nn-ss ") & sName & ".xls", FileFormat:=xlNormal, Password:="", ReadOnlyRecommended:=False, CreateBackup:=False
.Saved = True
.Close
End With

Sheets("hoofd").Select

'
End Sub


Iemand enig idee?
 
Je kunt alleen de waarde plakken met.

PasteSpecial xlPasteValues

Meer info bij de helpfunctie

mvg leo
 
beste Leo, heb net gekeken bij help maar snap niet hoe je deze code moet toepassen of in welk gedeelte het evt geplaatst moet worden. Misschien kan jij mij iets verder op weg helpen? alvast bedankt!
 
pastespecial gebruik je o.a bij het range object
Een voorbeeld bestandje zou handig zijn

Maar uitgaande van het blad "vandaag" waar een nieuw werkboek van gemaakt wordt zou het er zo uit kunnen zien.
Code:
Sub printen16()
'
' printen16 Macro
'
Dim sName As String
Dim sDate As String
Dim i As Integer
Dim wb As Workbook

With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With

Workbooks("project1.xlsm").Activate

ChDir "C:\Documents and Settings\HP_Administrator\Bureaublad\map16"

Sheets("vandaag").Copy
sName = ActiveWorkbook.Name
Workbooks("project1.xls").Worksheets("vandaag").Activate
Cells.Copy
Application.Windows(sName).Activate
Range("A1").PasteSpecial xlPasteValues

With ActiveWorkbook
   .SaveAs Filename:=Format(Now(), "dd-mm-yyyy hh-nn-ss ") & "vandaag" & ".xls"
   .Saved = True
   .Close
End With

Sheets("hoofd").Select
End Sub
 
Laatst bewerkt:
dit werkt

Beste leo,

Hartelijk dank!, jouw oplossing werkt perfect.

De ddekoppelingen zijn vervangen door de waarden tijdens het tijdstip waarop de macro wordt uitgevoerd.

Nu is het zo dat ik ook nog een macro printen 18 heb. daarin pas ik jou methode ook toe omdat deze macro nagenoeg gelijk is aan printen 16. bij deze macro raakt excel van slag en moet ik alles afsluiten. Dit gebeurt op het moment dat de regel met Range("A1").PasteSpecial xlPasteValues wordt bereikt.

Op het moment dat de macro start is workbook project1 actief, en is workbook project2 op de achtergrond bezig. ik wil dus naar project2 een kopie van werkblad vandaag18 maken en dan terugkeren naar project1 en werkblad vandaag

Hierbij de volledige macro.

Sub printen18()
'
' printen18 Macro
'
Dim sName As String
Dim sDate As String
Dim i As Integer
Dim wb As Workbook

With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With

Workbooks("project2.xlsm").Activate

ChDir "C:\Documents and Settings\HP_Administrator\Bureaublad\map18"

Sheets("vandaag18").Copy
sName = ActiveWorkbook.Name
Workbooks("project2.xls").Worksheets("vandaag18").Activate
Cells.Copy
Application.Windows(sName).Activate
Range("A1").PasteSpecial xlPasteValues

With ActiveWorkbook
.SaveAs Filename:=Format(Now(), "dd-mm-yyyy hh-nn-ss ") & "vandaag18" & ".xls"
.Saved = True
.Close
End With

Workbooks("project1").Activate
Workbooks("project1").Worksheets("vandaag").Activate
End Sub

weet je misschien wat hier de oorzaak van is?

alvast bedankt!
 
Hou het simpel:

Code:
sq= Workbooks("project1.xlsm").sheets("vandaag").usedrange
with workbooks.add
  .sheets(1).cells(1,1).resize(ubound(sq),ubound(sq,2))=sq
  .saveas "C:\Documents and Settings\HP_Administrator\Bureaublad\map18\" & Format(Now(), "dd-mm-yyyy hh-nn-ss ") & "vandaag18.xls"
  .close false
End with

Deze doet hetzelfde als jouw code
 
Beste snb,

Ik heb 2 projecten (excel workbooks) op "project1" en "project2". "project1" staat voor, met een macro die hierin is opgenomen wil ik uit "project2" een kopie van een worksheet "vandaag18" maken waarbij de waarden van de ddekoppelingen wordt bewaard. zodra dat gebeurt is wil ik "project1" worksheet "vandaag" weer actief op het beeldscherm hebben. jouw code is compact maar haalt 2 dingen door elkaar.

vriendelijk bedankt voor het reageren
 
Quod non
Vermijd select en activate in VBA-code: overbodig, vertragend en verwarrend (zie jouw eerste zinloze copy-opdracht Sheets("vandaag18").Copy)

Code:
sq= Workbooks("project2.xls").sheets("vandaag").usedrange
with workbooks("project2.xlm")
  .sheets(1).cells(1,1).resize(ubound(sq),ubound(sq,2))=sq
  .saveas "C:\Documents and Settings\HP_Administrator\Bureaublad\map18\" & Format(Now(), "dd-mm-yyyy hh-nn-ss ") & "vandaag18.xls"
  .close false
End with
 
Laatst bewerkt:
opgelost

Beste reageerders,

ik heb de macro's, zoals door leo aangedragen gewoon in het betreffende werkblad ondergebracht en een ontime sub in het workbook gezet. beide werken nu goed.

bedankt voor alle hulp!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan