2016-07-29 98 views
0

In meinem Word-Dokument habe ich mehrere Tabellen, die sich auf verschiedenen Seiten befinden. Ich muss die Tabelle in Excel importieren, die bereits mit dem Beispielcode, den ich von Macro to export MS Word tables to Excel sheets gefunden habe, gemacht wurde.VBA Seitenzahl der Word-Tabelle in Excel importieren

Allerdings beabsichtige ich, die Seitennummer der Tabelle (in Word) in Excel zu importieren und es als den Blattnamen festzulegen, aber ich kann nach stundenlanger Suche nichts im Internet finden.

Wie importiere ich die Seitennummer der Tabelle in Word in Excel?

Ich weiß, dass es als das Blattname zu setzen verwenden wir den Befehl

Activesheet.Name="insert_page_number" 

aber wie wir importieren die Seitennummer der Tabelle, die wir aus Word in Excel importiert?

+0

dies helfen kann: [ 'Selection.Information (wdActiveEndPageNumber)'] (https://msdn.microsoft.com/en-us/library /office/ff820800.aspx) wobei 'Selection' der Ausdruck für die Tabelle wäre. –

+0

@ScottHoltzman, das nur in Word funktioniert. Wie wäre das in der Lage, diese Daten in Excel zu übertragen? Könntest du mit mir teilen wie? Danke :) – NewLearner

+0

Weisen Sie die Seitenzahl einer Variablen zu, wenn Sie die Tabelle aus einem Wort entnehmen, und übergeben Sie die Variable dann an 'ActiveSheet.Name'. Zum Beispiel 'With .tables (TableNo) | lPage = .Information (wdActiveEndPageNumber) ..' (Balken entspricht Zeilenumbruch ... und 'Dim lPage als Long' ... Dann' ActiveSheet.Name = lPage' –

Antwort

2

Sie können die Seitenzahl mit Range.Information(wdActiveEndPageNumber) lesen. In der Probe, die Sie verknüpfen, würde dies wie folgt aussehen:

Dim pageNumber as Integer 
Dim wdRange as Range 
With .tables(TableNo) 
    'copy cell contents from Word table cells to Excel cells 
    For iRow = 1 To .Rows.Count 
     For iCol = 1 To .Columns.Count 
      Cells(iRow, iCol) = WorksheetFunction.Clean(.cell(iRow, iCol).Range.Text) 
     Next iCol 
    Next iRow 

    ' get the page number of the first paragraph in the table 
    pageNumber = .Range.Paragraphs(1).Range.Information(wdActiveEndPageNumber) 

    ' write the page number below the table 
    Cells(iRow + 1, 1) = "Page " & pageNumber 
End With 
+0

Hallo @Dirk, als ich versuchte, den Code zu kompilieren, zeigte es mir den Fehler, dass Variable nicht definiert, wenn es zu wdActiveEndPageNumber kam, und dies, weil diese Eigenschaft nur in Word aber nicht in Excel existierte Wie können wir dieses Problem lösen? Vielen Dank für Ihre Hilfe! :) – NewLearner

+1

Das ist in Ordnung, aber wenn die erste Zeile der Tabelle über eine Seite bricht, würde die 'Absätze'-Eigenschaft bedeuten, dass die' wdActiveEndPageNumber' die Seite wäre Der * Absatz * endet am. Es wäre besser '.Range.Characters (1) .Information (wdActiveEndPageNumber)' zu tun, da dies die Seitennummer des ersten in der Tabelle vorhandenen Zeichens zurückgibt. –

+0

@AndrewWynn würde bedeuten, dass pageNumber = .Range.Paragraphs (1) .Range.Characters (1) .Information (wdActiveEndPageNumber) ODER dass pageNumber = .Range.Characters (1) .Information (wdActiveEndPageNumber)? – NewLearner