[VBA] Excel autosave naar HTML macro

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • yorroy
  • Registratie: Februari 2005
  • Laatst online: 07-10 15:17
Ik zit al zo'n beetje de hele dag te klooien met het volgende:

In ons bedrijf worden vanuit Cognos (IBM) roosters in Excel geproduceerd.
Echter worden er vrij veel wijzigingen gemaakt gedurende de dag, de roosters wijzigen dus nogal eens.

Voor een goed overzicht van het rooster draait er 24/7 een HTML bestand op een groot TV scherm waarop het meest recente rooster te zien is.
Nu heb ik in Excel zo ingesteld dat als ik het XLSX bestande opsla er gelijktijdig een HTM bestand gegenereerd wordt.

Tot zo ver gaat het goed...


Probleem:
Er zijn een stuk of 20-25 mensen die de roosterwijzigen maken.
De instelling dat het rooster automatisch geexporteerd wordt is PC gebonden. Dus het automatisch exporteren gebeurd alleen op mijn PC.

Oplossing 1
Een andere instelling dat er voor zorgt dat het Excel bestand op elke PC automatisch geexporteerd wordt naar HTM/HTML.

Oplossing 2
Een knop dat een macro oproept dat er voor zorgt dat het bestand zowel in XLSX als HTM opgeslagen wordt (in dezelfde map).

Zelf geprobeerd
Ik heb geprobeerd met Marco Opnemen een dusdanige Macro te bouwen die bovenstaande uitvoert, maar dit is me niet gelukt.
Verder kan ik ook geen instelling vinden die er voor zorgt dat het bestand op elke PC standaard geexporteerd/opgeslagen wordt naar Excel en HTML.

Mijn vraag
Is oplossing 1 of 2 mogelijk? Wie kan mij op weg helpen?

Alle reacties


Acties:
  • 0 Henk 'm!

  • DHH
  • Registratie: Augustus 2014
  • Laatst online: 07-09-2024

DHH

Eigenlijk geen ervaring met het maken van macro's, maar - net als jij - even gespeeld met macro's opnemen en volgens mij zou je met onderstaande code een bestand kunnen opslaan als .xlsm en .mht.

Als je dit aan een knop koppelt, zou dat gedeelte moeten werken. Je zal nog wel moeten bevestigen dat het bestaande bestand overschreven wordt.

Daarnaast zou je een oplossing moeten verzinnen voor het opnieuw inladen van het .mht-bestand in je browser, want deze wordt niet automatisch geüpdate (wel werd het .mht-bestand bij mij overschreven, ondanks dat het nog open stond in mijn browser, een simpele 'F5' toonde bij mij de wijzigingen).

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub Macro1()
'
' Opslaan als .mht
'
    ChDir "C:\Temp"
    With ActiveWorkbook.PublishObjects.Add(xlSourceSheet, _
        "C:\Temp\voorbeeld.mht", "Summarize data", "", _
        xlHtmlStatic, "Voorbeeld", "")
        .Publish (True)
        .AutoRepublish = False
    End With
'
' Opslaan als .xlsm
'
    ActiveWorkbook.SaveAs Filename:="C:\Temp\voorbeeld.xlsm", FileFormat:= _
        xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End Sub

  • yorroy
  • Registratie: Februari 2005
  • Laatst online: 07-10 15:17
Bedankt voor de genomen moeite, maar het werkt voor velen toch nog wat omslachtig.
Ik denk dat er voor mijn probleem geen simpele oplossing is.


  • CappieL
  • Registratie: November 2006
  • Laatst online: 16:22
Wat is er omslachtig aan 1 knop?

Als je van die macro een Invoegtoepassing maakt, is de macro niet meer gebonden aan een bestand.
Deze invoegtoepassing kun je dan ergens op het netwerk zetten en kan iedereen deze openen.

[ Voor 8% gewijzigd door CappieL op 22-02-2018 11:15 ]


  • SmiGueL
  • Registratie: September 2005
  • Laatst online: 16:04
