Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature may not be available in some browsers.
All'inizio della macro viene dichiarata la sub URLDownloadToFile collegandola a una DLL di Windows, che ovviamente su MAC non c'e', quindi è necessario creare una URLDownloadToFile apposita per Mac; forse si puo' fare facendogli lanciare con VBA.shell() (ammesso che su MAC funzioni) un programma esterno che scarica un file (wget?).marpar ha scritto:Vorrei provare a far funzionare il programma anche su mac.
Ammesso che trovi un programmino che scarichi un file da internet da riga di comando (cosa che credo sia ampiamente fattibile) in quale zona della macro dovrò apportare le modifiche per disattivare la dll di windows che si occupa attualmente di svolgere tale mansione?
Grazie
Proviamo. In finale, come dicevo, l'unica incompatibilità dovrebbe essere quella librera, poi si tratta solo di giocare con file e stringhe con le funzioni standard di VBA: se funzionano anche in Excel per Mac, è facile!marpar ha scritto:Si potrebbe provare ad usare il comando curl che a differenza di wget è già preinstallato su MAC come descritto qui
Jumpjack riesci a darmi una mano?
Tentativi = Tentativi + 1
errcode = URLDownloadToFile(0, strurl, nomefile, 0, 0)
If errcode = 0 Then
'Debug.Print "OK"
Else
If Tentativi < MAX_Tentativi Then
GoTo retry3:
Else
Debug.Print "############ Scaricamento dati genere '" + genere(G), "': ERRORE ", Hex$(errcode)
errcode = 0
End If
End If
Function ShellAndWaitMac(cmd As String) As Boolean
' Run a shell command cmd in the workbook directory, waiting for completion
' To embed spaces within cmd, enclose the string in apostrophes, e.g., 'name with space'
'
Dim scriptCmd As String ' Macscript command
Err.Clear
On Error GoTo scriptError
' Get current workbook directory
' VBA uses pre-OS-X, colon-delimited paths, e.g., TrustyG4 OS:Users:rob:Desktop
' so use Applescript to convert to POSIX name, e.g., /Users/rob/Desktop
Dim posixcwd As String
scriptCmd = "POSIX path of """ & ThisWorkbook.path & """"
posixcwd = MacScript(scriptCmd)
' **** Compose UNIX shell command, then wrap it Applescript and execute ****
Dim shcd As String, shcmd As String
Dim result As String
' cd to current POSIX dir, quoted in case of embedded spaces
shcd = "cd " & "'" & posixcwd & "'"
' add the command and its arglist
shcmd = "; " & cmd
' embed for Applescript
scriptCmd = "do shell script """ & shcd & shcmd & """"
' ********* Command launch *******
result = MacScript(scriptCmd) ' result contains stdout, should you care
ShellAndWaitMac = True
Exit Function
'
' Error, presumably executing MacScript()
scriptError:
Dim Msg As String
Msg = "Error # " & Str(Err.Number) & " from " _
& Err.Source & ": " & Err.Description & vbNewLine _
& "Macscript = " & scriptCmd
MsgBox Msg, , "ShellAndWaitMac"
ShellAndWaitMac = False
End Function
mac-mini:skyfiles Marco$ curl -O http://guidatv.sky.it/app/guidatv/contenuti/data/grid/grid_GGGGGGGG_channels.js
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 3870 100 3870 0 0 4616 0 --:--:-- --:--:-- --:--:-- 14124
mac-mini:skyfiles Marco$ curl -O http://guidatv.sky.it/app/guidatv/contenuti/data/grid/AA_MM_GG/ch_CCCCCCCC.js
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 3870 100 3870 0 0 7624 0 --:--:-- --:--:-- --:--:-- 8657
marpar ha scritto:Grazie...
I primi due li scarica senza problemi:
gli altri due naturalmente non può scaricarli per la mancanza di id evento e programma...Codice:mac-mini:skyfiles Marco$ curl -O http://guidatv.sky.it/app/guidatv/contenuti/data/grid/grid_GGGGGGGG_channels.js % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 3870 100 3870 0 0 4616 0 --:--:-- --:--:-- --:--:-- 14124 mac-mini:skyfiles Marco$ curl -O http://guidatv.sky.it/app/guidatv/contenuti/data/grid/AA_MM_GG/ch_CCCCCCCC.js % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 3870 100 3870 0 0 7624 0 --:--:-- --:--:-- --:--:-- 8657
Mah, io l'ho scritto perchè non mi riesce di far funzionare XMLTV... A te funziona quell'impossibile programma?!?fr3nk2000 ha scritto:Ciao a tutti...ho provato a scaricare il palinsesto e sembra funzionare...c'è modo di trasformarlo nel formato xmltv per Progdvb o simili?!
grazie
Errore di compilazione:
Il codice del progetto deve essere aggiornato per l'utilizzo in sistemi a
64 bit. Esaminare e aggiornare le istruzioni Declare, quindi
contrassegnarle con l'attributo PtrSafe.
jumpjack ha scritto:Mah, io l'ho scritto perchè non mi riesce di far funzionare XMLTV... A te funziona quell'impossibile programma?!?
marpar ha scritto:VBA.shell() su MAC non funziona ma si può aggirare con Applescript come descritto qui
Sub apriapp()
VBA.Shell ("Mac HD:Applications:TextEdit.app:Contents:MacOS:TextEdit")
End Sub
Sub ScaricafilesitoSky()
Dim ScriptToRun As String
ScriptToRun = "Skydownload.scpt" 'file script nella stessa dir del file Excel che scarica "grid_GGGGGGGG_channels.js" e "ch_CCCCCCCC.js"
'Avvia applescript
MacScript (ScriptToRun) 'Lancia il comando in Applescript
End Sub
do shell script "curl -L " & "http://guidatv.sky.it/app/guidatv/contenuti/data/grid/grid_GGGGGGGG_channels.js" & " -o" & "/Users/Marco/Desktop/grid_GGGGGGGG_channels.js"
do shell script "curl -L " & "http://guidatv.sky.it/app/guidatv/contenuti/data/grid/AA_MM_GG/ch_CCCCCCCC.js" & " -o" & "/Users/Marco/Desktop/ch_CCCCCCCC.js"
Public Declare Function URLDownloadToFile Lib "urlmon" Alias _
"URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, _
ByVal szFileName As String, ByVal dwReserved As Long, _
ByVal lpfnCB As Long) As Long
Public Function URLDownloadToFile(TipoFile as integer, strurl as string, nomefile as string, dummy1 as integer, dummy2 as integer)
Dim ScriptToRun(4) As String
ScriptToRun(1) = "SkyDownloadGenere.scpt"
ScriptToRun(2) = "SkyDownloadCanale.scpt"
ScriptToRun(3) = "SkyDownloadEvento.scpt"
ScriptToRun(4) = "SkyDownloadMese.scpt"
MacScript (ScriptToRun(TipoFile))
end function