[Excel] Kolombreedte aanpassen *

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Anoniem: 281710

Topicstarter
hallo,

ik weet dat dit al een vrij oud topic is, maar zou iemand misschien kunnen aangeven of het mogelijk is om de kolombreedte in het te genereren bestand vast te leggen. bijv. A=10 B=10 C=65 D=70.
nu zijn alle kolommen standaard 8,43 breed in het te genereren document en komt het dus niet uit.
ik hoop dat iemand me kan vertellen waar ik dit in kan stellen / wat de code hiervoor is.

tnx.

Acties:
  • 0 Henk 'm!

  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 05:35
Je zoekt de width eigenschap.
Dus gebruik iets als
Finalsheet.columns(1).width = 10 voor kolom A.

Flinke schop overigens. Je hebt dudidelijk de search gebruikt. Waarvoor hulde.
Maar ongerelateerde vragen beter in een eigen topic, lijkt me, voor volgenden die zoeken. :P

edit:
Ah, kijk: postcount = 1. Welkom :)

[ Voor 8% gewijzigd door onkl op 25-11-2008 15:00 ]


Acties:
  • 0 Henk 'm!

Anoniem: 281710

Topicstarter
Waar moet ik die code precies plaatsen ?
ik heb het aan het einde geprobeerd (na wsFinalsheet = Nothing), maar er veranderd niets...

voor de rest werkt het prima, alleen is het niet te gebruiken als de kolommen zo smal blijven...

thanks..

[ Voor 5% gewijzigd door Anoniem: 281710 op 27-11-2008 15:37 ]


Anoniem: 281710

Topicstarter
ik het volgende al op meerdere plaatsen toegevoegd, maar ik krijg elke keer een foutmelding of er wordt niets aangepast.

wsFinalSheet.Columns(1).Width = 10
wsFinalSheet.Columns(2).Width = 15
wsFinalSheet.Columns(3).Width = 65
wsFinalSheet.Columns(4).Width = 75

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Ik verplaats de reacties even naar dit eigen topic. Het heeft behalve de tool en de taal weinig van doen met [Excel] Meerdere bestanden samenvoegen :)

Inhoudelijk: welke foutmelding precies? Anders is het zo gokken bij het helpen :)

Het is trouwens geen Width maar Columnwidth. Ik neem aan dat onkl pseudocode gaf. Maar even naar de eigenschappen van het object kijken (of macro-opnemen doen) levert Columnwidth.

Overigens, 'wsFinalSheet.Columns(1).Width = 10' zetten na 'wsFinalsheet = Nothing' is vrij onzinnig, aangezien het object dan nergens meer naar verwijst. 'Worksheets("Blad1").columns(1).columnwidth = 10' werkt hier prima, dan alleen nog even aanpassen naar de juiste variabelen ipv Blad1 etc :)

NB waarom via een macro zetten ipv eenmalig met de hand, bijv via een template?

Edit: trouwens, inderdaad welkom!