yorroy schreef op donderdag 22 februari 2018 @ 11:09:
Bedankt voor de genomen moeite, maar het werkt voor velen toch nog wat omslachtig.
Ik denk dat er voor mijn probleem geen simpele oplossing is.
Sla het bestand op als een .xlsm
Open de VBA editor, en plak linksboven onder 'ThisWorkbook' de volgende code:

code:
1
2
3
4
5
Sub Workbook_AfterSave(ByVal Success As Boolean)

'Plaats hier je exportscript voor het .html bestand

End Sub


ELKE keer wanneer dit bestand nu wordt opgeslagen, wordt het .html bestand ook opgeslagen op een gewenste locatie. :)

Edit:
Volgens mij gaat bovenstaande niet helemaal lekker als je opslaan als doet voor de .html file, omdat je dan in een oneindige loop terecht komt. Hier nog even een fix voor vinden dus. ;)

Edit2:
Loopfix:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
  Static bHere As Boolean
  If bHere Then Exit Sub

  bHere = True
  Application.DisplayAlerts = False
  
  
    ActiveWorkbook.SaveAs Filename:= _
        "C:\test\Filename.mht" _
        , FileFormat:=xlWebArchive, CreateBackup:=True
        

    ActiveWorkbook.SaveAs Filename:= _
        "C:\test\Filename.xlsm" _
        , FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False



  Application.DisplayAlerts = True
  bHere = False
End Sub


Houdt er wel rekening mee dat de 'opmaak' hierdoor verloren kan gaan omdat er tussendoor in .html wordt gesaved. :/ (niet zeker, geen ervaring mee)

[ Voor 44% gewijzigd door SmiGueL op 23-02-2018 11:23 ]

Delidded 4770K 4.7GHz @ H220 || Gigabyte Z87X-UD4H || 16GB @ 2400MHz || Gigabyte GTX 760 || 2x128GB Samsung 830 @ RAID-0 & WD 3 TB || Iiyama XB2483HSU-B1 || Synology DS916+ 3x6TB + 120GB SSD Cache || Synology DS213+ 6TB backup


Acties:
  • +1 Henk 'm!

  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 16:26

Reptile209

- gers -

Volgens mij moet je met de code van @DHH en de juiste locatie van @SmiGueL een heel eind komen.

Een kleine tip voor jezelf, als ik zo naar je posts kijk: probeer eens wat uitgebreider/vollediger te zijn:
yorroy schreef op vrijdag 16 februari 2018 @ 19:59:
[...]
Ik heb geprobeerd met Marco Opnemen een dusdanige Macro te bouwen die bovenstaande uitvoert, maar dit is me niet gelukt.
[...]
Wat is er dan niet gelukt? Wat lukte er wel? Hoe ziet de macro er nu uit die je hebt opgenomen?
yorroy schreef op donderdag 22 februari 2018 @ 11:09:
Bedankt voor de genomen moeite, maar het werkt voor velen toch nog wat omslachtig.
[...]
Wat is er dan nog omslachtig? Wat verwachten die 'velen' dan nog, dat deze oplossing nu niet heeft? (dit zal wel neerkomen op het op een knop moeten klikken, en dat is opgelost in de aanpak van SmiGuel, maar het blijft op basis van je post een beetje raden).

Zo scherp als een voetbal!


  • yorroy
  • Registratie: Februari 2005
  • Laatst online: 07-10 15:17
Oke, een combinatie van deze code werkt.
Als ik het bestand nu opsla als rooster.xlsm dan wordt er ook gelijk een htm bestand gemaakt, top dus.

Maar.. ik kom wel in een oneindige loop terrecht waarin wordt gevraagd of ik het htm bestand wil vervangen.
Moet ik dan nog wat toevoegen aan de code?
Sub Workbook_AfterSave(ByVal Success As Boolean)

ChDir "G:\digitaal rooster"
ActiveWorkbook.SaveAs Filename:= _
"G:\digitaal rooster\rooster.htm" _
, FileFormat:=xlHtml, ReadOnlyRecommended:=False, CreateBackup:=False

End Sub

[ Voor 3% gewijzigd door yorroy op 22-02-2018 16:23 ]

Pagina: 1