Afbeelding invoegen in Word dmv macro werkt niet volledig?

Status
Niet open voor verdere reacties.

felix85

Gebruiker
Lid geworden
9 feb 2009
Berichten
38
Hallo Specialisten,

Ik heb een macro geschreven om text en afbeeldingen in een Word document in te voegen. Volgens mij is het in de macro duidelijk omschreven dat afbeelding en text, "0,1,2 en 3" op pagina 1 moeten komen en "4,5,6 en 7" op de volgende.
Bij de text werkt dit wel maar bij de afbeelding niet, de eerste 4 afbeelding worden netjes op pagina 1 geplaatst, de volgende afbeeldingen staan over pagina 1 verspreid.

Iemand een idee wat ik verkeerd heb gedaan in de onderstaande Macro?
Alvast bedankt voor de moeite:

HTML:
Sub convertFormat() 
'Hieronder staan alle belangrijke gegevens die gewijzigd kunnen / mogen worden 
'Het betreft vooral verwijzingen en basis instellingen 


'### Standaard bestandslocatie: waar staat het bestand om in te lezen ### 
'### Dit is het bestand wat wordt aangeleverd door Qvision en MOET worden ### 
'### hernoemd (Qvision levert een bestand met datum als bestandsnaam ### 

'origineleMap = "C:\Users\Bart.digicore-europe\Documents\wsz\" 
'origineelBestand = "Advertentiebasis.doc" 

maxAantalRegels = 23 
paginaHoogte = 500 

'imgAchtergrondWoningaanbod = "macro_AG_woningaanbod.jpg" 
'imgAchtergrondSpelregels = "macro_AG_spelregels.jpg" 

'### Alles hieronder afblijven als je niet bekend bent Visual Basic!!! ### 
'### Hieronder begint de echter programmering en wijzigingen kunnen ### 
'### onverwachter gevolgen hebben! ### 



'### 
'### Het eerste deel is het nodige rekenwerk om de gegevens in te lezen 
'### 

'### 
'### Maak alle benodigde variabelen aan 
'### 

On Error GoTo iets_error 

Dim d As FileDialog 
Dim arrFileLines() 
Dim arrBeginRegels() 
Dim VHE() 
Dim indexPand 
Dim indexItem 
Dim indexTotaal 
I = 0 
l = 0 
k = 0 
aantalpanden = 0 
aantalItems = 0 
teller = 0 
maxLength = 0 
restEmpty = 0 

'### 
'### Open het originele Word Document en sla het op als platte tekst 
'### Dit is erg irritant en omslachtig, maar vooralsnog kan ik niks met het originele document 
'### 

Set d = Application.FileDialog(msoFileDialogOpen) 
d.Title = "Open bestand Woningaanbod" 

If d.Show Then 
origineelBestand = d.SelectedItems(1) 
End If 

txtFile = Left(origineelBestand, Len(origineelBestand) - 3) & "txt" 

origineleMap = FolderFromFileName(origineelBestand) 
MsgBox txtFile 
MsgBox origineleMap 

Set wdApp = CreateObject("Word.Application") 
Set wdDoc = Nothing 

If CheckPath(origineelBestand) = False Then 
Set wdApp = Nothing 
wdApp.Application.Quit 
Else 
Set wdDoc = wdApp.Documents.Open(origineelBestand) 
End If 

wdDoc.Range.Tables(1).ConvertToText Separator:=" - " 

wdDoc.SaveAs (txtFile), 4 
wdDoc.Close 
Set wdDoc = Nothing 

'### 
'### Open het nieuw gemaakte tijdelijke platte tekst bestand 
'### 

Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objFile = objFSO.OpenTextFile(txtFile, 1) 

'### 
'### Lees alle regels uit het bestand naar een array in het geheugen 
'### 

Do Until objFile.AtEndOfStream 
ReDim Preserve arrFileLines(I) 
TempStr = Replace(objFile.ReadLine, "?", "€") 
TempStr2 = Replace(TempStr, vbTab, " ") 
TempStr = Replace(TempStr2, Chr(13), " ") 
Do While (InStr(TempStr, " ")) 
' if true, the string still contains double spaces, 
' replace with single space 
TempStr = Replace(TempStr, " ", " ") 
Loop 
arrFileLines(I) = TempStr 
I = I + 1 
Loop 

'### 
'### Tel het aantal unieke panden 
'### 

For l = 0 To UBound(arrFileLines) 
If IsVHEnummer(arrFileLines(l)) = True Then 
ReDim Preserve arrBeginRegels(k) 
arrBeginRegels(k) = l 
k = k + 1 
aantalpanden = aantalpanden + 1 
End If 
Next 

'het aantalpanden bevat nu ook de verhuurresultaten, even weghalen 
'aantalpanden = aantalpanden - 1 

'### 
'### Maak een array met regelnummers waar de unieke VHEnummers staan 
'### 

