Xls: script nodig voor hyperlinks af te spelen

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

Anoniem: 1330470

Topicstarter
Ik heb in excel een file met hyperlinks in een kolom die gaat van D2 tem D300. Deze hyperlinks zijn verbonden met wav-files op mijn PC. Als ik zo'n hyperlink aanklik dan speelt hij automatisch dit liedje af.
Ik zou nu graag een script hebben waarbij ik een macro heb die, als ik deze open, hij al deze liedjes afspeelt. dus hij begint met het liedje van D2 en als dit stopt start hij het liedjes van D3 enz...
(Het is namelijk zo dat deze rij van D2 tem D300 een hitlijst vormt die jaarlijks van volgorde verandert.
Door dit script zou ik mij heel veel werk uitsparen om de volgorde iedere keer weer over te moeten zetten in I-tunes waarin ik alles afspeel.)
Is dit mogelijk?

Dit is het script dat ik momenteel heb maar het opent slechts het eerste liedje en gaat dan niet verder.
Het maakt niet uit of ik de eerste cel ga staan of alle cellen selecteer, hij speelt slechts het liedje van de aangeduide cel of slechts het laatste van de reeks cellen.
Ik ken niets van scripting en heb een aantal scripts in in VAB-project geplakt en voorlopig werkt enkel deze maar speelt hij niet alle nummes achteree.

Sub MuziekAfspelen()
Dim objSelectedRange As Excel.Range
Dim objHyperlink As Excel.Hyperlink

'Get selected ranges
Set objSelectedRange = Excel.Application.Selection
For Each objHyperlink In objSelectedRange.Hyperlinks
objHyperlink.Follow
Next
End Sub

groeten
Johan

Beste antwoord (via F_J_K op 29-01-2020 07:57)


Anoniem: 1330470

Topicstarter
Ok, ik heb een codering gevonden die werkt

Ik heb namelijk vanuit een mediaspeler een playlist gesaved en deze geopend met kladblok.
Zo kon ik de code bekijken die de mediaspeler gebruikt. En dit heeft mij de volgende oplossing gegeven.

ik heb dus een excellijst met op elke rij een song
In een bepaalde kolom schrijf ik het volgende: <track><location> bv.B1
in de kolom daarop zet ik het volledige pad van de song bv.B2
in de kolom daarna schrijf ik dan: </location></track> bv B3

dan plaats ik in de volgende kolom de volgende formule : =TEKST.SAMENV(B1:B2)
dit zorgt ervoor dat in deze kolom alle voorgaande teksten worden samengevoegd tot 1 tekst
Hierdoor moet ik enkel het pad plaatsen zonder steeds de intro en outro van B1 en B3 erbij te zetten

Hierna maak ik een tekstfile aan die begint met het volgende script

<?xml version="1.0" encoding="UTF-8"?>
<playlist version="1" xmlns="http://xspf.org/ns/0/">
<trackList>

hierop laat ik mijn samengestelde kolom volgen die ik kopieëer uit mijn excel-file

en ik sluit af met

</trackList>
</playlist>

de extensie van de txtfile verander ik in .xspf

Ik hoef dan maar te dubbelkilkken op dit file en mijn playlist gaat automatish open in een mediaplayer.

Een volgende keer als mijn lijst van song van volgorde verandert is moet ik enkel de verzamelkolom in dit .xspf-file te veranderen en mijn playlist speelt in een nieuwe volgorde af.

en het werkt...

Ik wil iedereen bedanken want ook kreeg ik niet meteen het antwoord (of begreep ik niet alles wat jullie zeiden omdat ik amper ites van VAB afweet) maar wist ik waar ik moest zoeken om mijn probleem op te lossen.

Alle reacties


Acties:
  • +1 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

(Ten nulde: welkom!)

Ten eerste: Excel lijkt me heel erg de verkeerde tool voor zoiets. Neem een mediaspeler ;)

Ten tweede: je wilt de tweede vast pas afspelen als de eerste is afgelopen. Direct de tweede aanroepen zal dus niet handig zijn. Je zou dan eerst code moeten vinden hoe lang de eerste duurt en die tijd afwachten. Of zien of je kunt checken dat de mediaspeler is afgerond. Al je geen ervaring hebt met scripten laat staan wat meer geavanceerde zaken: zie punt 1. Ouderwetsche Winamp queues werken beter.

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


Acties:
  • 0 Henk 'm!

Anoniem: 1330470

