Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA: Excel, copy pasteeminen kahden workbookin välillä

Physix [05.08.2011 15:40:48]

#

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

neau33 [07.08.2011 16:14:53]

#

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)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta