Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Objektvariable oder With-Blockvariable nicht festgelegt

Frage Entwicklung VB for Applications

Mitglied: FLX1990

FLX1990 (Level 1) - Jetzt verbinden

27.06.2013, aktualisiert 10:54 Uhr, 6586 Aufrufe, 11 Kommentare

Hallo,

habe ein vba-Script was eine bearbeitete csv aus Excel an Word übergibt und daraus dann einen Serienbrief macht

Der Excel-Part (das automatisierte Bearbeiten der csv) läuft sauber durch, doch als es dann an die Übergabe an Word geht kommt folgender Fehler:

Objektvariable oder With-Blockvariable nicht festgelegt

Die Vorlagen-Worddatei wird noch sauber geöffnet, nur die Daten können nicht mehr eingelesen werden.

Hier der Code:

01.
    sFile = "K:\XXX\Vorlagen_2003\TelefonverzeichnisXXX.doc" 
02.
    Set WinWord = CreateObject("Word.Application") 
03.
    
04.
    With WinWord 
05.
        .Visible = True 
06.
        Application.Wait DateAdd("s", 1, Now()) 
07.
        .Documents.Open Filename:=sFile 
08.
        Application.Wait DateAdd("s", 1, Now()) 
09.
        '//WinWord.Documents.Open ("K:XXX\Vorlagen_2003\Telefonverzeichnis\XXX.doc") 
10.
        With WinDoc 
11.
            With .MailMerge 
12.
                .OpenDataSource Name:=strDatenQuelle, LinkToSource:=True, Format:=0, SQLStatement:="SELECT * FROM `tp.csv$`" 
13.
                .Destination = 0 
14.
                .SuppressBlankLines = True 
15.
                With .DataSource 
16.
                  .FirstRecord = wdDefaultFirstRecord 
17.
                  .LastRecord = wdDefaultLastRecord 
18.
                End With 
19.
                .Execute Pause:=False 
20.
                Set docSerienbrief = WinWord.ActiveDocument 
21.
                .DataSource.Close 
22.
                 
23.
                 
24.
            End With 
25.
        End With 
26.
 
27.
        Set docSerienbrief = .Documents(1) 
28.
        WinDoc.Close False 
29.
         
30.
    End With
In Zeile 11 steckt laut vba besagter Fehler.

Ich hatte das Makro vorher mit Office '03 im Einsatz, und da lief alles wunderbar.
Jetzt mit der 10er tritt der Fehler jedoch auf.

Ich hatte vorher einen anderen Fehler:
In Zeile 7 bekam ich den Fehler "Befehl misslungen".
Eine Pause mit Application.Wait DateAdd("s", 1, Now()) löste das Problem (zur Sicherheit dahinter direkt nochmal Eine...)

Nun ja, aber beim 2ten Fehler stecke ich fest.


Könnt ihr mir helfen?
Mitglied: dog
27.06.2013 um 11:21 Uhr
In Zeile 11 steckt laut vba besagter Fehler.

Da hat VBA auch völlig recht.
Wo soll die Variable auch herkommen?
Bitte warten ..
Mitglied: colinardo
27.06.2013, aktualisiert um 12:11 Uhr
Hallo Sibbel,

  1. das Objekt WinDoc existiert nicht. Zeile 7 sollte so lauten set WinDoc = .Documents.Open (Filename:=sFile)
  2. die 4-Fach verschachtelten With-Blöcke bergen Fehlerquellen.

Grüße Uwe
Bitte warten ..
Mitglied: FLX1990
27.06.2013 um 11:49 Uhr
Ach nein...
keine Ahnung wieso da WinDoc stand und warum das funktioniert hat...

Naja ich habs mit WinWord ersetzt und bekomme immer noch einen Fehler in Zeile 11:
Objekt unterstützt diese Eingenschaft oder Methode nicht
Bitte warten ..
Mitglied: colinardo
27.06.2013, aktualisiert um 12:04 Uhr
das muss ja auch ein Objekt des Typs Document sein und nicht Application. mach das so wie ichs geschrieben habe
Bitte warten ..
Mitglied: FLX1990
27.06.2013 um 12:09 Uhr
Zeile 7 sieht bei mir jetzt so aus:
set WinDoc = .Documents.Open Filename:=sFile

