Hei, olisi tällänen ongelma, kun exporttaan raportin Accessista Exceliin, tiedostoon nimeltä "a.xls", josta kopion tietoa pariin otteeseen toiseen workbookiin (b.xls), joka siis toimii valmiina pohjana. Joka toisella kerralla homma onnistuu hyvin, ja joka toisella ei, ohjelma herjaa "Run-time error '9': Subscript out of range"
Näyttäisi, että aktivoitaessa workbookkeja uudestaan, avaa excel workbookit uudestaan, eli löytyisikö jotain parempaa keinoa kopioida ja liittää tuo yksi solu?
Eli käytän VBA:ta Accessin kautta, ja error tulee rivillä
"Workbooks("b.xls").Sheets("Sheet1").Range("B8").PasteSpecial (xlvalues)"
koko koodi:
Public Sub copypaste() Dim xlApp Dim xlBook Dim xlSheet Const xlvalues As Long = -4163 Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open("C:\a.xls") Set xlSheet = xlBook.Worksheets("Sheet1") xlApp.Visible = True xlSheet.Range("A3:D8").Copy Set xlBook = xlApp.Workbooks.Open("C:\b.xls") Set xlSheet = xlBook.Worksheets("Sheet1") xlSheet.Activate xlSheet.Range("C26:F34").Select xlSheet.Range("C26:F34").Activate xlSheet.Range("C26:F34").PasteSpecial (xlvalues) Workbooks("a.xls").Sheets("Sheet1").Range("A1").Copy Workbooks("b.xls").Sheets("Sheet1").Range("B8").PasteSpecial (xlvalues) Set xlSheet = Nothing xlBook.SaveAs "C:\" & Format(Now, "yyyy-mm-dd hh-mm-ss") & ".xls" xlBook.Close SaveChanges:=False Set xlBook = Nothing xlApp.Quit End Sub
Moi Physix!
toivottavasti oheisesta esimerkistä on apua...
'Referenssi Microsoft Excel xx.0 Object Library '(xx=versionumero) Sub copypaste() Dim xlapp As Excel.Application 'Const xlvalues As Long = -4163 Set xlapp = New Excel.Application xlapp.Workbooks.Open ("c:\a.xls") xlapp.Workbooks.Open ("c:\b.xls") 'mikäli haluat kopioida työkirjan "a.xls" 'taulusta "Taul1" alueen A3:D8 työkirjan '"b.xls" taulun "Taul1" yhtenäisen alueen 'soluihin alkaen solusta C26 niin... xlapp.Workbooks("a.xls").Sheets("Taul1" _ ).Range("A3:D8").Copy xlapp.Workbooks("b.xls" _ ).Sheets("Taul1").Range("C26") 'jne. xlapp.Workbooks("a.xls").Sheets("Taul1" _ ).Range("A1").Copy xlapp.Workbooks("b.xls" _ ).Sheets("Taul1").Range("B8") 'jos taas haluat sijoittaa koodissasi esitellyn 'vakion "xlvalues" arvon työkirjan "b.xls" 'jonkin yksittäiseen solun arvoksi niin esim... 'xlapp.Workbooks("b.xls").Sheets("Taul1" _ ').Range("B8").Value = xlvalues 'jos taas haluat sijottaa edellämainitun 'vakion arvon työkirjan "b.xls" taulun "Taul1" 'jonkin yhtenäisen solualueen jokaisen solun 'arvoksi niin esim... 'Dim solu 'For Each solu In xlapp.Workbooks("b.xls" _ ').Sheets("Taul1").Range("C26:F34") 'solu.Value = xlvalues 'Next xlapp.Workbooks("b.xls").SaveAs "C:\" & _ Format(Now, "yyyy-mm-dd hh-mm-ss") & ".xls" xlapp.DisplayAlerts = False xlapp.Quit Set xlapp = Nothing End Sub
(oikea nimi)
Aihe on jo aika vanha, joten et voi enää vastata siihen.