• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Algemene vraag omtrent algoritme

Status
Niet open voor verdere reacties.

bertkt

Gebruiker
Lid geworden
20 mrt 2013
Berichten
11
Hallo,

Met het volgende zit ik:
Vanuit een elektrisch tekenprogramma haal ik een set gegevens binnen. (zie: 1 Materiaallijst - begin.xls)
Via een VBA'tje laat ik kolom A ("Cabinet") opslitsen per "cabinet" in verschillende tabbladen, elk tabblad = 1 cabinet, in totaal zijn er een +- 300-tal cabinets, dus +-300 tabbladen. (zie: 2 Materiaallijst - tabbladen gescheiden.xls --> Dit gaat om een verkorte versie omdat ik anders problemen had met het uploaden, Het gaat om iets meer als 300 tabbladen)
Tot zover heb ik alles met succes al voor elkaar gekregen.

Elk tabblad zou er moeten uitzien als (zie: 3 tabblad eindresultaat.xls)

Daarvoor heb ik nog volgende problemen en de vraag is hoe ik dit het efficiëntste aanpak.
- De koptekst (bestaande uit 2 logo's, de tekst: "Cabinet : " & de tabbladnaam): Moet ik dit per tabblad die gegenereert wordt opnieuw aanmaken? Of kan ik dit voor alle +- 300 tabbladen die ik laat genereren tegelijkertijd doen? M.a.w. moet ik dit ook in mijn VBA'tje vewerken of niet?
- Het afdrukbereik: Per tabblad? of voor alle tabbladen tegelijkertijd?
- Paginainstelling: (Marges, Liggend, A3-formaat, 75%)... Per tabblad? of voor alle tabbladen tegelijkertijd?
- Tabel: Als opmaak wil ik een tabel, waarvan ik de stijl dan kies... Per tabblad? of voor alle tabbladen tegelijkertijd?
- Weergavetype: Ik wil pagina-indeling... Per tabblad? of voor alle tabbladen tegelijkertijd?

Tot hier de (in mijn ogen) gemakkelijke vragen.

De volgende vraag acht ik wat moeilijker.
Het gaat over de relatieve padverwijzing die ik gebruik voor de documentverwijzingen, zoals je kan zien in "3 tabblad eindresultaat.xls".
Momenteel worden hyperlinks niet gebruikt, de klant had graag gewild dat er achter elk documentje (Kolom F t.e.m. kolom P) een hyperlink zit.
Het is onmogelijk om het echte - absolute pad weer te geven, want voor elke partij zal dit anders zijn. (vb, bij mij op het bedrijf gaat dit naar de netwerk harde schijf... voor onze klant zal dit bvb rechtstreeks onder de C zijn... voor nog een andere partij zal dit onder een D schijf zijn...) Dus is er ergens een truc waarmee je Excel kan wijsmaken dat hij eerst naar het "moederpad" moet gaan, en daarna moet kijken na de dubbel \\ die ik nu gebruik. ... die \\ mogen uiteraard ook vervangen worden door andere syntax.


Alvast dank bij voorbaat,

Bert
 

Bijlagen

Bert,

Eerst maar je eerste groep vragen.
Het simpelste is om een tabblad helemaal klaar te maken, logo's, printbereiken etc. en noem dit tabblad bijvoorbeeld "Sjabloon".
Eventueel kun je dit tabblad verbergen om er voor te zorgen dat deze niet misbruikt wordt.
Als je nu de 300 pagina's gaat maken kan je eerst een kopie van dit tabblad maken:
Worksheets("Sjabloon").Copy After:=Worksheets(ActiveSheet.Name)

deze hernoemen je waarna je de benodigde gegevens kan invullen. Op deze manier is de opbouw van alle tabbladen aan elkaar
gelijk.

De tweede vraag is inderdaad wat lastiger, maar er is wel een oplossing.
Als het bestand waarin de hyperlink wordt gemaakt in dezelfde directory staat als het doelbestand waarnaar in de hyperlink wordt
verwezen zal de hyperlink automatich reletief worden opgesteld. Dus als in een bestand in C:\Data\ een hyperlink wordt opgesteld
naar een bestand dat ook in C:\Data\ staat dan wordt de hyperlink relatief, dus zonder de C:\Data\ daarin.
Zolang ook bij de klant de bestanden maar in dezelfde directory gezet worden zal de hyperlink bruikbaar blijven.
Een Hyperlink naam kan je op de volgende manier via VBA opstellen.

Code:
Worksheets("Test").Hyperlinks.Add Anchor:=Worksheets("Test").Range("H15"), _
            Address:="Specificaties-001.xls", 
            SubAddress:="'Rekening 13'!F13", _
            TextToDisplay:="Link Rekening 13"
Address is de verwijzing naar het andere bestand
SubAddress is de verwijzing naar het tabblad en de range binnen het bestand.
TextToDisplay is de tekst die de hyperlink zelf laat zien.

Veel Succes.
 
Laatst bewerkt door een moderator:
Hallo,

Het idee om met een sjabloon te werken heeft me heel erg geholpen!
Daarvoor heel hartelijk dank!

Wat die hyperlinks betreft ziet het er als volgt uit (momenteel)
Vanuit een externe DB haal ik allerlei relatieve verwijzingen binnen, zoals bvb "\Siemens\Beveiligingen\5SY3-4-6-7 - Datasheet.pdf".
Zo krijg ik een bestand met allemaal verschillende relatieve links, voor het gemak noem ik dit bestand "bestandMetLinks.xls".
Mijn excel bestandje zou bvb onder C:\Lijsten\bestandMetLinks.xls staan.
De data zouden onder C:\Data\... moeten staan. Op deze drie puntjes hoort dan de link zoals hierboven: ("\\Siemens\Beveiligingen\5SY3-4-6-7 - Datasheet.pdf")

Ik wil dus dat door op de link te klikken het bestand opent.
Dus mijn VBA'tje zou één map moeten terugkeren (van C:\Lijsten\ naar C:\ ).
Daarna zou hij naar de map Data moeten gaan (van C:\ -> C:\Data).

Het is uit den boze om met absolute verwijzingen te werken... Ik ben verplicht om via deze weg te werken.
Want nadien is het de bedoeling dat heel deze mappenstructuur op andere computers komt te staan.

Hoe los ik dit op?

Alvast hartelijk bedankt,
Bert
 
Je kunt de basismap voor hyperlinks per computer instellen met:

Code:
ThisWorkbook.BuiltinDocumentProperties("hyperlink base")="C:\"
of
Code:
ThisWorkbook.BuiltinDocumentProperties("hyperlink base")="G:\OF\"
Waar de basismap zich bevindt is kun je testen met
Code:
Dir(G:\OF\",16)<>""
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan