[MS Excel] meerdere bestanden tegelijkertijd wijzigen

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

  • Sjadow_
  • Registratie: December 2001
  • Laatst online: 05-06-2024
Ik kreeg van de week de vraag van een kennis of het mogelijk was om met
MS Excel meerdere documenten zo te beheren dat wanneer bijvoorbeeld in document1 iets gewijzigd werd dit ook gelijk in document2 gewijzigd wordt.

Ik heb al gezocht in de help van Excel en op hier op tweakers.net en google.nl, maar heb hier helaas niks concreets over kunnen vinden.
Mijn vraag is dus of dit mogelijk is, eventueel met meerdere tabbladen, zo ja hoe?

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Een koppeling maken:
='C:\\[filenaam.xls]Bladnaam'!$A$1

Of natuurlijk een (VBA) macro als je het in veel documenten moet doen waar geen koppeling is. Neem een macro op om te zien hoe en wat ;)

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


  • Sjadow_
  • Registratie: December 2001
  • Laatst online: 05-06-2024
Ja ik zat zelf ook al te denken aan een macro, maar ik weet niet hoe dit werkt, maar ik ga dit wel even uitzoeken dan :)

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Je kan met de sub worksheet_change() zien of een bepaalde cel is gewijzigd:

Visual Basic:
1
2
3
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$F$1" Then msgbox "woei"
End Sub


Dat moet dan natuurlijk wel in het document staan waar de wijziging gezien moet worden. Als dat niet het geval is, zal je in een apatre macro dat bestand moeten openen en kijken wat de waarde van (in dit voorbeeld) cel F1 is, en het op een of andere manier (zoals de oude waarde ergens bewaren) moeten vergelijken met de huidge waarde.

Vervolgens kan je met bijv. het volgende iets aanpassen:
Visual Basic:
1
2
3
4
5
6
Sub Macro1()
    Workbooks.Open Filename:="C:\directory naam\bestandsnaam.xls"
    Range("F1").FormulaR1C1 = "blabla"
    ActiveWorkbook.Save
    ActiveWindow.Close
End Sub

Met macro opnemen en kijken wat er gebeurt + F1 zou het verder wel mloeten lukken gok ik, anders horen we het wel waar je vastloopt :)

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


  • Sjadow_
  • Registratie: December 2001
  • Laatst online: 05-06-2024
Ok bedankt, ik ga dat wel eens proberen, heb nu niet echt tijd om eraan te knutselen, maar je hoort het nog wel als gelukt is.... of niet ;)

  • hershel
  • Registratie: Juli 2004
  • Laatst online: 13-07 15:35
Sorry voor de schop, maar F_J_K, zou je kunnen aangeven hoe deze
code:
1
2
3
4
5
6
Sub Macro1()
    Workbooks.Open Filename:="C:\directory naam\bestandsnaam.xls"
    Range("F1").FormulaR1C1 = "blabla"
    ActiveWorkbook.Save
    ActiveWindow.Close
End Sub

stukje code er in VBA uit moet zien om alle xls files in een map te wijzigen (stel C:\XLS\), ik moet namelijk 250 bestanden voorzien van een ander versienummer. Het huidige versienummer staat in alle bestanden in cel C65, daar moet dus een andere waarde. Als jij, of iemand anders, me de benodigde macro code kan geven zou ik dat erg waarderen.

[ Voor 4% gewijzigd door hershel op 01-07-2004 23:57 ]


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

Onder F1 staat onder het kopje Dir (niet onverwacht als je je commandline commando's kent :P )
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
' Display the names in C:\ that represent directories.
MyPath = "c:\"    ' Set the path.
MyName = Dir(MyPath, vbDirectory)    ' Retrieve the first entry.
Do While MyName <> ""    ' Start the loop.
    ' Ignore the current directory and the encompassing directory.
    If MyName <> "." And MyName <> ".." Then
        ' Use bitwise comparison to make sure MyName is a directory.
        If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
            Debug.Print MyName    ' Display entry only if it
        End If    ' it represents a directory.
    End If
    MyName = Dir    ' Get next entry.
Loop

Natuurlijk aanpassen naar wens: geen directories maar *.xls en geen debug.print maar er dan steeds iets mee doen (aanpassen die hap) :Y)

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


  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 15:05
Je kan "rondom" deze code
code:
1
2
3
4
    Workbooks.Open Filename:="C:\directory naam\bestandsnaam.xls"
    Range("F1").FormulaR1C1 = "blabla"
    ActiveWorkbook.Save
    ActiveWindow.Close


ook het filesearch object van VBA gebruiken.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
sub jenaam()
With Application.FileSearch
    .NewSearch
    .LookIn = "C:\My Documents"
    .SearchSubFolders = True
    .FileName = "Run"
    .MatchTextExactly = True
    .FileType = msoFileTypeExcelWorkbooks
    If .Execute() > 0 Then
        For i = 1 To .FoundFiles.Count
           Workbooks.Open Filename:= .Foundfiles(i)
           Range("F1").FormulaR1C1 = "blabla"
           ActiveWorkbook.Save
           ActiveWindow.Close        
        Next i
    Else
        MsgBox "There were no files found."
    End If
end sub

Dit voorbeeldje komt recht uit de VBA/Excel help, dus kan wel eens wat aanpassing behoeven :)

  • hershel
  • Registratie: Juli 2004
  • Laatst online: 13-07 15:35
Bedankt voor jullie hulp heren, ik zal het zo eens uitproberen!
Pagina: 1