MouseMe

Lezioni di informatica a domicilio e assistenza a smartphone, cellulari e PC

Autore: MouseMe

  • Macro VB per convertire tutti i documenti di una cartella in file di testo piano

    Mi è capitato di avere un sacco di documenti word che volevo convertire in file di testo automaticamente e non sapevo come fare.

    Ho risolto con questa macro VB che una volta lanciata chiede la cartella di partenza e poi la cartella di destinazione, convertendo tutti i file word che trova nella cartella iniziale.

    Ecco il codice:

    Option Explicit
    
    Sub BatchDocxToTxt()
        Dim srcFolder As String, destRoot As String
        Dim fldrPicker As FileDialog
        
        ' Seleziona cartella sorgente
        Set fldrPicker = Application.FileDialog(msoFileDialogFolderPicker)
        With fldrPicker
            .Title = "Seleziona la cartella sorgente (verranno cercati *.docx ricorsivamente)"
            If .Show <> -1 Then Exit Sub
            srcFolder = .SelectedItems(1)
        End With
        
        ' Seleziona cartella destinazione
        Set fldrPicker = Application.FileDialog(msoFileDialogFolderPicker)
        With fldrPicker
            .Title = "Seleziona la cartella destinazione (qui verranno salvati i .txt)"
            If .Show <> -1 Then Exit Sub
            destRoot = .SelectedItems(1)
        End With
        
        If Right(srcFolder, 1) <> "\" Then srcFolder = srcFolder & "\"
        If Right(destRoot, 1) <> "\" Then destRoot = destRoot & "\"
        
        Application.ScreenUpdating = False
        Application.DisplayAlerts = wdAlertsNone
        
        Dim fso As Object
        Set fso = CreateObject("Scripting.FileSystemObject")
        
        On Error GoTo CleanUp
        ProcessFolderRecursive fso.GetFolder(srcFolder), srcFolder, destRoot, fso
        
        MsgBox "Conversione completata.", vbInformation
    CleanUp:
        Application.ScreenUpdating = True
        Application.DisplayAlerts = wdAlertsAll
        Set fso = Nothing
    End Sub
    
    Private Sub ProcessFolderRecursive(ByVal folder As Object, ByVal srcRoot As String, ByVal destRoot As String, ByVal fso As Object)
        Dim fileItem As Object
        Dim subFld As Object
        Dim relPath As String
        Dim targetFolder As String
        Dim doc As Document
        Dim srcPath As String
        Dim baseName As String
        Dim targetPath As String
        
        ' Processa i file .docx nella cartella corrente
        For Each fileItem In folder.Files
            If LCase(fso.GetExtensionName(fileItem.Name)) = "docx" Then
                ' skip temporary Word files (es. ~$_...)
                If Left(fileItem.Name, 2) <> "~$" Then
                    srcPath = fileItem.Path
                    ' Calcola percorso relativo della cartella contenente il file rispetto alla radice sorgente
                    relPath = Replace(folder.Path, srcRoot, "")
                    If Left(relPath, 1) = "\" Then relPath = Mid(relPath, 2)
                    
                    ' Crea cartella corrispondente nella destinazione (se serve)
                    If relPath = "" Then
                        targetFolder = destRoot
                    Else
                    '    targetFolder = fso.BuildPath(destRoot, relPath)
                    End If
                    
                    ' Nome base e percorso di destinazione
                    baseName = fso.GetBaseName(fileItem.Name)
                    targetPath = fso.BuildPath(destRoot, baseName & ".txt")
                    
                    ' Apri il documento e salva come testo Unicode (per preservare accenti/utf8)
                    On Error Resume Next
                    Set doc = Documents.Open(FileName:=srcPath, ReadOnly:=True, AddToRecentFiles:=False)
                    If Err.Number <> 0 Then
                        Debug.Print "Errore aprendo: " & srcPath & " -> " & Err.Description
                        Err.Clear
                        On Error GoTo 0
                    Else
                        On Error GoTo 0
                        ' wdFormatUnicodeText preserva Unicode; se vuoi ANSI usa wdFormatText (ma perde caratteri non ANSI)
                        doc.SaveAs2 FileName:=targetPath, FileFormat:=wdFormatUnicodeText
                        doc.Close SaveChanges:=False
                        Set doc = Nothing
                    End If
                End If
            End If
        Next fileItem
        
        ' Ricorsione nelle sottocartelle
        For Each subFld In folder.SubFolders
            ProcessFolderRecursive subFld, srcRoot, destRoot, fso
        Next subFld
    End Sub
    

  • Come creare uno script su YunoHost che ci permetta di ricevere una mail in caso fossero disponibili aggiornamenti

    Collegarsi tramite SSH alla propria VPS su cui è installato YunoHost.

    Creare lo script con il seguente comando:

    nano yunohost-update-check.sh

    incollare il seguente script:

    #!/bin/bash
    
    # your email
    EMAIL_DEST="TUACASELLA@DIPOSTA.COM"
    
    # temp file
    TMP_FILE=$(mktemp)
    
    # check
    echo "=== Aggiornamenti di sistema ===" > "$TMP_FILE"
    yunohost tools update >> "$TMP_FILE" 2>&1
    
    # Se il file contiene qualcosa di diverso da 'Nothing to upgrade'
    if ! grep -q "Nothing to do. Everything is already up-to-date." "$TMP_FILE"; then
        mail -s "Aggiornamenti disponibili su $(hostname)" "$EMAIL_DEST" < "$TMP_FILE"
    fi
    
    # Rimuove il file temporaneo
    rm "$TMP_FILE"

    Sostituire TUACASELLA@DIPOSTA.COM con la casella di posta dove si vuole ricevere l’email.

    Usare i comandi da tastiera CTRL+x e digitare “y” per salvare e cliccare invio sul nome file.

    A questo punto dobbiamo dare i permessi di eseguibilità al file digitando:

    chmod +x yunohost-update-check.sh

    Ora dobbiamo dire al server di eseguire una volta al giorno il nostro script.

    Per prima cosa diventiamo l’utente root digitando il comando:

    su

    seguito dalla password di root.

    a questo punto creare un task temporizzato eseguendo questo comando:

    crontab -e

    ci chiederà che editor usare, scegliere nano.

    Si aprirà l’editor, spostarsi all’ultima riga vuota ed incollare questo comando:

    0 6 * * * /home/MioUtenteYunoHost/yunohost-update-check.sh

    0 6 significa che verrà eseguito alle 6 del mattino

    * * * significa di ogni giorno del mese, di ogni mese, di ogni giorno della settimana

    /home/MioUtenteYunoHost/yunohost-update-check.sh deve essere modificato in quanto MioUtenteYunoHost deve essere sostituito con l’utente amministrativo di YunoHost che è lo stesso utente che usate per la connessione a SSH.

    Usare i comandi da tastiera CTRL+x e digitare “y” per salvare e cliccare invio sul nome file.

    Se tutto andrà liscio riceverete nella casella di posta impostata le notifiche dei prossimi aggiornamenti disponibili per YunoHost.

    Eventualmente, per sapere se lo script ha girato, dal server YunoHost digitare questo comando:

    journalctl -u cron | grep "/home/MioUtenteYunoHost/yunohost-update-check.sh"

    Il comando deve essere modificato in quanto MioUtenteYunoHost deve essere sostituito con l’utente amministrativo di YunoHost che è lo stesso utente che usate per la connessione a SSH.

    Il comando modificato, una volta lanciato, dovrebbe fornire esattamente la data e l’ora in cui ha girato.

  • Come rinunciare a calendario e contatti Google ed avere tutti i dati sul proprio server Linux usando come client delle APP open source

    Questo articolo non vuol essere la “unica guida possibile” allo scopo, così è come ho fatto io, sicuramente vi sono altri modi, ma questa è una soluzione testata e funzionante. Se vi fossero omissioni o errori, non esitate a contattarmi.

    1. Installare sul proprio server Linux il programma server chiamato NextCloud, con YunoHost è semplicissimo. Nelle impostazioni di installazione, lasciare aperta l’applicazione ai “visitatori” (ovvero agli utenti non autenticati che potranno autenticarsi conoscendo la password) dall’apposito menu a tendina.
    2. Da nextCloud -> Applicazioni -> ufficio e testo -> cercare “Calendar”, installarla e abilitarla se già non è stato fatto. Ora in alto nella barra aparirà un’icona Calendario.
    3. Da nextCloud -> Applicazioni -> ufficio e testo -> cercare “Contacts”, installarla e abilitarla se già non è stato fatto. Ora in alto nella barra apparirà un’icona Contatti.
    4. Da smartphone android installare l’APP DAVX5 ( https://www.davx5.com/ ) che si trova disponibile gratuitamente sullo store F-Droid ( https://f-droid.org/it/ ), mentre sul PlayStore costa € 5 circa. Piccola nota: le applicazioni android scaricate da F-Droid sono open source e ricevono aggiornamenti.
    5. Installare l’APP DAVX5 dando i permessi richiesti. Cliccare sul tasto + presente nella pagina principale dell’APP ed inserire l’url di NextCloud e negli appositi campi anche l’user e la password con cui accedete (di default l’unico utente presente è l’amministratore di YunoHost).
    6. Per avere un calendario open source e visualizzare gli eventi di NextCloud senza usare Google calendar: installare dallo store F-Droid l’APP gratuita “Etar” ( https://f-droid.org/it/packages/ws.xsoh.etar/ ) che di default mostrerà tutti i calendari che ha trovato tra cui quello configurato da noi. Da impostazioni sarà possibile disattivare il calendario Google e verificare che l’account NextCloud sia attivo. Etar dispone anche di un bel widget.
    7. Per visualizzare i contatti si può utilizzare l’APP contatti di google. Qualora si desideri un’alternativa open source, Fossify mette a disposizione l’APP telefono, messaggi, contatti e molte altre ( https://search.f-droid.org/?q=fossify&lang=it ) che potremo sincronizzare col nostro server grazie a DAVX5 senza che nessuno metta il naso nei nostri contatti, telefonate ed SMS.
    8. Come configurare i contatti NextCloud su thunderbird da PC: dall’APP DAVX5 su android cliccare sull’account creato nella pagina principale, spostarsi in cardDAV e cliccare sulla rubrica NextCloud. Copiare “indirizzo URL”, spostarsi in thunderbird sul proprio PC, cliccare su rubrica e poi su nuova rubrica che è l’icona in alto a sinistra e scegliere “Aggiungi rubrica cardDAV”, scrivere il nome utente ed incollare l’url copiato da android, successivamente verrà chiesta la password.
    9. Come configurare il calendario NextCloud su thunderbird da PC:dall’APP DAVX5 su android cliccare sull’account creato nella pagina principale, spostarsi in calDAV e cliccare sul calendario. Copiare “indirizzo URL”, spostarsi in thunderbird sul proprio PC, nella barra di destra cliccare l’icona “Calendario” e poi in basso o sui tre puntini, cliccare su “Nuovo Calendario”. Selezionare l’opzione “sulla rete”, immettere lo stesso username della rubrica ed incollare l’url copiato da android su DAVX5, successivamente immettere la password e confermare.

    Una nota: da NextCloud web che è visualizzabile da qualunque browser si possono leggere e modificare sia i contatti che gli eventi del calendario.

  • Comandi linux di uso comune per l’utente proveniente da Windows

    Piccola premessa: in Windows la root è c:\ in Linux è / per cui notate che le cartelle in Windows si separano con \ mentre in Linux con /

    Per fare copia/incolla basta selezionare un testo tenendo premuto il tasto sinistro del mouse e per incollarlo basta cliccare una volta il tasto destro del mouse.

    rm nomefile = come il comando del, cancella un file

    chmod numeroPermessi nomefile = cambia i persmessi ad un file, ad esempio chmod 777 nomefile

    php -v = versione php

    df -h = fornisce lo spazio fisico libero

    free -h = memoria libera

    cd = stessa funzione e sintassi della versione Windows di cd, cambia cartella corrente

    su = promuove a root l’utente corrente chiedendo la password di root appunto

    mkdir nomeCartella = crea una cartella come il comando mkdir Windows

    cp nomeFile /percorso/ = copia un file, come il comando dos copy

    mv nomeFile /percorso/ = sposta un file, come il comando move

    cat nomeFile = mostra un file, come il comando type

    nano nomeFile = edita un file, come il comando edit

    sudo comando parametri = esegue con privilegi di root un comando seguito da parametri chiedendo password, esempio: sudo nano /etc/resolv.conf

    chown NuovoProprietario NomeFile= cambia proprietario e/o gruppo ad un file o una cartella, esempio: chown utente:gruppo documento.md, cambia utente e gruppo al file documento.md

    man comando = mostra il manuale per un dato comando

  • Guida per configurare in modo semplice un server linux per utenti windows

    Questa quida è stata pensata per guidare passo passo un utente Windows senza particolari esperienze sistemistiche, ma ovviamente può essere adattata e seguita anche da un utente Linux. Perchè comprare un Server Linux? Perchè costa poco e tutti i programmi che ci permetteranno di sostituire GMail, Drive, il sito internet, ecc.. Sono gratuiti ed open source.

    In realtà il vostro sistema operativo è relativo perchè installeremo poi YunoHost che si pilota fondamentalmente da browser ed è in qualche modo simile a Plesk.

    Comprare una VPS

    Il primo passo è comprare una VPS linux, io ho scelto il servizio di https://contabo.com/en/ che, al momento in cui scrivo questa guida, costa circa € 5 al mese.

    Durante la configurazione per l’acquisto scegliere le opzioni che più rispondono alle nostre esigenze, uniche note importanti sono che durante la configurazione viene chiesto il sistema operativo ed ovviamente dobbiamo scegliere Linux con distribuzione Debian e ci viene chiesta la password di root (l’utente amministrativo di linux). Salvare la password su file ed in un posto sicuro.

    Dopo qualche ora ci arriverà la mail che ci comunica che il server è stato attivato, per cui possiamo effettuare il primo collegamento.

    Primo collegamento a YunoHost

    Per gli utenti Windows è necessario un client SSH, in questo caso Putty che potete scaricare su https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html .

    La configurazione di putty è piuttosto semplice, impostare un Host (che corrisponde all’ IP della vostra VPS), selezionare SSH e cliccare su connetti.

    La schermata che sempra un prompt dei comandi ci chiederà l’utente, inserire root a questo punto ci chiederà la password che non vedremo mentre digitiamo, fare copia dal nostro sistema operativo Windows e tornare sulla finestra di putty, dove per incollare basterà premere una volta il tasto destro del mouse e confermare con invio (su Linux per copiare basta selezionare un testo col mouse e per incollare basta premere il tasto destro una volta).

    A questo punto dobbiamo installare YunoHost, la cui documentazione è qui disponibile https://doc.yunohost.org/admin/get_started/install_on/remote_server , ci basterà scrivere:

    curl https://install.yunohost.org | bash

    e premere invio.

    Ci verranno chieste poche informazioni: dobbiamo inserire un dominio e ci basterà inserire yolo.test che è un dominio fittizio che poi varieremo.

    Ci verrà chiesto altresì il nome utente da usare per gestire YunoHost che non potrà essere bè root nè admin o similari per motivi di sicurezza, inserite un nome utente di vostro gradimento che dovete appuntarvi, successivamente vi verrà chiesta una password che dovrete appuntarvi. Verrà anche chiesto se può modificare il file dell’SSH, rispondere Y.

    Al termine dell’installazione di YunoHost possiamo chiudere putty che per il momento non ci serve più ed aprire il browser.

    Collegamento all’interfaccia web di YunoHost

    Come url, nel browser, digitare l’IP del server, ci verrà chiesto l’utente e noi dovremo digitare l’utente inserito durante l’installazione di YunoHost, stesso dicasi per la password.

    A questo punto siamo in YunoHost ed abbiamo la possibilità, ad esempio, di creare Caselle di posta, siti internet ed installare la nostra personale versione open source di un sostituto di Google Drive, oltre a tante altre cose.

    La prima cosa da fare è andare in Domini e configurare un dominio, il primo dominio, consiglio di averlo gratuito.

    Cliccare su Aggiungi Dominio e scegliere l’opzione che ci fa aggiungere un dominio gratuito di terzo livello (Non possiedo un dominio, voglio registrare/usare un dominio DynDNS gratuito, offerto dal progetto YunoHost) , ad esempio pippo.nohost.me o scegliere uno dei domini disponibili di gradimento.

    A questo dominio potremo aggiungere tutti i domini di quarto livello che vogliamo in modo completamente gratuito!

    N.B. D’ora in poi volessimo accedere a Terminal, diciamo “il prompt di comandi tramite putty”, non lo possiamo fare tramite l’utente root, ma dovremo usare l’account creato durante l’installazione di YunoHost e relativa password. Stesso dicasi per l’FTP o meglio SFTP tramite filezilla ad esempio.

    Creare nuove caselle di posta ovvero creare nuovi utenti YunoHost

    Basta andare nella sezione utenti, dove vediamo già il nostro utente amministratore, cliccare su Nuvo utente e scegliere il dominio, automaticamente YunoHost creerà una casella col nome utente ed il dominio predefinito che abbiamo creato, ad esempio nomeUtente@pippo.nohost.me. Inserire una password strong, dopo la conferma del salvataggio sarà possibile variare dominio se necessario cliccando su utente e poi su modifica utente NomeUtente.

    La posta così creata è facilmente accessibile ed a zero configurazione dall’APP android k9/thunderbird e da thunderbird per sistemi desktop. Naturalmente potete usare le applicazioni che più vi aggradano.

    Installare applicazioni su YunoHost

    Per installare applicazioni come ad esempio un sostituto di Google drive o wordpress, basterà andare su Applicazioni e poi cliccare su Installa un’app. Vi sono svariate applicazioni disponibili che si possono installare ricercandole. Vi segnalo NextCloud che è un sostituto di Google drive e WordPress con cui è possibile creare siti web. Sarà sempre possibile scegliere il dominio dove installarli e scegliere l’utente YunoHost che dovrà fungere da amministratore dell’APP.

    Backup di YunoHost

    Fare i backup è estremamente semplice, basterà andare nella sezione Backup, cliccare su Archivi locali e poi cliccare su Nuovo Backup.

    Aggiornare YunoHost

    Aggiornare YunoHost ed i suoi componenti è molto semplice, basterà andare nella sezione Aggiornamento di sistema ed installare gli aggiornamenti se presenti. Si consiglia di fare sempre un backup prima, come spiegato al paragrafo precedente.