delp
30-01-2011, 16:49
Buonasera a tutti. 
premetto che sono un principiante del Visul basic. Sto cercando di creare un'applicazione che mi consenta di inserire più files di testo .txt all'interno di una cartella Excel (un file per ogni foglio) dove ho già impostato una tabella. I dati contenuti nei files verranno poi inseriti nella tabella attraverso una macro che cercherò di scrivere in un secondo momento. Ora ho un problema da risolvere relativo (penso) alla finestra di dialogo apri. Leggendo nei vari forum e nei vari manuali sono riuscito a realizzare una form con un "button1" e una OpenFileDialog. Ora, pur aver avendo abilitato il Multiselect nella finestra di dialogo, se seleziono più files di testo e clicco su OK, viene preso in considerazione soltanto il primo file (all'interno della cartella ce ne possono essere anche 20). Inoltre: per aprire tutti i files contenuti nella cartella di mio interesse(ad esempio 5 files), ho impostato un ciclo "For Each.....Next"; ma l'applicazione mi apre per 5 cinque volte lo stesso file (xxxxxxxx-1) all'interno di Excel. Sono un po' di giorni che sono fermo e non riesco ad andare avanti.
Alcune note: sto utilizzando Visual Basic 10 Express e i files hanno, in generale, questo nome: xxxxxxx-1, xxxxxxx-2, xxxxxxx-3 etc.
Vi prego inoltre di darmi eventuali suggerimenti su come articolare il codice (ad es. uso di StreamReader anzichè .Workbooks.Open).
Per essere il più chiaro possibile, allego il codice da me scritto:
Imports Microsoft.Office.Interop
Imports Microsoft.Office.Core
Imports System.Net
Imports System.IO
Imports System.Collections.ObjectModel
Imports Microsoft.Office.Interop.Excel
 
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim S() As String = OpenFileDialog1.FileNames
Dim File As String
Dim objXls As Microsoft.Office.Interop.Excel.Application
Dim objWbk As Microsoft.Office.Interop.Excel.Workbook
Dim objsht As Microsoft.Office.Interop.Excel.Worksheet
objXls = New Microsoft.Office.Interop.Excel.Application
objXls.Visible = True
If OpenFileDialog1.ShowDialog = System.Windows.Forms.DialogResult.OK Then
End If
For Each File In OpenFileDialog1.FileNames
File = OpenFileDialog1.FileName
With (objXls)
.DisplayAlerts = False
.Workbooks.OpenText(Filename:=OpenFileDialog1.FileName, _
Origin:=XlPlatform.xlWindows, _
StartRow:=1, _
DataType:=Excel.XlTextParsingType.xlDelimited, _
TextQualifier:=Excel.XlTextQualifier.xlTextQualifierDoubleQuote, _
ConsecutiveDelimiter:=False, _
Tab:=True, _
Semicolon:=False, _
Comma:=False, _
Space:=False, _
Other:=False)
End With
Next
End Sub
End Class
GRAZIE INFINITE!!!
premetto che sono un principiante del Visul basic. Sto cercando di creare un'applicazione che mi consenta di inserire più files di testo .txt all'interno di una cartella Excel (un file per ogni foglio) dove ho già impostato una tabella. I dati contenuti nei files verranno poi inseriti nella tabella attraverso una macro che cercherò di scrivere in un secondo momento. Ora ho un problema da risolvere relativo (penso) alla finestra di dialogo apri. Leggendo nei vari forum e nei vari manuali sono riuscito a realizzare una form con un "button1" e una OpenFileDialog. Ora, pur aver avendo abilitato il Multiselect nella finestra di dialogo, se seleziono più files di testo e clicco su OK, viene preso in considerazione soltanto il primo file (all'interno della cartella ce ne possono essere anche 20). Inoltre: per aprire tutti i files contenuti nella cartella di mio interesse(ad esempio 5 files), ho impostato un ciclo "For Each.....Next"; ma l'applicazione mi apre per 5 cinque volte lo stesso file (xxxxxxxx-1) all'interno di Excel. Sono un po' di giorni che sono fermo e non riesco ad andare avanti.
Alcune note: sto utilizzando Visual Basic 10 Express e i files hanno, in generale, questo nome: xxxxxxx-1, xxxxxxx-2, xxxxxxx-3 etc.
Vi prego inoltre di darmi eventuali suggerimenti su come articolare il codice (ad es. uso di StreamReader anzichè .Workbooks.Open).
Per essere il più chiaro possibile, allego il codice da me scritto:
Imports Microsoft.Office.Interop
Imports Microsoft.Office.Core
Imports System.Net
Imports System.IO
Imports System.Collections.ObjectModel
Imports Microsoft.Office.Interop.Excel
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim S() As String = OpenFileDialog1.FileNames
Dim File As String
Dim objXls As Microsoft.Office.Interop.Excel.Application
Dim objWbk As Microsoft.Office.Interop.Excel.Workbook
Dim objsht As Microsoft.Office.Interop.Excel.Worksheet
objXls = New Microsoft.Office.Interop.Excel.Application
objXls.Visible = True
If OpenFileDialog1.ShowDialog = System.Windows.Forms.DialogResult.OK Then
End If
For Each File In OpenFileDialog1.FileNames
File = OpenFileDialog1.FileName
With (objXls)
.DisplayAlerts = False
.Workbooks.OpenText(Filename:=OpenFileDialog1.FileName, _
Origin:=XlPlatform.xlWindows, _
StartRow:=1, _
DataType:=Excel.XlTextParsingType.xlDelimited, _
TextQualifier:=Excel.XlTextQualifier.xlTextQualifierDoubleQuote, _
ConsecutiveDelimiter:=False, _
Tab:=True, _
Semicolon:=False, _
Comma:=False, _
Space:=False, _
Other:=False)
End With
Next
End Sub
End Class
GRAZIE INFINITE!!!