2016-03-23 14 views
1

Ich habe eine Word-Vorlagendatei, die Daten aus einer Excel-Datei abruft, um ein Formular aufzufüllen.Aktualisieren von Word VBA-Code für 2013

Der Code sieht etwa so aus:

Dim myXL As Object 
Set myXL = Getobject("myfile.xls") 
myXL.Application.Visible = True 
myXL.Parent.Windows(1).Visible = True 

Dieser Code in Office 2010 und 2007 funktioniert gut, aber wenn ich es im Jahr 2013 versuchen, gibt es run time error 9 welches ein array subscript error. Wenn ich das Windows-Array überprüfe, hat es keine Elemente, daher ist der Fehler korrekt.

Wie erreiche ich das gleiche Ergebnis in 2013?

Das nächste Stück Code versucht, das Worksheets("mysheet") zuzugreifen, und wenn ich die Visible = True Zeile überspringen das Arbeitsblatt gibt mit Fixierung dieser runtime error 1004.

Jede Hilfe Zugriff würde sehr geschätzt werden.

Antwort

1

Um den Code Arbeit auf Office-2013 Ich habe die Linie myXL.Activate zu machen, bevor Sie das Fenster sichtbar zu machen . So wird der Code:

Dies behoben den Laufzeitfehler, und der Code ging wieder gut zu arbeiten.

+0

Cool Ich bin froh, dass es für dich geklappt hat – 0m3r

1

Um Daten aus einem Excel-

abrufen Ein Beispiel wäre ...

Option Explicit 
Sub ExcelData() 
    Dim xlApp As Object ' Application 
    Dim xlBook As Object ' Workbook 
    Dim xlSht As Object ' Worksheet 
    Dim FilePath As String 

    FilePath = "C:\Temp\Book1.xlsx" 

    Set xlApp = CreateObject("Excel.Application") 
    Set xlBook = xlApp.Workbooks.Open(FilePath) 
    Set xlSht = xlBook.Sheets("Sheet1") 

    With ActiveDocument 
     .Content = xlSht.Range("A1").Value 
    End With 

    xlApp.Visible = True 

    Set xlApp = Nothing 
    Set xlBook = Nothing 
End Sub 
+1

Vielen Dank für das Codebeispiel, es ist interessant, wie anders es zu dem Code ist, mit dem ich mich beschäftige. Die letzte Zeile, um das Blatt in meinen Code zu bekommen, ist: Setze myWS = myXL.Application.Worksheets ("Sheet1"), und danach sehen die Dinge ähnlich aus, obwohl es am Ende eine myXL.Quit gibt, anstatt die Sichtbarkeit zu ändern. – Jules