Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 7664 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 ..
Ähnliche Inhalte
Entwicklung
Make better software with Docker (1)

Link von Sheogorath zum Thema Entwicklung ...

E-Mail
Remindet beim erhalt von Mails in festgelegtem Postfach (4)

Frage von Milchmann89 zum Thema E-Mail ...

Festplatten, SSD, Raid
InVincible SSD with Physical Self-Destruction (2)

Link von Dobby zum Thema Festplatten, SSD, Raid ...

Linux Tools
Docker - Minimize your containers with alpine linux

Link von Sheogorath zum Thema Linux Tools ...

Neue Wissensbeiträge
Windows Installation

Unorthodoxer Weg, um an einen Offline-Installer für Adobe Flash zu kommen

(8)

Tipp von beidermachtvongreyscull zum Thema Windows Installation ...

Datenschutz

Gefährdeter Datenschutz: Firefox löscht lokale Datenbanken nicht

Information von BassFishFox zum Thema Datenschutz ...

Firewall

PfSense OpenVPN beschleunigen

Tipp von Dobby zum Thema Firewall ...

Utilities

CCleaner 5.33 mit Malware infiziert

(27)

Information von SeaStorm zum Thema Utilities ...

Heiß diskutierte Inhalte
Utilities
CCleaner 5.33 mit Malware infiziert (26)

Information von SeaStorm zum Thema Utilities ...

Festplatten, SSD, Raid
gelöst Problem mit DELL 815R Server und Windows Bluescreen (24)

Frage von Leo-le zum Thema Festplatten, SSD, Raid ...

Windows Systemdateien
Windows bootet nicht mehr Fehlermeldung 0xc0000098 (16)

Frage von franzgoerlich zum Thema Windows Systemdateien ...

Windows Netzwerk
Dateien mit Intelligenz per GPO ins Programmverzeichnis (14)

Frage von erwin.t zum Thema Windows Netzwerk ...