Topicstarter
Ik dacht wel dat dit het probleem zou zijn. Is er dan misschien een mogelijkheid om vanuit excel een playlist weg te schrijven die ik kan openen in een mediaspeler. Ik werk momenteel al met alles om te zetten in een mediaspeler mar de voorbereiding en berekening gebeurt in excel. Het gaat hier om een lijst van muziek die jaarlijks via puntengeving van volgorde verandert en dan moet ik in de mediaspeler telkens alles aanpassen. Als ik vanuit excel alles kan wegschrijven en binnenhalen in een mediaspeler (momenteel is dit I-tunes) dan bespaar ik me heel veel werk.

Acties:
  • +1 Henk 'm!

  • nachtnet
  • Registratie: December 2003
  • Laatst online: 23:56
Je kunt het toch vanuit excel wegschrijven als txt file? En die tekstfile hernoemen naar een .m3u playlist. :m3u is immers ook een txt bestand.

Misschien moet je dan wel met wat bewerking van de txt file gaan werken,..

[ Voor 21% gewijzigd door nachtnet op 26-01-2020 12:08 ]


Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Anoniem: 1330470 schreef op zondag 26 januari 2020 @ 11:40:
Ik dacht wel dat dit het probleem zou zijn. Is er dan misschien een mogelijkheid om vanuit excel een playlist weg te schrijven die ik kan openen in een mediaspeler. Ik werk momenteel al met alles om te zetten in een mediaspeler mar de voorbereiding en berekening gebeurt in excel. Het gaat hier om een lijst van muziek die jaarlijks via puntengeving van volgorde verandert en dan moet ik in de mediaspeler telkens alles aanpassen. Als ik vanuit excel alles kan wegschrijven en binnenhalen in een mediaspeler (momenteel is dit I-tunes) dan bespaar ik me heel veel werk.
Excel is voor spreadsheets, het heeft niet ten doel om muziek op volgorde af te spelen. Scripts omeea om te zetten zullen er vast zijn, maar ik denk dat Google je dan beter helpen kan, of je moet zelf iets schrijven.

Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

nachtnet schreef op zondag 26 januari 2020 @ 12:07:
Je kunt het toch vanuit excel wegschrijven als txt file? En die tekstfile hernoemen naar een .m3u playlist. :m3u is immers ook een txt bestand.
Dat ja. Maak, bijvoorbeeld met Excel, een simpele lijst met 1 bestandsnaam per regel, opslaan als .txt, hernoemen naar .m3u en open in de mediaspeler. (Tenminste, hier getest in Winamp werkt dat prima). Als het volautomatisch moet, dan is met VBA op te slaan en te hernoemen.

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


Acties:
  • 0 Henk 'm!

Anoniem: 1330470

Topicstarter
Ok, ben al een stap verder maar wat moet die bestandsnaam zijn zodat de mediaplayer deze herkend als een link naar het betreffende liedje. Er verschijnen gewoon de namen van de liedjes maar de mediaspeler speelt de muziek niet af. Daarbij kan ik kiezen bij het wegschrijven naar een txt-file voor unicode, dos en tab en ik weet niet welke ik moet kiezen. Heb ze alle drie getest maar geen enkele werkt.

In ieder geval bedankt voor de reacties tot nu toe.

Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Zou niet uit moeten maken. "DOS" ligt meest voor de hand. Hoe ziet het resulterende tekstfile er uit en welke mediaspeler gebruik je?

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


Acties:
  • 0 Henk 'm!

Anoniem: 1330470

Topicstarter
In Excel heb ik voor elke liedje gewoon de titel van dat liedje gebruikt. Dan een hyperlink gemaakt naar de wave-file.
Daarna dit exel bestand weggeschreven naar een txt-file. daarna de extensie naar m3u veranderd
Deze txt-file heeft echter de hyperlinks verwijderd (dus ik denk dat ik daar al fout zit - hoe kan de mediaplayer nu nog de file terugvinden op mijn pc)
De mediaplayer laad gewoon de tekst binnen maar kan die uiteraard niet naar de afspeelbare file linken.
Ik denk dus dat in mijn oorspronkelijke excel-file een soort codering of script moet zitten dat bij het omzetten naar een txt-file de links laat behouden en herkenbaar maakt voor de mediaplayer.

Ik heb winamp en Clementine gebruikt maar logischerwijs doen deze players er nog niet toe aangezien eerst mijn txt-file in orde moet zijn.

Acties:
  • 0 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

