[VBA] Bestand overschrijven/bijschrijven

Pagina: 1
Acties:
  • 254 views sinds 30-01-2008
  • Reageer

  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 20-08 23:09
Hallo, ik heb nu een goed werkende code die bestanden opent/bewerkt en netjes wegschrijft, maar het lijkt mij een mooie mogelijkheid om ipv alleen maar nieuwe bestanden te maken, ook bestanden bij de te schrijven, en dan bedoel ik gewoon dat hij nieuwe sheets erbij aanmaakt (het gaat over excel bestanden)

Dit is mijn code zoals hij nu is:
Visual Basic:
1
2
3
4
5
6
7
naarbestandnaam = Application.GetSaveAsFilename(savenaam, "Excel Files (*.xls), *.xls", 1, "Opslaan in")

    Set naarbestand = Workbooks.Add
    Sheets.Add
    Sheets(1).Select

naarbestand.SaveAs naarbestandnaam


Het probleem hiermee is dat ik een nieuw workbook aanmaak, en voorzover ik weet kan dat er maar 1 zijn. Dus als het bestand al bestaat moet hij die stap overslaan, maar hoe maakt ik zo'n check. En is het dan ook noodzakelijk dat hij dat bestand als het bestaat eerst opent?

Daarnaast geeft hij bij het saven ook een warning of ik een bestand wil overschrijven of niet, de optie iets er bij schrijven wordt dus niet gegeven. Hoe kan ik dit het beste aanpakken?

[ Voor 4% gewijzigd door DarkShadow op 21-09-2005 11:38 ]


Verwijderd

je controleert eerst of het gekozen bestand al bestaat:
Visual Basic:
1
2
3
4
5
if len(dir(naarbestandnaam))>0 then
Set naarbestand = Workbooks.open(naarbestandnaam)
else
Set naarbestand = Workbooks.Add
end if

  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 20-08 23:09
bedankt dat werkt, maar ik heb toch nog een klein probleem:

ik heb nu dit stukje code en bij die laatste zin geeft hij error 13, ik zou werkelijk niet weten waarom:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Call Save

If Len(Dir(naarbestandnaam)) > 0 Then
Set naarbestand = Workbooks.Open(naarbestandnaam)
    Sheets.Add
Else
Set naarbestand = Workbooks.Add
Application.DisplayAlerts = False

    Sheets(1).Delete
    Sheets(1).Delete
    Sheets(1).Select
    
Application.DisplayAlerts = True

End If
    
naarbestand.Worksheets(1).Columns("A:A").ColumnWidth = 20


edit:

Laat maar, ik heb het veranderd in:
Visual Basic:
1
Sheets(1).Columns("A:A").ColumnWidth = 20

En het werkt weer, vaag foutje, maar maakt verder niet meer uit, bedankt! :)

[ Voor 16% gewijzigd door DarkShadow op 21-09-2005 12:09 ]


  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 20-08 23:09
Ik heb toch nog een vraagje, bij mij kan het soms voorkomen dat sheets 2 keer de zelfde naam hebben doordat er 2 keer dezelfde test is uitgevoerd. Dit geeft natuurlijk een error en ik zou graag willen weten hoe je dit van te voren kan controleren. In dat geval kan ik namelijk proberen om de naam te veranderen door er een datum voor te zetten (2 keer dezelfde test en datum kan niet)

Verwijderd

even alle sheets aflopen en hun naam controleren:
Visual Basic:
1
2
3
4
5
6
7
8
dim NieuweNaam as string
dim BestaandeSheet as worksheet
for each bestaandesheet in naarbestand.worksheets
  if bestaandesheet.name=nieuwenaam then
    nieuwenaam=nieuwenaam & format(now,"dd-mm-yy")
    exit for
  end if
next

  • DarkShadow
  • Registratie: Juli 2000
  • Laatst online: 20-08 23:09
tnx dude, 2 keer in een keer klaar >:) !
Pagina: 1