Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Borderlands 4, tra divertimento e problemi tecnici
Recensione Borderlands 4, tra divertimento e problemi tecnici
Gearbox Software rilancia la saga con Borderlands 4, ora disponibile su PS5, Xbox Series X|S e PC. Tra le novità spiccano nuove abilità di movimento, un pianeta inedito da esplorare e una campagna che lascia al giocatore piena libertà di approccio
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale
NXTPAPER 60 Ultra è il primo smartphone con tecnologia NXTPAPER 4.0 per il display, un ampio IPS da 7,2 pollici. Con finitura anti-riflesso, processore MediaTek Dimensity 7400, fotocamera periscopica e modalità Max Ink per il detox digitale, NXTPAPER 60 Ultra punta a essere il riferimento tra gli smartphone pensati per il benessere degli occhi.
Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming
Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming
Questo mouse ultraleggero, con soli 36 grammi di peso, è stato concepito per offrire un'esperienza di gioco di alto livello ai professionisti degli FPS, grazie al polling rate a 8.000 Hz e a un sensore ottico da 33.000 DPI. La recensione esplora ogni dettaglio di questo dispositivo di gioco, dalla sua agilità estrema alle specifiche tecniche che lo pongono un passo avanti
Tutti gli articoli Tutte le news

Vai al Forum
Discussione Chiusa
 
Strumenti
Old 22-06-2007, 13:38   #1
~ZeRO sTrEsS~
Senior Member
 
L'Avatar di ~ZeRO sTrEsS~
 
Iscritto dal: Nov 2002
Città: Mission world: Napoles, Milan, Madrid, Paris, London, Now AMSTERDAM!!!!! yahoooo!!! Next stop: California, Tnx TNS-NIPO!!
Messaggi: 2150
[Visual basic] codice per excel chi mi aiuta?

ciao ragazzi, mi servirebbe un piacere enorme, Devo creare un bottone in un file excel che quando premuto crea dei file di Testo in determinate con il contenuto di 4 fogli di un file excell, una specie di repot in file txt, sinceramente non mi importa la formattazione mi serve solo portare quello che c'é in questi 4 fogli in un file txt. ho trovato questo codice sul sito della microsoft per fare ció che voglio, ma funziona solo per un foglio...

http://support.microsoft.com/kb/635038/it

Quote:


Sub file_testo()
Dim start As Range
Dim fine As Range

n = InputBox("INSERIRE IL NOME DEL FILE DI TESTO RISULTANTE")
n = n & ".txt"
Set start = Application.InputBox(prompt:="ANGOLO ALTO SINISTRO", Type:=8)
Set fine = Application.InputBox(prompt:="ANGOLO BASSO DESTRO", Type:=8)
colonna_inizio = Range(start.Address).Column
riga_inizio = Range(start.Address).Row
colonna_fine = Range(fine.Address).Column
riga_fine = Range(fine.Address).Row
Open n For Output As #1
For y = riga_inizio To riga_fine
For i = colonna_inizio To colonna_fine
valore = Cells(y, i).Value
If i = colonna_fine Then
valore = valore & Chr(13)
Else
valore = valore & ";"
End If
Print #1, valore;
Next i
Next y
Close #1
End Sub

Il separatore dei campi, puo` essere personalizzato con la seguente riga di
codice:

valore = valore & ";"

al posto del ";", si puo` inserire qualunque altro separatore.

Qualcuno mi saprebbe aiutare? Altra cosa che mi chiedevo é se era possibile implementare anche del codice che dovrebbe creare un file a parte con una piccola parte del primo foglio solo nel momento in cui la casella X é piena...

non so se mi sono spiegato caso mai non capite cerco di spiegarmi meglio!

Grazie a tutti in anticipo!
__________________
La libertá sopratutto di parola é un lusso che non ci si puo' permettere in italia, per la strada come su internet.
~ZeRO sTrEsS~ è offline  
Old 23-06-2007, 12:35   #2
uReverendo
Member
 
L'Avatar di uReverendo
 
Iscritto dal: May 2006
Messaggi: 69
Devi eseguire il codice da te postato per ogni foglio che vuoi salvare.
Ad esempio se vuoi salvare tutti i fogli di una cartella di lavoro in un unico file puoi fare così:
Codice:
Sub file_testo()
    Dim start As Range
    Dim fine As Range
    Dim Foglio  As Worksheet
    Dim strNomeDefault As String
    Dim strIntestazione As String
    Dim f As Integer
    
    'Imposta il nome di default del file
    strNomeDefault = "Prova"
    
    n = InputBox("INSERIRE IL NOME DEL FILE DI TESTO RISULTANTE", , strNomeDefault)
    n = n & ".txt"

    f = FreeFile
    Open n For Output As #f

    ' Per ogni foglio nella cartella di lavoro corrente...
    For Each Foglio In ActiveWorkbook.Worksheets
    
        ' Attiva il foglio
        Foglio.Activate
        
        Set start = Application.InputBox(prompt:="ANGOLO ALTO SINISTRO", Type:=8, Title:=Foglio.Name)
        Set fine = Application.InputBox(prompt:="ANGOLO BASSO DESTRO", Type:=8, Title:=Foglio.Name)
        colonna_inizio = Range(start.Address).Column
        riga_inizio = Range(start.Address).Row
        colonna_fine = Range(fine.Address).Column
        riga_fine = Range(fine.Address).Row
        
        ' Prepara l'intestazione
        ' (il nome del foglio corrente fra parentesi quadre + INVIO)
        strIntestazione = "[" & Foglio.Name & "]" & vbCrLf
        ' Scrive l'intestazione nel file
        Print #f, strIntestazione;
        
        For y = riga_inizio To riga_fine
            For i = colonna_inizio To colonna_fine
                valore = Foglio.Cells(y, i).Value
                If i = colonna_fine Then
                    valore = valore & vbCrLf
                Else
                    valore = valore & ";"
                End If
                Print #f, valore;
            Next i
        Next y
        
    Next
    
    Close #f
