2016-09-30 5 views
3

Zuerst bin ich neu hier also bitte sei nett.Excel VBA - Als PDF exportieren

Ich habe eine Übersichtsarbeitsmappe erstellt, die einen Makro verwendet, um einen bestimmten Bereich ("A19: W105") aus einer Reihe von Arbeitsmappen in einem Ordner auszuwählen und die Werte in die Zusammenfassungsarbeitsmappe zu kopieren. Die Datenmenge in diesem Bereich variiert und kann manchmal 1 Zeile oder bis zu 86 Zeilen umfassen. Der Code funktioniert gut und ist unter:

With wsMaster 
      erow = .Range("B" & .Rows.Count).End(xlUp).Row 
      wsTemp.Range("A19:W105").Copy 
      .Range("B" & erow).Offset(1, 0).PasteSpecial xlPasteValues 
End With 

Ich habe dann eine Befehlsschaltfläche erstellt, um die Übersichtsarbeitsmappe als PDF zu speichern. Das Problem, auf das ich jetzt gestoßen bin, ist, dass mit dem Code, den ich geschrieben habe, alle leeren Zellen ausgewählt werden, die ebenfalls kopiert wurden. Dies führt zu einer PDF-Datei, die mehrere Seiten lang ist, obwohl nur 1 oder 2 Seiten tatsächlich Daten enthalten. Dieser Code wird wie folgt zu finden:

Dim lastrow As Long 
DateStr = Format(Date, "yyyy-mm-d") 

lastrow = Cells(Rows.Count, 2).End(xlUp).Row 
Range("B1:X" & lastrow).ExportAsFixedFormat Type:=xlTypePDF,_ 
     Filename:="K:\AALI\Forecasts\Exported PDF Summary Sheets\"_ 
     & "(" & DateStr & ") " & "MR Forecast and Budget Summary" & "_" _ 
     & Comment, Quality:=xlQualityStandard, IncludeDocProperties:=True,_ 
     IgnorePrintAreas:=False, OpenAfterPublish:=True 

Gibt es eine Möglichkeit nur den Bereich auswählen, das in ihm aktuelle Informationen hat?

UPDATE 1: Beigefügt ist ein Screenshot des Arbeitsblatts. Alles unter der letzten Datenzeile ist "Leer" (keine Formeln oder Text). Wenn das Makro jedoch die Informationen aus den anderen Dateien kopiert, sind einige der Werte aufgrund einer IFERROR-Formel leer. Macht das einen Unterschied? Auch beim Kopieren der Daten über habe ich eine Sortierfunktion in das Makro geschrieben, irgendwelche Probleme damit? Screenshot of file

Vielen Dank!

+0

Können Sie einen Screenshot bereitstellen. Gibt es Leerzeilen zwischen den Daten? Gibt es nach den Daten Leerzeilen? –

Antwort

0

Das Ausblenden der leeren Zeilen und das Setzen von IgnorePrintAreas auf True machen den Trick.

Dim x As Long, lastrow As Long 
Dim DateStr As String 


lastrow = Cells(Rows.Count, 2).End(xlUp).Row 
For x = 1 To lastrow 

    If WorksheetFunction.CountA(Rows(x)) = 0 Then Rows(x).Hidden = True 

Next 

DateStr = Format(Date, "yyyy-mm-d") 
Range("B1:X" & lastrow).ExportAsFixedFormat Type:=xlTypePDF, _ 
     FileName:="K:\AALI\Forecasts\Exported PDF Summary Sheets\" _ 
     & "(" & DateStr & ") " & "MR Forecast and Budget Summary" & "_" _ 
     & Comment, Quality:=xlQualityStandard, IncludeDocProperties:=True, _ 
     IgnorePrintAreas:=True, OpenAfterPublish:=True 
+0

Die gleichen Probleme treten auf. Ich habe der Beschreibung ein Update hinzugefügt. Ich werde auch den Kommentar wiederholen, den ich unter Adityas Beitrag hinterlassen habe: Alle Zeilen jenseits von 38 sind in diesem Fall leer, verhalten sich jedoch so, als ob ein Wert zugeordnet wäre (dh. Strg + Umschalt + Down findet 'Werte' bis zu Zeile 618, obwohl diesem Bereich keine Werte zugeordnet sind – RSpence

+0

Sind Sie sicher, dass keine Leerzeichen vorhanden sind? Ich lösche alle Zeilen jenseits von 38 und speichere die Tabelle. –

1

Zuerst Finden Sie heraus, welche zuletzt mit Daten mit Hilfe einer Spalte, die keine Leerzeichen enthalten wird. Wenn Sie Rows.count verwenden möchten, um die zuletzt verwendete Zeile abzurufen, stellen Sie sicher, dass das gesamte Blatt, auf dem Sie Daten gespeichert haben, leer ist (außer den Daten sollte nichts vorhanden sein).

Dim lastrow As Long 

If ActiveSheet.Range("B2").Value = "" Then 
lastrow = 2 
Else 
lastrow = Range("B1").End(xlDown).Row 
End If 
Range("B1:X" & lastrow).Select 
Selection.ExportAsFixedFormat xlTypePDF, _ 
    Filename:=ThisWorkbook.Path & "\Test.pdf" 

die Spalte verwenden, die BLANKS anstelle von „B“ nicht mit Range-Objekt enthalten wird Ende Ihrer Daten zu finden und den Standort und den Namen der PDF-Datei ändern.

+0

Ich erhalte immer noch die mehreren Seiten im PDF Alle Zeilen jenseits von 38 sind in diesem Fall leer, verhalten sich jedoch so, als ob ein Wert zugeordnet wäre (dh. _Ctrl_ + _Shift_ + _Down_ findet 'Werte' bis Zeile 618, obwohl keine Werte zugeordnet sind dieser Bereich – RSpence

+0

Versuchen Sie CLEAN & TRIM Daten. –

Verwandte Themen