For l = 0 To aantalpanden - 1 
If l = aantalpanden - 1 Then 
maxLength = arrBeginRegels(l) - arrBeginRegels(l - 1) 
Else 
If (arrBeginRegels(l + 1) - arrBeginRegels(l)) > maxLength Then maxLength = arrBeginRegels(l + 1) - arrBeginRegels(l) 
End If 
Next 

'### 
'### Pas grootte VHE array aan aan de ingelezen gegevens 
'### Vul het 2-dimensionele array VHE met de ingelezen gegevens. 
'### VHE() bevat nu alle regels per pand 
'### 

ReDim VHE(aantalpanden, maxLength) 

For indexPand = 0 To aantalpanden - 1 
For indexItem = 0 To maxLength - 1 
indexTotaal = arrBeginRegels(indexPand) + indexItem 
If indexItem = 0 Then 
If IsVHEnummer(arrFileLines(indexTotaal)) = True Then 
VHE(indexPand, indexItem) = arrFileLines(indexTotaal) 
restEmpty = 0 
Else 
'index 0 en GEEn vhe nummer, dus probleem...? of verhuurrresultaten 
End If 
Else 
If restEmpty = 1 Then 
VHE(indexPand, indexItem) = "" 
Else 
If IsVHEnummer(arrFileLines(indexTotaal)) = True Then 
VHE(indexPand, indexItem) = "" 
restEmpty = 1 
Else 
VHE(indexPand, indexItem) = arrFileLines(indexTotaal) 
End If 
End If 
End If 
Next 
Next 

'### 
'### Plaatsen van tekstblokken in layout 
'### 

Selection.GoTo What:=wdGoToBookmark, Name:="Woningaanbod" 
Selection.Text = "" 
For indexPand = 0 To aantalpanden - 1 
'For indexItem = 0 To maxLength - 1 
For indexItem = 1 To maxAantalRegels 
If indexItem >= maxLength Then 
Selection.InsertAfter "" & Chr(13) 
Else 
Selection.InsertAfter VHE(indexPand, indexItem) & Chr(13) 
End If 
Next 
Next 
ActiveDocument.Bookmarks.Add Range:=Selection.Range, Name:="Woningaanbod" 

'### 
'### Bepaal het aantal pagina's en geef alle pagina's een aparte tekst als voettekst 
'### Laatste pagina: disclaimer en contactgegevens 
'### laatste pagina woningaanbod: verhuurresultaten 
'### Alle eerdere pagina's: leeg 
'### 

Dim CurrentPage As Integer 

NumPages = ActiveDocument.ActiveWindow.Panes(1).Pages.Count 

For CurrentPage = 1 To NumPages 
Select Case CurrentPage 
Case NumPages 
'Disclaimer 
Case NumPages - 1 
'Verhuurresultaten 
Case Else 
'Niks 
End Select 

Next CurrentPage 

'### 
'### Plaatsen VHE foto's bij advertenties 
'### 

Dim imgFileName As String 
Dim paginaOffSet As Integer 

For indexPand = 0 To aantalpanden - 1 
imgFileName = origineleMap & Trim(VHE(indexPand, 0)) & "_FT_VG.jpg" 

Select Case indexPand 
Case 0, 1, 2, 3 
'Eerste pagina 
paginaOffSet = 0 
Case 4, 5, 6, 7 
'Tweede pagina 
paginaOffSet = 1 
Case 8, 9, 10, 11 
'Derde pagina 
paginaOffSet = 2 
End Select 

'Bepaal hoogte om image te plaatsen 
If indexPand Mod 2 = 1 Then 
'oneven getal, onder plaatsen 
heightPos = 260 + (paginaOffSet * paginaHoogte) 
Else 
'even getal, boven plaatsen 
heightPos = 0 + (paginaOffSet * paginaHoogte) 
End If 

Select Case indexPand 
Case 0, 1, 4, 5, 8, 9 
'links plaatsen 
leftPos = 140 
Case 2, 3, 6, 7, 10, 11 
'rechts plaatsen 
leftPos = 385 
Case Else 
'ja wat gaan we hier doen? nu hebben we meer dan 12 panden!!!! 
End Select 

If CheckPath(imgFileName) = True Then 
ActiveDocument.Shapes.AddPicture FileName:=imgFileName _ 
, LinkToFile:=False, SaveWithDocument:=True, Left:=leftPos, Top:=heightPos, Width:=80, Height:=60 
Else 
ActiveDocument.Shapes.AddPicture FileName:=origineleMap & "noimg.jpg" _ 
, LinkToFile:=False, SaveWithDocument:=True, Left:=leftPos, Top:=heightPos, Width:=80, Height:=60 
End If 
Next 

'Te doen: verwijderen tijdelijk bestand 

doorgaan: 

'Sluit het tekstbestand en geef het geheugen vrij 
objFile.Close 
Set objFile = Nothing 
Set objFSO = Nothing 
Set wdDoc = Nothing 
Set wdApp = Nothing 

Exit Sub 

iets_error: 
MsgBox Error$ 
Resume doorgaan 
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan