Toon posts:

[vba] excel opslaan directory

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

Verwijderd

Topicstarter
Ik stuit binnen excel op het volgende probleem.

Hier op het werk hebben we een macro binnen excel die csv files convert naar
offerts. Deze macro opent eerst de csv file vanuit c:\files\excel , waarna de offerte nog wordt bewerkt door de medewerkers.

Hierna volgt het probleem, de medewerkers moeten de bestanden opslaan op een andere
lokatie b.v d:\files en als een excel sheets. En dit gaat niet goed omdat het bestand geopend word vanuit c:\files\excel.

Nu heb ik het volgende al geprobeerd:
- Met chdir de standaard lokatie aanpassen, alleen werkt dit alleen met het openen van een bestand en niet het bewaren.
- Ook geprobeerd om een bla.tmp bestand te maken in d:\files zodat hij in ieder geval de goede map had. Alleen hebben de medewerkers meerdere keren z'n offerte open staan, waardoor het alleen helpt bij de eerste offerte.

Hopelijk kan iemand me verder helpen met die probleem,

Gegroet Spinnetje

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Hoe sla je het bestand dan op :?

Ik kan nl. voor het saven rustig de save directory aanpassen :)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Zie http://word.mvps.org/FAQs/MacrosVBA/SaveInCertainFolder.htm / http://word.mvps.org/FAQs/MacrosVBA/ChangeSaveAsPath.htm is wel word vba, maar zal niet zoveel uit mogen maken denk ik, omdat je toch niet aangeeft welke excell versie het is.

Verwijderd

Topicstarter
Gomez12
Het volgende stukje code ziet er interresant uit:
**************************************************************
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
Sub FileSave()

Dim UserSaveDialog As Dialog
Set UserSaveDialog = Dialogs(wdDialogFileSaveAs)

'save changes if doc has been saved previously
If ActiveDocument.Path <> "" Then
    ActiveDocument.Save
    Exit Sub
End If

With UserSaveDialog
    .Name = "C:\My Documents\Test"
    If .Display Then
        'if user doesn't click Cancel button,
        'quit with message if user has switched out of target folder,
        'but don't quit if user has made a
        'subfolder within the target folder
        If LCase$(Left$(CurDir, 20)) <> "c:\my documents\test" Then
            MsgBox "Documents can't be saved in that folder. Please try again."
            Exit Sub
        End If
        'save the document according to user preferences
        UserSaveDialog.Execute
    End If
End With

End Sub

***************************************************
Alleen als ik op save_as druk dan past hij het niet aan. Heb jij enige idee hoe ik dat oplos?

[ Voor 7% gewijzigd door gorgi_19 op 22-03-2005 11:11 . Reden: code-tags ]


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Roep je deze functie wel aan als de gebruiker 'Save as' kiest? Of heb je een knop gemaakt die deze macro aanroept? Wat voor informatie krijg je als je gaat debuggen: tot waar heb je waardes in variabelen die voldoen aan je verwachting en waar gaat het mis?

*kuch* CODE TAGS *kuch*

My personal website


Verwijderd

Topicstarter
"Roep je deze functie wel aan als de gebruiker 'Save as' kiest"
Hoe maak je die koppeling?

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Je kunt natuurlijk niet verwachten dat je code in een document zet en dat Excel dan zelf die code gaat aanroepen op het moment dat dat zou moeten gebeuren. Je zult toch moeten vertellen wanneer die code gebruikt moet worden...

Ik zie hier net dat de save as geen event is in Excel. Je zult dus een opslaan-knop moeten maken die de code aanroept uit je vorige post. Er bestaat wel een BeforeSave event. Ik verwacht echter dat die zich voordoet voor het document opgeslagen wordt, maar nadat de plaats aan de gebruiker gevraagd is. Dat zou je zelf even kunnen bekijken.

My personal website


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

OZ-Gump schreef op dinsdag 22 maart 2005 @ 11:27:
Er bestaat wel een BeforeSave event. Ik verwacht echter dat die zich voordoet voor het document opgeslagen wordt, maar nadat de plaats aan de gebruiker gevraagd is. Dat zou je zelf even kunnen bekijken.
Verwachtingen scheppen hoop he ;)

BeforeSave event wordt getriggered VOORDAT de save-afhandeling plaats gaat vinden. Nogmaals, dit werkt gewoon bij mij:

Visual Basic:
1
2
3
4
5
6
' Code is echt VBA, maar vind highlighting leuker ;)
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    ChDir ("C:\")
    
End Sub

En verbaas me dus waarom dit niet de oplossing was voor TS :)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Verwijderd

Topicstarter
BtM909 schreef op dinsdag 22 maart 2005 @ 11:33:
[...]

Verwachtingen scheppen hoop he ;)

BeforeSave event wordt getriggered VOORDAT de save-afhandeling plaats gaat vinden. Nogmaals, dit werkt gewoon bij mij:

Visual Basic:
1
2
3
4
5
6
' Code is echt VBA, maar vind highlighting leuker ;)
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    ChDir ("C:\")
    
End Sub

En verbaas me dus waarom dit niet de oplossing was voor TS :)

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

spinnetje2005, wat wil je met je laatste post?
Misschien moet je iets duidelijker zijn... Voor mij zegt dit nu: "Hiermee is het opgelost!" Als dat niet zo is moet je dat misschien even duidelijk verwoorden ;)

My personal website


Verwijderd

Topicstarter
OZ-Gump schreef op dinsdag 22 maart 2005 @ 11:53:
spinnetje2005, wat wil je met je laatste post?
Misschien moet je iets duidelijker zijn... Voor mij zegt dit nu: "Hiermee is het opgelost!" Als dat niet zo is moet je dat misschien even duidelijk verwoorden ;)
oww haha blijkbaar is me commentaar er niet onder gekomen
Het probleem is dat ik niet weet waar ik die code onder moet plaatsten. Als ik hem plaats in de prsnlk.xsl dan gebeurd er niks..

Gegroet spinnetje

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

1. Open de VBA editor
2. Selecteer het document in de projectview (VBA project - Excel objecten - ThisWorkbook)
3. Kies workbook in de linker dropdownbox
4. Kies BeforeSave in de rechter dropdownbox

Dit maakt een sub BeforeSave voor je aan, die gekoppeld is aan de betreffende event. Daar plaats je de code ChDir ( DeMapWaarJeWilOpslaan ).

[/cursusmode]

offtopic:
Lees de FAQ een keertje door: groeten onder elke post is niet de bedoeling. "Wij tweakers doen elkaar permanent de groeten" ;)

[ Voor 25% gewijzigd door OZ-Gump op 22-03-2005 12:26 ]

My personal website


Verwijderd

Topicstarter
OZ-Gump schreef op dinsdag 22 maart 2005 @ 12:20:
1. Open de VBA editor
2. Selecteer het document in de projectview (VBA project - Excel objecten - ThisWorkbook)
3. Kies workbook in de linker dropdownbox
4. Kies BeforeSave in de rechter dropdownbox

Dit maakt een sub BeforeSave voor je aan, die gekoppeld is aan de betreffende event. Daar plaats je de code ChDir ( DeMapWaarJeWilOpslaan ).

[/cursusmode]
Chdir werkt niet echt. Als ik op ´Opslaan als` druk dan pakt hij als nog de ouwe directory
Pagina: 1