PDA

View Full Version : VBA: aiuto con stampa unione


antoniox
19-02-2010, 17:28
Ciao.
Richiedo aiuto con il VBA e più precisamente per una stampa unione

La situazione
Ho un file in formato access nel quale esiste una tabella con diversi campi (ID (non contatore ma chiave primaria), campo1, campo2, etc) e un numero N di record.

Ho creato un documento word e, utilizzando le funzioni di stampa unione, ho "disposto" i collegamenti con la tabella di access.

Gli obiettivi
Per ciascun record (ovvero ID) della tabella access, vorrei creare una directory avente come nome l'ID;
all'interno di questa directory, creare un file unione (il cui nome è formato da ID e da una porzione di testo.

Cosa ho fatto e quali problemi incontro

Sub Macro1()

Dim i As Long
i = ActiveDocument.MailMerge.DataSource.RecordCount
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdFirstRecord

Do While intCounter < i
intCounter = intCounter + 1

With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
.LastRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
End With
.Execute Pause:=False

End With

Dim sPath As String
sPath = ThisDocument.Path

Dim ID As String
ID = ActiveDocument.MailMerge.DataSource.ActiveRecord

' si blocca alla riga seguente
MkDir sPath & "\" & ID

ChangeFileOpenDirectory ThisDocument.Path & "\" & ID

ActiveDocument.SaveAs ID & "AAAAAAA-01" & ".doc"

ActiveWindow.Close

ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord


Loop

End Sub

La prima directory viene creata ma, anzichè riportare come ID "1" (il valore 1 corrisponde al valore nel primo record della tabella access), riporta -1.
Viene creato il file e salvato (con lo stesso problema di ID).
Viene aperta la nuova finestra per la seconda riga della tabella access e si blocca perchè prova a creare una nuova directory con il medesimo nome della precedente.

Mi è chiaro dove è l'errore (non riesco ad associare ad ID i valori del campo ID della tabella access) ma non so come fare.

Grazie.