martedì 31 gennaio 2012

EXCEL VBA: RICAVARE IL NOME UTENTE DI WINDOWS

Inserendo in un modulo VBA di excel il seguente codice, è possibile ricavare il nome utente di windows:

Public Declare Function GetUserName Lib "advapi32.dll" _
Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Public Function ReturnUserName() As String
 ' returns the NT Domain User Name
 Dim rString As String * 255, sLen As Long, tString As String
    tString = ""
    On Error Resume Next
    sLen = GetUserName(rString, 255)
    sLen = InStr(1, rString, Chr(0))
    If sLen > 0 Then
        tString = Left(rString, sLen - 1)
    Else
        tString = rString
    End If
    On Error GoTo 0
    ReturnUserName = UCase(Trim(tString))
End Function

EXCEL VBA: VERIFICARE SE ESISTE UN FOGLIO DI LAVORO

La seguente funzione se inserita in un modulo VBA di excell consente di verificare l'esistenza di un foglio di lavoro (sheet) in un file excel (workbook):

Public Function SheetExists(sname) As Boolean
    ' Returns TRUE if sheet exists in the active workbook
    Dim x As Object
    On Error Resume Next
    Set x = ActiveWorkbook.Sheets(sname)
    If Err = 0 Then SheetExists = True _
    Else SheetExists = False
End Function

BARRE PERSONALIZZATE IN EXCEL 2010

Office 2010 consenta la creazione di barre personalizzate in maniera più semplice rispetto alle versioni precedenti, utilizzando dei file xml.
Per rendere più semplice l'operazione conviene servirsi di un software che si può installare sul PC anche senza i diritti di amministratore, scaricabile al seguente link:
http://openxmldeveloper.org/attachment/239.ashx

Una volta installato aprire il file dove inserire la commandbar personalizzata con questo nuovo programma:


A questo punto scegliere Insert==>Office 2010 Custom UI Part


Quindi selezionare l'inserimento di una commandbar di esempio e modificarla secondo le proprie esigenze:
immagine3


 Alla riapertura del file excel comparirà la nuova barra.

Se con i nuovi pulsanti si volesse eseguire una macro registrata nel proprio file sull'istruzione onAction va inserito il nome della macro. Inoltre la macro andrà completata inserendo "control As IRibbonControl" nei parametri della Macro stessa:
Es. Sub Marco01(control As IRibbonControl)

       ........

     End Sub

MANIPOLARE VIDEO CON PHP FFMPEG

E' possibile, utilizzando pagine PHP, manipolare file video. In particolare trasformare il formato degli stessi come estrarre dei frame dai video stessi.
E' necessario disporre nel server (locale o internet) dell'estensione FFMPEG.
Per ulteriori funzionalità è possibile visitare al link che segue la pagina della  documentazione delle API: http://ffmpeg-php.sourceforge.net/
Riporto di seguito un esempio di come sia possibile estrarre il primo frame di un video e generare quindi un file JPG da visualizzare, ad esempio, come preview del video stesso:

//Creo una funzione che ha tutti i prametri per estrarre un determinato frame e lo salva:

extension_loaded('ffmpeg') or die('Error in loading ffmpeg');
function _createStill($sVideoPath, $nSeconds, $sImgPath)
   {    
      $oMovie = new ffmpeg_movie($sVideoPath);
      if(is_null($oMovie)){
         throw new Exception(
            'FFMPEG failed to load the movie file'
         );
      }
      if($nSeconds == 0){
         $nSeconds = 1;
      }
     
      $nFrameRate = 20; // JW Player uses 20FPS
      $nFrameNum = floor($nFrameRate * $nSeconds);
      if(!$oFrame = $oMovie->getFrame($nFrameNum)){
         throw new Exception(
            'Could not get stil frame from movie'
         );
      }else{
         $oImage = $oFrame->toGDImage();
         $sImgFile = $sImgPath;
         imagejpeg($oImage, $sImgFile);
         return $sImgFile;
      }
   }

RIGENERARE THUMBNAIL FOTO JPG IN PAGINE PHP

E-mail Modifica

E' possibile rigenerare il thumbnail presente negli EXIF DATA di una immagine JPEG utilizzando un particolare programma che consente appunto di manipolare gli EXIF DATA di una foto. Tale programa è JHEAD è utilizzabile sia sotto linux (installando le relative librerie), sia in windows (scaricando il file jhead.exe), che all'interno di pagine php quindi lato server.
Riporto come esempio una implementazione che ho eseguito per rigenerare il thumbnail presente negli exif data per delle foto importate all'interno di un sito per le quali, dopo averle scaricate, ho dovuto ruotarle senza che la stessa rotazione avenisse nel thumbnail degli EXIF data, di conseguenza ho dovuto rigenerarlo per renderlo coerente con la foto.

$fullpath = 'path completo della foto';
exec("./jhead/jhead -rgt[1] ".$fullpath);

Inserendo queste due righe di codice in una pagina php si riesce a rigenerare il thumbnail.
nei parametri del comano exec è necessario riportare:
1) il path dove precedentemente avremo copiato nel server il file jhead.exe
2) l'istruzione con cui si rigenerai il thumbnail, tale istruzione potrà essere sostituita con altre istruzioni di jhed che effettuano altre operazione (vedere documentazione relativa a head)
3) il path completo del nome del file da trattare