
Originariamente inviata da
patel
potresti provare a popolare la combo col metodo additem inserito in un ciclo che scandisce gli elementi dell'array
Ho superato il blocco relativo al riempimento della combobox1: bastava richiamarla come ComboBox1 e usare .additem
Ora però ho un'ulteriore difficoltà: alla userform ho aggiunto due pulsanti , commandbutton1 "ok" e commandbutton2 "Annulla".
Quando clicco commandbutton1, vorrei:
- recuperare il valore dell'item selezionato nella combobox (funzionante);
- sfruttare quell'indice per far partire la copia del range "Area_stampa" del foglio desiderato.
La macro che seleziona il range e lo copia in word è da adattare, ho trovato un esempio in internet e fa questo però da excel verso un nuovo documento word, ma con qualche aggiustatina non dovrei aver grosse difficoltà.
Il problema sostanziale, che credo sia più di logica del VBA che altro, nella macro sotto riportata, una volta fatto Userform1.show, come faccio a passare alla sub commandbutto1.click l'oggetto xlApp da cui effettuare la copia dell'area di interesse?
codice:
Sub insertExcel()
Dim wrdApp As Word.Application
Dim wrdDoc As Word.Document
Set wrdApp = GetObject(, "Word.Application")
wrdApp.Visible = True
Set wrdDoc = wrdApp.ActiveDocument
Dim s As Variant
Dim Res As Integer
Dim dlgOpen As FileDialog
Set dlgOpen = Application.FileDialog( _
FileDialogType:=msoFileDialogOpen)
dlgOpen.AllowMultiSelect = False
dlgOpen.Filters.Clear
dlgOpen.Filters.Add "Custom Excel Files", "*.xlsm, *.xlsx, *.csv, *.xls"
dlgOpen.FilterIndex = 1
Res = dlgOpen.Show
Dim xlApp As Object
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = False
If Not Res = 0 Then
For Each s In dlgOpen.SelectedItems 'There is only one
With wrdApp
.Selection.TypeText Text:=s 'passaggio fatto solo per verificare che acquisissi correttamente l'indirizzo del file, poi verrà tolto
.Selection.TypeParagraph
End With
xlApp.Workbooks.Open (s)
Next
End If
Dim i As Integer
Dim sheets As Integer
sheets = xlApp.ActiveWorkbook.sheets.Count
Dim fg() As String
ReDim fg(0 To sheets - 1) As String
For i = 0 To xlApp.ActiveWorkbook.sheets.Count - 1
fg(i) = xlApp.ActiveWorkbook.sheets(i + 1).Name
Next i
For i = 0 To UBound(fg)
UserForm1.ComboBox1.AddItem fg(i)
Next
Call UserForm1.Show
xlApp.ActiveWorkbook.Close savechanges:=False
MsgBox "Finito!"
Set xlApp = Nothing
Set dlgOpen = Nothing
Set wrdDoc = Nothing
Set wrdApp = Nothing
End Sub