De m3u-file moet per regel alleen de volledige bestandsnaam bevatten, incl. pad. Wat F_J_K schrijft letterlijk uitvoeren:
F_J_K schreef op zondag 26 januari 2020 @ 19:20:
[...]

Dat ja. Maak, bijvoorbeeld met Excel, een simpele lijst met 1 bestandsnaam (incvl. pad) per regel, opslaan als .txt, hernoemen naar .m3u en open in de mediaspeler.

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Inderdaad zal een export naar txt alleen de tekst exporteren. Je zult dus de link er uit moeten halen. Volgens mij is daar geen functie voor zonder VBA, met VBA kan het wel.
objHyperlink.Range.Offset(0, 1).Value = objHyperlink.Address plaatst het in de kolom er rechts van. Die dan dus bestaande data overschrijft. Pas aan naar concrete situatie en test in een kopie.

--

Maar: blijkt dat VBA wel de lengte van een file kan zien. Ik zou het erg afraden, maar je kunt de tijd uitvragen en dan die tijd wachten tot afspelen van de volgende.
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
Sub foo()
    Const LENGTH = 27

    Set oShell = CreateObject("Shell.Application")
    Set oFolder = oShell.Namespace("C:\temp")
    Set oFile = oFolder.ParseName("2.wav")

    strLength = oFolder.GetDetailsOf(oFile, LENGTH)

    Debug.Print strLength

End Sub

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


Acties:
  • 0 Henk 'm!

Anoniem: 1330470

Topicstarter
Heel erg bedankt voor alle reacties maar ik ben eigenlijk totaal niet bekend met VBA.

Darom dat ik niet alles goed genoeg begrijp om verder te geraken.
Zo snap ik niet goed wat ik moet doen met deze uitleg uit de vorige reactie.

"objHyperlink.Range.Offset(0, 1).Value = objHyperlink.Address plaatst het in de kolom er rechts van."

Moet ik deze gevevens nu in VAB verwerken of in mijn spreadsheet...? is dit nu bedoeld om een playlist weg te schrijven of om de muziek vanuit Excel af te spelen?

Ik heb nu voorlopig een script dat werkt zodat wanneer ik in een cel selecteer, die een hyperlink naar een Wav-file bevat, hij deze afspeelt als ik de macro laat lopen.

Maar nu zou ik aan dit script iets moeten toevoegen zodat de macro in de cel ernaast gaat kijken hoeveel seconden dit liedje duurt en zolang moeten wachten alvorens verder te gaan met het script. (Ik weet niet in welke mate het script hierboven voor gebruikt kan worden) Vervolgens moet het script na de opgegeven seconden een cel omlaag en een cel naar links gaan (waar de volgende hyperlink staat)
Waarna het script terug naar het begin moeten gaan (een loop maken dus) maar wel met die uitzondering dat als hij een cel tegenkomt zonder hyperlink (of een lege cel) hij het script/de macro moet beëindigen.

Het script dat ik voorlopig heb om de muziek af te spelen is als volgt:

Sub MuziekAfspelen()
Dim objSelectedRange As Excel.Range
Dim objHyperlink As Excel.Hyperlink

'Get selected ranges
Set objSelectedRange = Excel.Application.Selection
For Each objHyperlink In objSelectedRange.Hyperlinks
objHyperlink.Follow
Next
End Sub

maar dit werkt dus slecht voor 1 hyperlink. als ik een kolom van hyperlinks selecteer wordt enkel het laatste nummer afgespeeld.

Acties:
  • 0 Henk 'm!

  • Jester-NL
  • Registratie: Januari 2003
  • Niet online

Jester-NL

... pakt een botte bijl

Anoniem: 1330470 schreef op maandag 27 januari 2020 @ 22:42:
Heel erg bedankt voor alle reacties maar ik ben eigenlijk totaal niet bekend met VBA.
(...)
maar dit werkt dus slecht voor 1 hyperlink. als ik een kolom van hyperlinks selecteer wordt enkel het laatste nummer afgespeeld.
In dat geval zou ik VBA gewoon niet gebruiken... je wilt het snel en simpel houden. Een programmeertaal leren om een aantal bestanden eens in de zoveel tijd in een andere volgorde te zetten lijkt mij wat overtrokken.

En dan kom je toch weer uit op de optie .m3u

The sky above the port was the color of television, turned to a dead channel
me @ last.fm


Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Anoniem: 1330470 schreef op maandag 27 januari 2020 @ 22:42:
Zo snap ik niet goed wat ik moet doen met deze uitleg uit de vorige reactie.