End Sub
Per quanto riguarda la seconda domanda puoi crearti una nuova funzione:
Codice:
Sub file_testo_parte()
    Dim Foglio As Worksheet
    Dim iRiga As Integer
    Dim iCol As Integer
    Dim strIntestazione As String
    Dim f As Integer
    
    ' Foglio contenente la cella da controllare
    Set Foglio = ActiveWorkbook.Worksheets("foglio1")
    
    ' Coordinate della cella da controllare
    iRiga = 5
    iCol = 3
    
    ' Se la cella non è vuota...
    If (Foglio.Cells(iRiga, iCol).Value <> "") Then
        ' ...salva parte del foglio
        
        'Imposta il nome del file
        n = "File_parte" & ".txt"
    
        ' Coordinate della cella inizio
        colonna_inizio = 1
        riga_inizio = 1
        ' Coordinate della cella fine
        colonna_fine = 3
        riga_fine = 3
        
        f = FreeFile
        Open n For Output As #f

        ' Prepara l'intestazione
        ' (il nome del foglio corrente fra parentesi quadre + INVIO)
        strIntestazione = "[" & Foglio.Name & " Parziale ]" & vbCrLf
        ' Scrive l'intestazione nel file
        Print #f, strIntestazione;
        
        For y = riga_inizio To riga_fine
            For i = colonna_inizio To colonna_fine
                valore = Foglio.Cells(y, i).Value
                If i = colonna_fine Then
                    valore = valore & vbCrLf
                Else
                    valore = valore & ";"
                End If
                Print #f, valore;
            Next i
        Next y
            
        Close #f
    End If
      
End Sub
Ovviamente il tutto può essere ottimizzato in base alle tue esigenze.
Se hai problemi chiedi pure.
uReverendo è offline  
Old 24-06-2007, 15:52   #3
uReverendo
Member
 
L'Avatar di uReverendo
 
Iscritto dal: May 2006
Messaggi: 69
Ho ricevuto il tuo pvt e ho fatto un po' di modifiche.
Codice:
Sub SalvaComeTXT()
    Dim Interv As Range
    Dim strIntestazione As String
    Dim strFile As String
    Dim strFileParte As String
    
    ' Visualizza la finestra di dialogo "Salva" e recupera il nome del file
    strFile = DlgSalva
    
    If (strFile <> "") Then
        ' -------------------------------------------------------
        ' Stampa l'intervallo A1:D6 del Foglio1
        ' -------------------------------------------------------
        Set Interv = Worksheets("Foglio1").Range("A1:D6")
        strIntestazione = "[Foglio1]" & vbCrLf
        SalvaRange strFile, False, strIntestazione, Interv
        ' -------------------------------------------------------
        ' Stampa l'intervallo A1:F20 del Foglio2
        ' -------------------------------------------------------
        Set Interv = Worksheets("Foglio2").Range("A1:F20")
        strIntestazione = "[Foglio2]" & vbCrLf
        SalvaRange strFile, True, strIntestazione, Interv
        ' -------------------------------------------------------
        '
        '
        ' ... Continua per tutti i fogli che vuoi salvare ...
        '
        '
        ' Se la cella "A5" del Foglio1 ha del testo...
        If (Worksheets("Foglio1").Range("A5").Value <> "") Then
            ' ...salva parte del foglio nel file strFileParte
            
            ' Toglie l'estensione al nome del file
            strFileParte = Left(strFile, Len(strFile) - 4)
            ' Aggiunge un suffisso e rimette l'estensione
            strFileParte = strFileParte & "_parte.txt"
            
            ' Es. Se strFile = "c:\salvataggio.txt" allora
            ' strFileParte sarà uguale a "c:\salvataggio_parte.txt"
            
            Set Interv = Worksheets("Foglio1").Range("A1:B2")
            strIntestazione = "[Foglio1_parte]" & vbCrLf
            SalvaRange strFileParte, False, strIntestazione, Interv
            ' -------------------------------------------------------
        End If
    End If
    
End Sub

