Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1468to1472
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Anpassung eines Scriptes für Export

Anpassung eines Scriptes für Export
11.01.2016 13:38:43
Hardy
Hallo und Guten Tag,
habe ein Problem, ein VBA Script für den Export von Tabellenblättern anzupassen. Und zwar handelt es sich um folgendes, was meinen ausgewählten Bereich (i3:i27 = True) schon drucken kann. Die Namen der zu druckenden/exportierenden Blätter stehen in H3:H27.
------------
Private Sub CommandButton1_Click()                  '   Bereich für die Druckauswahl
Dim i As Integer, j As Integer
Dim arrSheets()
If Application.WorksheetFunction.CountIf(Range("I3:I27"), True) = 0 Then
MsgBox "Keine Auswahl getroffen"
Exit Sub
End If
For i = 3 To 27
If Cells(i, 9) = True Then
ReDim Preserve arrSheets(j)
arrSheets(j) = Cells(i, 8)
Sheets(arrSheets(j)).Visible = True
j = j + 1
End If
Next
Sheets(arrSheets).Select
Application.Dialogs(xlDialogPrint).Show
Sheets(arrSheets).Visible = False
Dim sh As Worksheet
For Each sh In Worksheets
sh.Visible = xlSheetVisible
Next
Sheets("Auswahl").Select
End Sub

-------
Hat einer von Euch eine Idee oder sogar schon eine Lösung Parat.
Danke Euch für eure mithilfe. Ach ja, es handelt sich um eine xlsm-Datei. Aus der exportiert werden soll. Es sollen die Werte der Blätter und die Bedingte Formatierung in eine Neue Datei übernommen werden, die aus Zelle B3 ihren Namen beziehen soll.

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Anpassung eines Scriptes für Export
11.01.2016 17:55:36
Hardy
Ich stelle es mir wie in diesem Script vor.
Nur möchte ich den Bereich der Arbeitsmappen auswählen können, und es soll im Excelformat gespeichert werden, mit Übernahme der Werte und Bedingter Formatierungen.
----------------
Private Sub CommandButton5_Click()
Sheets(Array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", " _
September", "Oktober", "November", "Dezember")).Select
ActiveSheet.PageSetup.PrintArea = Range("A1:AI33").Address
Selection.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\Mappe.pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, OpenAfterPublish:=True
ActiveSheet.PageSetup.PrintArea = ""
End Sub

--------------
Als PDF speicherer hat das Script noch die Macke, das nur die aktiven Zellen gedruckt werden, und nicht der Bereich von A1 bis AI33, außer er ist markiert.

Anzeige
AW: Anpassung eines Scriptes für Export
13.01.2016 07:10:28
Hardy
Hm keiner ne Idee?

AW: Anpassung eines Scriptes für Export
13.01.2016 07:55:17
Sepp
Hallo Hardy,
meinst du so? (ungetestet!)
Private Sub CommandButton5_Click()
Dim objWS As Worksheet, varSheets As Variant
Dim strPath As String, strExtension As String, strName As String
Dim lngFormat As Long, lngI As Long, lngJ As Long
Dim CalculationMode As Long

On Error GoTo ErrorHandler

With Application
  .ScreenUpdating = False
  .EnableEvents = False
  CalculationMode = .Calculation
  .Calculation = xlManual
  .DisplayAlerts = False
End With

With ThisWorkbook
  strPath = .Path & "\"
  strExtension = .Name
  strExtension = Right(strExtension, InStrRev(strExtension, "."))
  lngFormat = .FileFormat
  
  With .Sheets("Auswahl")
    If Application.WorksheetFunction.CountIf(.Range("I3:I27"), True) = 0 Then
      MsgBox "Keine Auswahl getroffen"
    Else
      strName = .Range("B3").Text
      For lngI = 3 To 27
        If .Cells(lngI, 9) = True Then
          Redim Preserve varSheets(lngJ)
          varSheets(lngJ) = .Cells(lngI, 8).Text
          .Sheets(varSheets(lngJ)).Visible = True
          lngJ = lngJ + 1
        End If
      Next
    End If
  End With
End With

If lngJ > 0 Then
  ThisWorkbook.Sheets(varSheets).Copy
  
  With ActiveWorkbook
    For Each objWS In .Worksheets
      With objWS
        .UsedRange = .UsedRange.Value
        .Range(.Cells(34, 1), .Cells(.Rows.Count, 1)).EntireRow.Delete
        .Range(.Cells(1, 36), .Cells(1, .Columns.Count)).EntireRow.Delete
      End With
    Next
    .SaveAs Filename:=strPath & strName & strExtension, FileFormat:=lngFormat
    .Close
  End With
End If

ErrorHandler:

With Err
  If .Number <> 0 Then
    MsgBox "Fehler in Prozedur:" & vbTab & "'CommandButton5_Click'" & vbLf & String(25, "—") & _
      vbLf & vbLf & IIf(Erl, "Fehler in Zeile:" & vbTab & Erl & vbLf & vbLf, "") & _
      "Fehlernummer:" & vbTab & .Number & vbLf & vbLf & "Beschreibung:" & vbTab & _
      .Description & vbLf, 81968, "VBA - Fehler in Prozedur - CommandButton5_Click", .HelpFile, .HelpContext
    .Clear
  End If
End With

On Error GoTo 0

With Application
  .ScreenUpdating = True
  .EnableEvents = True
  .Calculation = CalculationMode
  .DisplayAlerts = True
  .CutCopyMode = False
  .StatusBar = False
End With

End Sub

Gruß Sepp

Anzeige
AW: Anpassung eines Scriptes für Export
13.01.2016 08:55:44
Hardy
Hm erhalte eine Fehlermeldung
Fehler 13
Typen unverträglich.
Versuche gerade das Script zu verstehen
Danke Dir schon mal

AW: Anpassung eines Scriptes für Export
13.01.2016 10:16:41
Hardy
Habe versucht, den Fehler zu lokalisieren,
lngJ ist 0
Gruß Hardy

AW: Anpassung eines Scriptes für Export
13.01.2016 12:15:23
Sepp
Hallo Hardy,
jetzt getestet ;-))
Private Sub CommandButton4_Click()
Dim objWS As Worksheet, varSheets() As Variant
Dim strPath As String, strExtension As String, strName As String
Dim lngFormat As Long, lngI As Long, lngJ As Long
Dim CalculationMode As Long