"objHyperlink.Range.Offset(0, 1).Value = objHyperlink.Address plaatst het in de kolom er rechts van."
Je kunt je huidige code aanpassen om hiermee eenmalig de "hyperlink" om te zetten naar filename / pad. Als je eenmaal een lijst bestanden hebt dan kan je die makkelijk opslaan of copypasten naar .txt en hernoemen.

Maar ik raad af het te gebruiken als je niet weet wat de code doet (en geen tijd hebt om eerst de basis van VBA te leren), omdat je dan gegevens gaat verliezen. Of ga een tijdje 'oefenen' in een kopie van het bestand en check via F1 wat de verschillende functies doen.

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


Acties:
  • Beste antwoord
  • +1 Henk 'm!

Anoniem: 1330470

Topicstarter
Ok, ik heb een codering gevonden die werkt

Ik heb namelijk vanuit een mediaspeler een playlist gesaved en deze geopend met kladblok.
Zo kon ik de code bekijken die de mediaspeler gebruikt. En dit heeft mij de volgende oplossing gegeven.

ik heb dus een excellijst met op elke rij een song
In een bepaalde kolom schrijf ik het volgende: <track><location> bv.B1
in de kolom daarop zet ik het volledige pad van de song bv.B2
in de kolom daarna schrijf ik dan: </location></track> bv B3

dan plaats ik in de volgende kolom de volgende formule : =TEKST.SAMENV(B1:B2)
dit zorgt ervoor dat in deze kolom alle voorgaande teksten worden samengevoegd tot 1 tekst
Hierdoor moet ik enkel het pad plaatsen zonder steeds de intro en outro van B1 en B3 erbij te zetten

Hierna maak ik een tekstfile aan die begint met het volgende script

<?xml version="1.0" encoding="UTF-8"?>
<playlist version="1" xmlns="http://xspf.org/ns/0/">
<trackList>

hierop laat ik mijn samengestelde kolom volgen die ik kopieëer uit mijn excel-file

en ik sluit af met

</trackList>
</playlist>

de extensie van de txtfile verander ik in .xspf

Ik hoef dan maar te dubbelkilkken op dit file en mijn playlist gaat automatish open in een mediaplayer.

Een volgende keer als mijn lijst van song van volgorde verandert is moet ik enkel de verzamelkolom in dit .xspf-file te veranderen en mijn playlist speelt in een nieuwe volgorde af.

en het werkt...

Ik wil iedereen bedanken want ook kreeg ik niet meteen het antwoord (of begreep ik niet alles wat jullie zeiden omdat ik amper ites van VAB afweet) maar wist ik waar ik moest zoeken om mijn probleem op te lossen.

Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Zonder vba is wat mij betreft altijd beter :)

De xml er om heen is -tenminste bij mij met oude Winamp- niet nodig. Maar wel mooier.

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


Acties:
  • 0 Henk 'm!

Anoniem: 1330470

Topicstarter
Wat ik volgens mij wel altijd heb vergeten te vermelden is dat het voor mij belangrijk is dat als ik de volgorde van de playlist in excel verander dan weet ik zelf de uitkomst niet wil kennen.
De songs in de playlist krijgen ieder jaar nieuwe punten. Ik weet dan wel ongeveer welke liedjes goed scoren maar de echte volgorde ken ik niet. Het is dan ook een spannend moment als die liedjes dan worden afgespeeld zoals een hitlijst op de radio. Wat zijn de grootste stijgers/waar staat de hoogste nieuwkomer enz...
Doordat ik de liedjes handmatig moest overzetten in een playlist wist ik echter de volgorde al op voorhand. Met dit systeem kan ik de volgorde aanpassen en in één keer inladen in en mediaspeler en bij het afspelen de volgorde horen. En uiteraard heb ik zo veel sneller mijn playlist gemaakt dan dat ik de liedjes handmatig moet inladen in een mediaplayer. (We praten dan ook van zo'n 250 tot 300 liedjes)

[ Voor 16% gewijzigd door Anoniem: 1330470 op 29-01-2020 23:09 ]


Acties:
  • 0 Henk 'm!

Anoniem: 1330470

Topicstarter
bedankt, iedereen.

[ Voor 92% gewijzigd door Anoniem: 1330470 op 29-01-2020 23:10 ]


Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Begrijp ik ja :)
Ajb volgende keer je eigen bericht aanpassen als je wat wilt aanpassen/aanvullen: https://gathering.tweaker...update_message/61294446/0

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

Pagina: 1