Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: hellebore am Mai 15, 2014, 09:25:44

Titel: Acc2010 - Laufzeitfehler 3441
Beitrag von: hellebore am Mai 15, 2014, 09:25:44
Hallo,

ich habe eine Datenbank, die unter Access 2003 erstellt wurde und diese würde ich nun unter Access 2010 lauffähig machen.

Der Export einer Abfrage mit Übergabe in ein Word-Dokument funktioniert leider nur noch mit oben angegebenen Laufzeitfehler. Die Recherche im Internet ergab, dass man eine Export-Spezifikation erstellen soll. Der Textexport-Assistent funktioniert allerdings nicht mit Parameterabfragen, sondern nur bei Tabellen und normalen Abfragen.

Weiss jemand noch eine andere Möglichkeit dies zu lösen?

hier der zugehörige Code:
Public Function fctWdSerienBrief(strGrundlage As String, strDateiName As String, _
    strDokVorlage As String, strSteuerDatei As String) As String
Dim oApp As Word.Application
Dim clsSi As New clsSysInfo
Dim strDokSavePfad$ 'Standard-Speicherpfad für das Dokument
'Dim strSteuerDatei$ 'Name der Dummy-Steuerdatei
Dim strAktiv$ 'um das aktive Dokument (Serienbrief) anzusteuern
Dim strVorlage$ 'um die Serienbrief-Vorlage anzusteuern

'Export in eine Textdatei
DoCmd.TransferText acExportDelim, "", strGrundlage, strSteuerDatei, True, ""
   
On Error Resume Next
'Schauen, ob Word bereits läuft
Set oApp = GetObject(, "Word.Application")
    If Err.Number <> 0 Then 'Word läuft nicht
        Err.Clear   ' Err-Objekt löschen
        'Neue Instanz von Word aufrufen
      Set oApp = CreateObject("Word.Application")
    End If

On Error GoTo Err_fctWdSerienBrief
With oApp
'Sichtbar schalten und aktivieren
    .Visible = True
    .Activate
' Vorlage als Dokument öffnen
    .Documents.Add Template:=strDokVorlage
'Name der aktiven Vorlage zwischenspeichern
    strVorlage = .ActiveDocument.NAME
End With


With oApp.ActiveDocument.MailMerge
'Serienbrieffelder verbinden und in neues, ungebundenes Dokument ausgeben
    .OpenDataSource NAME:=strSteuerDatei, LinktoSource:=True
    .Execute
End With

'Namen des aktiven Dokuments der Variablen zuweisen
strAktiv = oApp.ActiveDocument.NAME

'Die Serienbrief-Vorlage schließen
oApp.Documents(strVorlage).Close (wdDoNotSaveChanges)

'Speicherpfad des Dokuments ermitteln
strDokSavePfad = "W:\KTC\Datenbank4\Dokumente"

'Serienbrief-Dokument verarbeiten
With oApp.Documents(strAktiv)
    .SaveAs FileName:=strDokSavePfad & "\" & strDateiName
    If .Saved Then
        oApp.RecentFiles.Add .FullName
    End If
    .Activate
'    .Close
End With

Set oApp = Nothing
fctWdSerienBrief = strDokSavePfad & "\" & strDateiName

Exit Function

Err_fctWdSerienBrief:
    Set oApp = Nothing
    MsgBox Err.Number & " " & Err.Description, vbCritical, "Fehler in Word-Kommunikation"
    fctWdSerienBrief = vbNullString
    Exit Function
   
End Function


Gruß
Titel: Re: Acc2010 - Laufzeitfehler 3441
Beitrag von: DF6GL am Mai 15, 2014, 09:48:43
Hallo,

Wie lautet denn die Fehlermeldung zu dieser Fehlernummer?

Weise der Transfer-Abfrage zunächst den per VBA mit den Kriterien (Parametern)  zusammengesetzten SQL-String zu. Mit dieser Abfrage kannst Du anschließend eine passende Export-Spezifikation erstellen (die m. E. aber gar nicht nötig ist).


Z.B:

Dim strSQl  as String, lngID as Long
lngID = 2

strSQL = "Select * from tblTabelle1 Where IDFeld= & lngID

Currentdb.Querydefs!MeineAbfrage.SQL = strSQL

DoCmd.TransferText acExportDelim, "", "MeineAbfrage", strSteuerDatei, True, ""
Titel: Re: Acc2010 - Laufzeitfehler 3441
Beitrag von: hellebore am Mai 15, 2014, 09:59:23
Hallo,

die genaue Fehlermeldung lautet:
"Laufzeitfehler '3441': Das Feldtrennzeichen fir die angegebene Textdatei entsprich dem Dezimaltennzeichen oder Texttrennzeichen."

beim debuggen wird mir folgender Code markiert:
'Export in eine Textdatei
DoCmd.TransferText acExportDelim, "", strGrundlage, strSteuerDatei, True, ""
Titel: Re: Acc2010 - Laufzeitfehler 3441
Beitrag von: DF6GL am Mai 15, 2014, 10:02:40
Hallo,

verwende statt Text-Format das RTF-Format... (Siehe Transfer-Text-Hilfe)
Titel: Re: Acc2010 - Laufzeitfehler 3441
Beitrag von: MaggieMay am Mai 15, 2014, 14:09:20
Hi,
mein Vorschlag wäre, erstelle eine Exportspezifikation und setze diese bei der Transfertext-Methode ein.
ZitatDer Textexport-Assistent funktioniert allerdings nicht mit Parameterabfragen
Dann lass den Parameter vorübergehend weg bzw. erstelle eine entsprechende Kopie für den einmaligen manuellen Export.

@DF6GL:
Seit wann kann man mit TransferText ein RTF-File erstellen?
Titel: Re: Acc2010 - Laufzeitfehler 3441
Beitrag von: DF6GL am Mai 15, 2014, 15:49:45
Hallo,


in der Tat geht das mit Transfertext nicht, eher mit Outputto.  8)


Zudem sind Parameterabfragen (mit aufpoppenden Parameterfenstern) niicht empfehlenswert...