On Error GoTo ErrorHandler

With Application
  .ScreenUpdating = False
  .EnableEvents = False
  CalculationMode = .Calculation
  .Calculation = xlManual
  .DisplayAlerts = False
End With

With ThisWorkbook
  strPath = .Path & "\"
  strExtension = ".xlsx"
  lngFormat = 51
  
  With Me
    If Application.WorksheetFunction.CountIf(.Range("I5:I16"), True) = 0 Then
      MsgBox "Keine Auswahl getroffen"
    Else
      strName = .Range("B3").Text
      For lngI = 5 To 16
        If .Cells(lngI, 9) = True Then
          Redim Preserve varSheets(lngJ)
          varSheets(lngJ) = .Cells(lngI, 8).Text
          Sheets(varSheets(lngJ)).Visible = True
          lngJ = lngJ + 1
        End If
      Next
    End If
  End With
End With

If lngJ > 0 Then
  ThisWorkbook.Sheets(varSheets).Copy
  
  With ActiveWorkbook
    For Each objWS In .Worksheets
      With objWS
        .UsedRange = .UsedRange.Value
        .Range(.Cells(34, 1), .Cells(.Rows.Count, 1)).EntireRow.Delete
        .Range(.Cells(1, 36), .Cells(1, .Columns.Count)).EntireRow.Delete
      End With
    Next
    .SaveAs Filename:=strPath & strName & strExtension, FileFormat:=lngFormat
    .Close
  End With
End If

ErrorHandler:

With Err
  If .Number <> 0 Then
    MsgBox "Fehler in Prozedur:" & vbTab & "'CommandButton5_Click'" & vbLf & String(25, "—") & _
      vbLf & vbLf & IIf(Erl, "Fehler in Zeile:" & vbTab & Erl & vbLf & vbLf, "") & _
      "Fehlernummer:" & vbTab & .Number & vbLf & vbLf & "Beschreibung:" & vbTab & _
      .Description & vbLf, 81968, "VBA - Fehler in Prozedur - CommandButton5_Click", .HelpFile, .HelpContext
    .Clear
  End If
End With

On Error GoTo 0

With Application
  .ScreenUpdating = True
  .EnableEvents = True
  .Calculation = CalculationMode
  .DisplayAlerts = True
  .CutCopyMode = False
  .StatusBar = False
End With

End Sub

Gruß Sepp

Anzeige
AW: Anpassung eines Scriptes für Export
13.01.2016 14:10:26
Hardy
Hallo Sepp,
Dein Script funktioniert Super. Vielen Dank dafür.
1 Frage hätte ich noch.
Warum verliert er von den Monatsblättern die Bedingte Formatierung ? Ist das ein generelles Problem?
Es ist nicht gravierend. Kann man in der ausgegebenen Datei leicht wieder einfärben, da Markierungen im Ursprung gesetzt werden.
UsedRange.Value bedeutet das nur die Ergebnisse/Werte übernommen werden?
wünsche noch einen angenehmen Tag
Gruß Hardy

AW: Anpassung eines Scriptes für Export
13.01.2016 14:18:36
Sepp
Hallo Hardy,
statt .UsedRaneg = .UsedRange.Value
nimm
.UsedRange.Copy
.UsedRange.PasteSpecial xlPasteValues
.UsedRange.PasteSpecial xlPasteFormats

Gruß Sepp

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige