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 SubMoi 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.