[ Voor 3% gewijzigd door F_J_K op 27-11-2008 15:15 . Reden: welkom. Ook even "Blad1" ipv wsFinalsheet genomen, om het duidelijker te maken als voorbeeld ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Anoniem: 281710

Topicstarter
ik kreeg o.a. een fout "400" en een melding zoals bij regel 59 in de code vermeldt staat.
onderaan heb ik zoals jullie kunnen zien de "worksheets("wsFinalshhet") enz toegevoegd, maar dat heb ik ongetwijfeld weer verkeerd gedaan, want het werkt dus niet...

wat bedoel je precies met een template maken ? er wordt op deze manier toch elke keer een nieuw bestand gegenereerd. dit kan ik gebruiken om verschillende planningen in 1 bestand samen te voegen zodat ik deze kan printen. er wordt dus een bestand genenereerd dat ik niet wil opslaan, maar alleen wil gebruiken om te printen.

thanks.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
Sub VoegExcelBestandenSamenIn1NieuwBlad()
' [TOPIC=848630///][NOHTML][rml][ Excel] Meerdere bestanden samenvoegen[/rml][/NOHTML][/TOPIC]
' deel 2

Dim wbSingleWorkbook As Excel.Workbook, wbFinalWorkbook As Excel.Workbook
Dim wsSingleSheet As Excel.Worksheet, wsFinalSheet As Excel.Worksheet
Dim strPath As String, strWorkbook(500) As String ' max 500 bestanden
Dim intCounter As Integer, n As Integer
Dim Answer As VbMsgBoxResult

    strPath = "C:\Documents and Settings\Wilber02\Bureaublad\test\"        ' Map met .xls-bestanden
    intCounter = 1              ' teller
    strWorkbook(intCounter) = Dir(strPath & "*.xls")
     
    Do While strWorkbook(intCounter) <> ""
     
        intCounter = intCounter + 1
        strWorkbook(intCounter) = Dir
         
    Loop
     
    intCounter = intCounter - 1 ' want de laatste is leeg
    Set wbFinalWorkbook = Workbooks.Add
    Application.DisplayAlerts = False
     
    Do While wbFinalWorkbook.Sheets.Count > 1
     
        wbFinalWorkbook.Sheets(1).Delete
     
    Loop                        ' We hebben maar 1 blad nodig
     
    Application.DisplayAlerts = True
    Set wsFinalSheet = wbFinalWorkbook.Sheets(1)
             
    On Error GoTo Einde         ' Error trapping AAN
     
    For n = 1 To intCounter
     
        Set wbSingleWorkbook = Workbooks.Open(Filename:=strPath _
            & strWorkbook(n), ReadOnly:=True)
             
        For Each wsSingleSheet In wbSingleWorkbook.Sheets
             
            wsSingleSheet.UsedRange.Copy _
                Destination:=wsFinalSheet.Cells _
                (wsFinalSheet.Cells.SpecialCells _
                (xlCellTypeLastCell).Row + 1, 1)
                
        Next wsSingleSheet

        wbSingleWorkbook.Close
     
    Next n
     
    On Error GoTo 0             ' Error trapping UIT
     
Einde:

    Select Case Err.Number      ' Foutmelding 1004 is
                                ' hoogstwaarschijnlijk veroorzaakt
        Case 1004               ' door iets te plakken dat boven
                                ' de 65536 rijen uit zou komen
            Answer = MsgBox(Err.Description & Chr(13) & Chr(13) & _
                "Waarschijnlijk wordt dit bestand te groot..." & _
                Chr(13) & "Verder gaan op nieuw blad?", _
                vbCritical Or vbYesNo, "Error " & Err.Number & _
                ": " & Err.Description)
             
            If Answer = vbYes Then
             
                Set wsFinalSheet = wbFinalWorkbook.Sheets.Add
                Resume
                 
            End If
             
        Case 0                  ' Niks aan 't handje :-)
             
        Case Else               ' Overige foutmeldingen
         
            MsgBox Err.Description, _
                vbCritical Or vbOKOnly, "Error " & Err.Number & _
                " in bestand " & n
     
    End Select
    
    Worksheets("wsFinalSheet").Columns(1).ColumnWidth = 10
    Worksheets("wsFinalSheet").Columns(2).ColumnWidth = 15
    Worksheets("wsFinalSheet").Columns(3).ColumnWidth = 65
    Worksheets("wsFinalSheet").Columns(4).ColumnWidth = 75
    
    Set wbSingleWorkbook = Nothing
    Set wbFinalWorkbook = Nothing
    Set wsSingleSheet = Nothing
    Set wsFinalSheet = Nothing
        
    
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub

  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 05:35
In regel 33 zeg je dat de variabele wsFinalSheet verwijst naar het eerste tabblad in wbFinalWorkbook.
In regel 86 t/m 89 verwijs je naar een tabblad dat wsFinalSheet héét. En dat is toch echt wat anders.
Je verwart variabelenaam en sheetnaam.
Regel 86 vervangen door
wsFinalSheet.Columns(1).ColumnWidth = 10
(en 87-89 equivalent) helpt wellicht.

[ Voor 8% gewijzigd door onkl op 27-11-2008 15:52 ]


Acties:
  • 0 Henk 'm!

Anoniem: 281710

Topicstarter
wsFinalSheet.Columns(1).ColumnWidth = 10
wsFinalSheet.Columns(2).ColumnWidth = 20
wsFinalSheet.Columns(3).ColumnWidth = 60
wsFinalSheet.Columns(4).ColumnWidth = 70

bovenstaande regels heb ik op regel 86 t/m 89 gezet, maar de kolombreedte wordt niet aangepast in het te genereren document... doe ik iets verkeerd of zie ik iets over het hoofd ? (waarschijnlijk wel, want anders had het wel gewerkt...)

Acties:
  • 0 Henk 'm!

Anoniem: 113297

verplaats die eens naar regel 36.

Acties:
  • 0 Henk 'm!

Anoniem: 281710

Topicstarter
helemaal super !
nu werkt het !!

Bedankt.
Pagina: 1