2016-05-31 12 views
0

Mein Problem ist, nachdem ich eine Tabelle aus Microsoft Word in Excel importiert, indem Sie ein OLEObject erstellen, wird es nicht kopieren und fügen Sie die Tabelle in Excel. Es fügt fortlaufend das, was zuletzt in meiner Zwischenablage kopiert wurde, in die erste Zelle ein. Derzeit fragt mein Code den Benutzer nach dem Dateinamen, öffnet diese Datei als OLEObject in der aktiven Excel-Tabelle und fügt dann die falsche Information in Zelle A1 ein. Es wird nicht kopiert und eingefügt, was sich in dem Word OLEObject befindet.Kopieren und Einfügen von Informationen aus Microsoft Word OLEObject in Excel-Datei über VBA

Sub Macro1() 
    Dim FName As String, FD As FileDialog 
    Dim ExR As Range 
    Set FD = Application.FileDialog(msoFileDialogOpen) 
    FD.Show 
    If FD.SelectedItems.Count <> 0 Then 
     FName = FD.SelectedItems(1) 
    Else 
     Exit Sub 
    End If 

    ActiveSheet.OLEObjects.Add(fileName:=FName, Link:=False, DisplayAsIcon:=False).Select 
    Selection.Verb Verb:=xlPrimary 
    Range("A1").Select 
    ActiveSheet.Paste 

End Sub 

Vielen Dank!

+0

Können Sie das Word-Dokument irgendwo hochladen oder Schritte hinzufügen, um es mit dem Inhalt neu zu erstellen, den Sie kopieren möchten? –

+0

Wie könnte es in der Zwischenablage sein, wenn Sie nie eine '.copy' verwenden? Was in der Welt ist 'selection.verb' ??? sollte es nicht 'selection.copy' sein? Warum verwenden Sie ein '.select', wenn Ihr Objekt eine' .copy' ist ??? –

+0

Wenn Sie einen Makrorecorder für den gesamten Vorgang des Einfügens eines Objekts in Excel verwenden, ist die Ausgabe des VBA-Codes im Wesentlichen die letzten 4 Zeilen des Codes beginnend bei "ActiveSheet ..." Der Makrorecorder funktioniert, aber der "Dateiname" -Pfad ist statisch, da darin nur der Dateiname der Datei geöffnet wird, die Sie beim Aufzeichnen des Makros geöffnet haben. – Davey

Antwort

0

Von Word zu Excel, sollte so etwas sein.

Sub ImportFromWord() 

'Activate Word Object Library 

'Dim WordApp As Word.Application  
Dim WordDoc As Word.Document 

Set WordApp = CreateObject("word.application") ' Open Word session 

WordApp.Visible = False 'keep word invisible 
Set WordDoc = WordApp.Documents.Open("C:\Users\your_path_here_\WordFile.docx") ' open Word file 

'copy third row of first Word table 
WordDoc.Tables(1).Rows(3).Range.Copy 

'paste in Excel 
Range("A1").PasteSpecial xlPasteValues 

WordDoc.Close 'close Word doc 
WordApp.Quit ' close Word 

End Sub 

Oder dies.

Sub GetTables() 

FName = Application _ 
.GetOpenFilename("Word Files (*.doc), *.doc") 

Set WordObject = GetObject(FName) 

First = True 
RowCount = 2 
For Each Tble In WordObject.tables 
For i = 1 To 22 
If First = True Then 
Data = Tble.Rows(i).Cells(1).Range 
'Remove cell markers 
Cells(1, i) = Left(Data, Len(Data) - 2) 
End If 
Data = Tble.Rows(i).Cells(2).Range.Text 
'Remove cell markers 
Cells(RowCount, i) = Left(Data, Len(Data) - 2) 
Next i 
RowCount = RowCount + 1 
First = False 
Next Tble 
WordObject.Close savechanges = False 
End Sub 
+0

Leider, und ich hätte dies erwähnen sollen, aber ich brauche die importierten Informationen, um die gleiche Formatierung wie im Word-Dokument zu behalten, d. H. Unterstrichen & fett. Sonst hätte ich eine Textdatei aus dem Word-Dokument erstellt und so importiert. – Davey

+1

Siehe diesen Link: http://stackoverflow.com/questions/12245525/how-to-preserve-source-formatting-while-copying-data-from-word-table-to-excel-sh Auch ich ' Ich bin sicher, dass Sie die Formatierung in Excel anwenden können, sobald alle Daten importiert sind. – ryguy7272

+0

Danke! Diese Verbindung war perfekt! – Davey

0

Verwenden Sie den Code aus dem Link How to preserve source formatting while copying data from word table to excel sheet using VB macro? habe ich nur in der Lage gewesen, den Code zu arbeiten, wenn die Makro-Pasten meiner Word-Tabelle in einer ganz neuen separaten Arbeitsmappe. Wenn Sie auf eine Befehlsschaltfläche innerhalb der Excel-Arbeitsmappe klicken, in die ich die Word-Tabelle importieren möchte, wird die Tabelle nicht in das Blatt "Scraping Sheets" eingefügt, das ich mit dem Code durcheinander gebracht habe, aber das nächste, was ich bekommen konnte, war Platzierung Die gesamte Tabelle in eine Zelle mit allen Formatierungen verloren.

Private Sub CommandButton22_Click() 
Dim oWordApp As Object, oWordDoc As Object 
Dim FlName As String 
Dim tbl As Object 

FlName = Application.GetOpenFilename("Word files (*.Doc*),*.Doc*", , _ 

On Error Resume Next 
Set oWordApp = GetObject(, "Word.Applicaton") 

If Err.Number <> 0 Then 
    Set oWordApp = CreateObject("Word.Application") 
End If 
Err.Clear 
On Error GoTo 0 

oWordApp.Visible = True 


Set oWordDoc = oWordApp.Documents.Open(FlName) 

Set tbl = oWordDoc.Tables(1) 

Dim wb As Workbook, ws As Worksheet 

Set wb = Workbooks.Open(""C:\Users\xxxx\Desktop\292 Int'l_Weekly_Win_Loss_YYYY MM DD TEMPLATE.xlsm"") 

Set ws = wb.Sheets("Scraping Sheet") 

tbl.Range.Copy 

ws.Range("A1").Activate 

ws.Paste 

MsgBox "Successfully Added File!" 
End Sub