2016-07-12 6 views
0

Ich muss zwei Bereiche von Zellen aus zwei separaten Arbeitsblättern in einer Datei kopieren und kombinieren sie dann speichern dann in eine Textdatei. Ich kann nur einen Bereich von Zellen in txt speichern. Datei wie der Code unten.VBA Kopieren Sie zwei Bereiche und kombinieren Sie sie, dann speichern Sie in der Textdatei

Dim LastRow As Long 
Dim Count As Range 

LastRow = Range("K" & Sheets("Reports").Rows.Count).End(xlUp).Row 

    Dim wbText As Workbook 
    Dim wsReports As Worksheet 

    Set wbText = Workbooks.Add 

    Set wsReports = ThisWorkbook.Worksheets("Reports") 

    With wsReports 
    .Range("Q2" & ":Q" & LastRow).Copy wbText.Sheets(1).Range("A1") 
    End With 

    Application.DisplayAlerts = False 

    With wbText 
    .SaveAs Filename:="P:\Newsletter Email.txt", FileFormat:=xlText 
    .Close False 
    End With 

Dieser Code kopiert Spalte F in Blatt Berichte in die Textdatei, aber ich brauche auch Spalte L aus Blech Berichte1 in die Textdatei zu kopieren. Ich weiß,

RangeCombined = Union(Range1, Range2) 

Könnte zwei Bereiche kombinieren, wie kann ich diesen Code in diese Situation integrieren?

Vielen Dank im Voraus.

Antwort

1

versuchen

Dim LastRow As Long 
Dim LastRow1 As Long 
Dim Count As Range 

Dim wbText As Workbook 
Dim wsReports As Worksheet 
Dim wsReports1 As Worksheet 

Set wbText = Workbooks.Add 

Set wsReports = ThisWorkbook.Worksheets("Reports") 
Set wsReports1 = ThisWorkbook.Worksheets("Reports1") 

LastRow = wsReports.Range("K" & wsReports.Rows.Count).End(xlUp).Row 
LastRow1 = wsReports1.Range("K" & wsReports1.Rows.Count).End(xlUp).Row 

wsReports.Range("Q2" & ":Q" & LastRow).Copy wbText.Sheets(1).Range("A1") 
wsReports1.Range("F2" & ":F" & LastRow1).Copy wbText.Sheets(1).Range("B1") 

Application.DisplayAlerts = False 

With wbText 
    .SaveAs Filename:="P:\Newsletter Email.txt", FileFormat:=xlText 
    .Close False 
End With 

wird Spalte Q von Reports in Spalte A des Ausgangs, und Spalte F von Berichte1 in Spalte B des Ausgangs Diese kopieren. Alternativ

, wenn Sie möchten, Spalte F von Berichte1 unten Spalte Q von Report angezeigt werden, die Copy-Anweisungen ändern sein:

wsReports.Range("Q2" & ":Q" & LastRow).Copy wbText.Sheets(1).Range("A1") 
wsReports1.Range("F2" & ":F" & LastRow1).Copy wbText.Sheets(1).Range("A" & LastRow) 

(Wenn es die gleiche Anzahl von Zeilen in beiden Berichten und Berichte1, das obige kann ein bisschen vereinfacht werden.)

+0

Danke! Es funktioniert jetzt gut. –

0

Ich denke, der beste Weg ist, die Datei in einem Pfad zu speichern, während Sie darauf drucken. Versuchen Sie, diese

Dim FilePath As String 
Dim lCol As String 
Dim fCol As String 
Dim fRange As String 
Dim lRange As String 
Dim wsReports As Worksheet 
Dim wsReports1 As Worksheet 

Set wsReports = ThisWorkbook.Worksheets("Reports") 
Set wsReports1 = ThisWorkbook.Worksheets("Reports1") 

FilePath = "P:\Newsletter Email.txt" 

fRange = "F2:F" & LastRow 
lRange = "L2:L" & LastRow 
'Will create the file if it does not exist 
Open FilePath For Output As #1 
With wsReports 
.Range("Q2" & ":Q" & lastrow).Copy wbText.Sheets(1).Range("A1") 
For i = 0 To lastrow 
fCol = .Cells(i, "F") 

Print #1, fCol 
Next i 

End With 
With wsReports1 
For i = 0 To lastrow 
lCol = .Cells(i, "L") 
Print #1, lCol 
Next i 
End With 
'Make sure to close it or you'll have difficulties opening the file 
Close #1 
+0

Aber diese zwei Bereiche sind von zwei Arbeitsblättern, "Reports" und "Reports1". Ich sehe, dass Sie den wsReport als Arbeitsblatt ("Berichte") festlegen und nie "Reports1" erwähnen. –

+0

Ich habe gerade bearbeitet, um wsReports1 einzuschließen. Es sollte immer noch auf dieselbe Datei drucken, auch wenn es aus einem anderen Arbeitsblatt stammt. – refugio

+0

Warum müssen Sie einen Bereich als String dimmen, ich habe nicht gesehen, dass Sie ihn verwenden, nachdem Sie ihn gedimmt haben. –

Verwandte Themen