beim Ausführen bekomm ich jedoch die Meldung:
Fehler beim kompilieren: Erwartet: Anweisungsende
Bitte warten ..
Mitglied: colinardo
27.06.2013 um 12:12 Uhr
da fehlen noch die Klammern
set WinDoc = .Documents.Open (Filename:=sFile)
Bitte warten ..
Mitglied: FLX1990
27.06.2013 um 12:42 Uhr
Ach so...

Gut das klappt schonmal,
leider habe ich wieder in zeile 11 ein "Objekt unterstützt diese Eingenschaft oder Methode nicht"...
Bitte warten ..
Mitglied: colinardo
27.06.2013, aktualisiert um 13:54 Uhr
Das Problem sind wie schon gesagt die verschachtelten WITH-Blöcke. Bei verschachtelten With-Blöcken gilt der Punkt immer für das Objekt des äußersten WITH-Blocks.
Versuch es erst mal damit:
01.
sFile = "K:\XXX\Vorlagen_2003\TelefonverzeichnisXXX.doc" 
02.
Set WinWord = CreateObject("Word.Application") 
03.
    
04.
With WinWord 
05.
    .Visible = True 
06.
    Set WinDoc = .Documents.Open(FileName:=sFile) 
07.
    WinDoc.MailMerge.OpenDataSource Name:=strDatenQuelle, LinkToSource:=True, Format:=0, SQLStatement:="SELECT * FROM `tp.csv$`" 
08.
    WinDoc.MailMerge.Destination = 0 
09.
    WinDoc.MailMerge.SuppressBlankLines = True 
10.
    WinDoc.MailMerge.DataSource.FirstRecord = wdDefaultFirstRecord 
11.
    WinDoc.MailMerge.DataSource.LastRecord = wdDefaultLastRecord 
12.
    WinDoc.MailMerge.Execute Pause:=False 
13.
    Set docSerienbrief = WinWord.ActiveDocument 
14.
    WinDoc.MailMerge.DataSource.Close 
15.
    WinDoc.Close False 
16.
    Set docSerienbrief = .Documents(1) 
17.
End With
Bitte warten ..
Mitglied: FLX1990
27.06.2013 um 13:43 Uhr
Es wird immer dubioser,
Er sagt mir jetzt wieder in Zeile 6, dass der "befehl misslungen" sei...

Nur, einmal hat es funktioniert...
Jetzt jedoch nichtmehr

Alle Dokumente sind geschloßen etc.
Nichts ist durch einen Anderen gesperrt.
Bitte warten ..
Mitglied: colinardo
27.06.2013, aktualisiert um 13:55 Uhr
schau mal mit dem Taskmanager ob vielleicht noch offene WORD-Instanzen im Hintergrund vorhanden sind, und schieß diese ab.
Und tausche die Reihenfolge dieser Zeilen :
01.
Set docSerienbrief = .Documents(1) 
02.
WinDoc.Close False
in
01.
WinDoc.Close False 
02.
Set docSerienbrief = .Documents(1)
Bitte warten ..
Mitglied: FLX1990
27.06.2013 um 15:55 Uhr
hat auch nur einmal, direkt beim Ändern --> Ausführen geklappt.
Danach der selbe Fehler...

Ich weiß nicht woran das liegt.
Habe aber aufgegeben :D

Die Verarbeitung mach ich jetzt über ein Makro in Excel, aber übergeben wird es als csv in iReport ...
Viel einfacher dort...


Tortzdem recht herzlichen Dank für eure und vor allem deine, colinardo, Hilfe.

Gruß, Sibbel
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Linux Tools
Docker - Minimize your containers with alpine linux

Link von Sheogorath zum Thema Linux Tools ...

PHP
How to write phpinfo with special character to file (11)

Frage von thankusomuch zum Thema PHP ...

Windows Server
Server 2016 RemoteApps interfere with any full screen application! (1)

Link von DerWoWusste zum Thema Windows Server ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (18)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...