Kopiera cellområde till ny arbetsbok
I detta tips belyses hur vi relativt enkelt kan kopiera ett cellområde från en aktiv arbetsbok till en ny arbetsbok, som sparas och stängs.
Option Explicit
Sub Kopiera_Cellomrade_Ny_Arbetsbok()
'© 2002 Alla rättigheter XL-Dennis
Dim wbNyBok As Workbook
Dim rnOmradeKopiera As Range
Dim sMedd As String, sTitel As String, stSvar As String
'Att variabeln vaFilnamn deklareras som Variant
'och inte som String beror på det faktum att vi
'här använder oss av svensk version och XL skulle utvärdera
'uttrycket sFilnamn = "False" som "Falskt" varför händelsen
'"False" aldrig kan inträffa och vi skulle få en oändlighetsloop.
Dim vaFilnamn As Variant
sMedd = " existerar redan. Vill du ersätta nuvarande arbetsbok?"
sTitel = "För din information"
ForsokIgen:
'Kontroll att ett cellområde är markerat
If TypeOf Selection Is Range Then
'Öppnar dialogrutan "Spara / Spara Som"
vaFilnamn = Application.GetSaveAsFilename(Filefilter:="Excel Arbetsbok(*.xls), *.xls")
'Om användaren klickar på Avbryt-knappen i dialogrutan
If vaFilnamn = False Then
MsgBox "Arbetsboken sparades ej.", vbOKOnly, sTitel
Exit Sub
End If
'Kontroll om arbetsboken redan existerar
If Dir(vaFilnamn) <> "" Then
stSvar = MsgBox("Arbetsboken " & vaFilnamn & sMedd, _
vbYesNoCancel + vbExclamation, sTitel)
Select Case stSvar
Case vbCancel
stSvar = False
Exit Sub
Case vbNo
GoTo ForsokIgen
Case vbYes
End Select
End If
Application.ScreenUpdating = False
'Här kopieras det markerade cellområdet, den nya arbetsboken sparas och stängs.
Set rnOmradeKopiera = Selection
Set wbNyBok = Workbooks.Add
rnOmradeKopiera.Copy wbNyBok.Worksheets(1).Range("A1")
wbNyBok.Worksheets(1).UsedRange.EntireColumn.AutoFit
Application.DisplayAlerts = False
With wbNyBok
.SaveAs Filename:=vaFilnamn
.Close
End With
Application.DisplayAlerts = True
MsgBox "Arbetsboken sparad som: " & vaFilnamn, _
vbOKOnly + vbInformation, sTitel
End If
Application.ScreenUpdating = True
End Sub