Private Function DlgSalva()
    Dim dlg As New CommonDialog
    Dim strFile As String
    
    ' Imposta le opzioni della finestra di dialogo
    dlg.DialogTitle = "Salva fogli come file di testo"
    dlg.Filter = "File di testo (*.txt)|*.txt"
    
    ' Visualizza la finestra di dialogo
    dlg.ShowSave
    
    ' Recupera il file selezionato
    strFile = dlg.Filename
    
    ' Se non si è premuto "annulla"...
    If (strFile <> "") Then
        ' ...restituisce il nome e il percorso del file
        DlgSalva = strFile
        Exit Function
    End If
    
    ' Se si è premuto "annulla" restituisce una stringa vuota
    DlgSalva = ""
End Function

Private Sub SalvaRange(ByVal strFile As String, ByVal blnAggiungi As Boolean, ByVal strIntestazione As String, ByRef Interv As Range)
    ' -------------------------------------------------------------------
    '  DESCRIZIONE: Salva su file un intervallo di celle.
    ' -------------------------------------------------------------------
    '  INPUT:
    ' -------------------------------------------------------------------
    '  strFile ->   Nome del file in cui salvare i dati.
    '               Se il file non esiste verrà creato.
    '               Se esiste verrà sovrascritto o i dati verranno
    '               aggiunti a seconda del valore di blnAggiungi.
    '
    '  blnAggiungi->Se TRUE: il dati verranno aggiunti al file
    '               Se FALSE: il file verrà sovrascritto
    '
    '  strIntestazione -> Intestazione da stampare nel file.
    '                     Se non si vuole intestazione passare ""
    '
    '  Interv    -> Intervallo da stampare
    ' -------------------------------------------------------------------
    
    Dim f As Integer
    Dim r As Integer
    Dim c As Integer
    
    On Error GoTo Errore
    
    ' Recupera un numero di file libero
    f = FreeFile
    
    If (blnAggiungi) Then
        ' Apre il file aggiungendo i dati alla fine
        Open strFile For Append As #f
    Else
        ' Se il file esiste...
        If (Dir(strFile) <> "") Then
            ' ...chiede conferma prima di sovrascriverlo
            Risp = MsgBox("Il file " & strFile & " già esiste lo vuoi sovrascrivere?", vbYesNo + vbQuestion, "Attenzione!")
            If (Risp = vbNo) Then
                ' Non si vuole sovrascrivere il file: ESCI!!!
                Exit Sub
            End If
        End If

        ' Apre il file sovrascriverlo
        Open strFile For Output As #f
    End If
    
    If (strIntestazione <> "") Then
        ' Scrive l'intestazione nel file
        Print #f, strIntestazione;
    End If
    
    ' Scrive il valore di ogni cella nel file
    For r = 1 To Interv.Rows.Count
        For c = 1 To Interv.Columns.Count
            valore = Interv.Cells(r, c).Value
            If c = Interv.Columns.Count Then
                valore = valore & vbCrLf
            Else
                valore = valore & ";"
            End If
            Print #f, valore;
        Next
    Next
    
    ' Chiude il file
    Close #f
    
    Exit Sub
    
' Gestisce eventuali errori
Errore:
    Dim strMsg As String
    strMsg = "Si è verificato un errore durante il salvataggio del file." & vbCrLf & "Errore Numero: " & Err.Number & vbCrLf & "Descrizione: " & Err.Description
    MsgBox strMsg, vbCritical
End Sub
Per farlo funzionare correttamente devi aggiungere un riferimento a "Microsoft Common Dialog Control 6.0" (da VBA: menu Strumenti\Riferimenti e seleziona la voce che ti ho detto. Se non la trovi, clicca su sfoglia e seleziona il file COMDLG32.OCX nella cartella system32)
uReverendo è offline  
 Discussione Chiusa


Recensione Borderlands 4, tra divertimento e problemi tecnici Recensione Borderlands 4, tra divertimento e pro...
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale TCL NXTPAPER 60 Ultra: lo smartphone che trasfor...
Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming Un fulmine sulla scrivania, Corsair Sabre v2 Pro...
Nokia Innovation Day 2025: l’Europa ha bisogno di campioni nelle telecomunicazioni Nokia Innovation Day 2025: l’Europa ha bisogno d...
Sottile, leggero e dall'autonomia WOW: OPPO Reno14 F conquista con stile e sostanza Sottile, leggero e dall'autonomia WOW: OPPO Reno...
Disagi al traffico aereo europeo: le ind...
Intel in crisi chiama Apple: un riavvici...
Snapdragon X2 Elite Extreme, il cuore de...
Snapdragon 8 Elite Gen 5 è il nuovo rife...
Bombe Apple su Amazon: iPhone di scorsa ...
Micron: memoria HBM4 a 11 Gbps e patto d...
NVIDIA rende Audio2Face open source: ecc...
Logitech Signature Slim Solar K980+: 10 ...
Disney Plus aumenta i prezzi: si parte d...
Intel XeSS con Multi Frame Generation: u...
iPhone 16 a soli 700€ su Amazon: stile e...
Signature Slim Solar+ K980, la nuova tas...
Logitech MX Master 3S, il mouse perfetto...
Borderlands 4 per Switch 2 rinviato a te...
Reddit studia con Google una partnership...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 06:02.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v