|
||||
Disse websidene oppdateres ikke lengre og er kun tilgjengelig for historikken sin skyld.Klikk her for å gå til den oppdaterte informasjonen. Eksporterer data til et nytt regneark/arbeidsbokDenne makroen eksporterer verdier eller formler og diagrammer fra et regnearkområde til et nytt regneark/arbeidsbok: Sub ExportRangeAsWB(SourceRange As Range, TargetFile As String, SaveValuesOnly As Boolean) ' Eksporterer data i regnearkområdet SourceRange til ' arbeidsboken TargetFile i et standard arbeidsbokformat ' Eksempler: ' ExportRangeAsWB Range("A1:M25"), "C:\FolderName\TargetWB.xls", True ' ExportRangeAsWB Worksheets("Sheet2").Range("A1:M25"), "C:\FolderName\TargetWB.xls", True Dim r As Long, c As Integer, tr As Long Dim TargetWB As Workbook, A As Integer Dim co As ChartObject ' valider input If SourceRange Is Nothing Then Exit Sub If Len(Dir(TargetFile)) > 0 Then On Error Resume Next Kill TargetFile On Error GoTo 0 If Len(Dir(TargetFile)) > 0 Then MsgBox TargetFile & _ " finnes fra før, flytt, slett eller gi filen et nytt navn før du forsøker igjen.", _ vbInformation, "Export range to textfile" Exit Sub End If End If ' eksporter data Application.ScreenUpdating = False Set TargetWB = NewWorkbook(1) ' oppretter en ny arbeidsbok med ett regneark tr = 1 For A = 1 To SourceRange.Areas.Count SourceRange.Areas(A).Copy If SaveValuesOnly Then With Range("A" & tr) .PasteSpecial xlPasteValues .PasteSpecial xlPasteFormats End With Else Range("A" & tr).PasteSpecial xlPasteAll End If Application.CutCopyMode = False With SourceRange.Areas(A) ' set rowheights For r = 1 To .Rows.Count Rows(r).RowHeight = .Rows(r).RowHeight Next r ' set columnwidths For c = 1 To .Columns.Count Columns(c).ColumnWidth = .Columns(c).ColumnWidth Next c End With For Each co In SourceRange.Parent.ChartObjects ' Debug.Print co.TopLeftCell.Address, co.BottomRightCell.Address If Not Intersect(SourceRange.Areas(A), co.TopLeftCell) Is Nothing Then 'If Not Intersect(SourceRange.Areas(A), co.BottomRightCell) Is Nothing Then If Not Intersect(SourceRange.Areas(A), co.BottomRightCell.Offset(-1, -1)) Is Nothing Then ' hele diagrammet er innenfor eksportområdet co.Copy ' kopier diagramobjektet Range(co.TopLeftCell.Address).PasteSpecial xlPasteAll ' lim inn diagramobjektet End If End If Next co Set co = Nothing tr = tr + SourceRange.Areas(A).Rows.Count ' angi neste målrad Next A ' rydd opp Range("A1").Select TargetWB.SaveAs TargetFile 'If TargetWB.Saved Then TargetWB.Close False ' lukk den nye arbeidsboken Set TargetWB = Nothing Application.ScreenUpdating = True End Sub Private Function NewWorkbook(wsCount As Integer) As Workbook ' oppretter en ny arbeidsbok med wsCount (1 til 255) antall regneark Dim OriginalWorksheetCount As Long Set NewWorkbook = Nothing If wsCount < 1 Or wsCount > 255 Then Exit Function OriginalWorksheetCount = Application.SheetsInNewWorkbook Application.SheetsInNewWorkbook = wsCount Set NewWorkbook = Workbooks.Add Application.SheetsInNewWorkbook = OriginalWorksheetCount End Function
Dokumentet er sist oppdatert 2006-07-11 20:11:56 Utskriftsvennlig versjon
|
||||
|