04. november 2003 - 09:49Der er
18 kommentarer og 1 løsning
Import fra Excel - Virker/Virker ikke.
I Notes har jeg en knap som griber fat i det valgte excel dokument og indlæser data fra arket. Mit problem er bare at det virker som vinden blæser. Det virker konstant for mig, men en del af min brugere kan ikke indlæse fra deres regneark.
Kan det være noget med indstillinger i Excel ? vi burde alle have samme indstillinger men man ved jo aldrig.
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
Såvidt jeg ved er der ikke en fast knap i Notes til import fra Excel, så der må vel være tale om en smarticon eller en action-knap i en database. Hvis det er det der er tale om, så vil det være rart at have koden bag knappen for at se hvad den laver. Hvordan vælges Excel dokumentet?
Knappen: myFile:=@Prompt([LOCALBROWSE]; "Vælg Excel fil som skal importeres"; "3"); @If(myfile!=""; @Do(@SetEnvironment("ExcelType";"TILGANG"); @SetEnvironment("ExcelFil";myFile); @Command([ToolsRunMacro];"Import-Excel-1"));"")
Import-Excel-1 Agenten: Dim ses As New notessession Call Generate(ses.getenvironmentstring("ExcelType"), ses.getenvironmentstring("ExcelFil"))
Det interessante i Generate: Dim worksheet1 As Variant Set appWorkBook = CreateObject("Excel.Application") Set appSheet= appWorkBook.Workbooks.Open(FileString) Set worksheet1 = appWorkBook.Workbooks(AppWorkbook.workbooks.count).worksheets(1)
blankEntry="Not Null" ' ***række start*** If GenerateType="TILGANG" Then docCounter=5 ' 5 er foerste raekke
While Trim(blankEntry)<>"" Set domDoc = domDb.CreateDocument domDoc.Form="fa_TilgangKladde"
Dim item As notesitem Set item = domDoc.GetFirstItem( "fd_Fejltxt" ) If item Is Nothing Then Set item = New NotesItem _ ( domDoc, "fd_Fejltxt", "" ) End If
' Linie for linie - fra linie xx til foerste er blank ' **tilføjelse af felter i regneark/størrelse**
If GenerateType="TILGANG" Then domRange="A" & Cstr(docCounter) & ":N" & Cstr(docCounter)
Set myRangeKey = Worksheet1.Range(domRange) fieldCounter=0 Forall x In myRangeKey.Cells If fieldCounter=0 Then blankEntry=x.value fieldCounter=fieldCounter+1 With domDoc Contents=Trim(x.value) If contents<>"" Then Call MapFieldTilgang(contents, domDoc, fieldcounter,contents,strukturview) .........
Her skulle den gerne have fat i celle A5 og dens værdi - men det lykkedes ikke altid.
Umiddelbart lyder det som om du har et "åbent" Excel-dokument, eller hvad mener du med "valge excel dokument"? At inteface med andre Windows programmer, som er Åbne, er desvære lidt af en kunst. Et andet problem generelt med MS programmer er at deres API i VBA er afhængig af hvilken sprogversion du har installeret. Hvis du tænder makro-recorder i en dansk Excel giver det ikke nødvendigvis samme VBA-kode som en engelsk Excel. Specielt variablene til funktioner er "lokaliserede". Møg.
Et andet problem kan være placeringen af den fil du ønsker at arbejde med. Jeg har bedst erfaring med at tilgå filer via OLE på en filserver. Hvis filerne ligger EMBEDDED i Notes-dokumenter er resultatet meget svingende og ofter afhængig af hvilken version af Excel du har i forhold til hvilken version af Excel det indlejrede objekt blev oprettet med. //Jörg
Hej Jörg Det er korrekt at det er et "åbent" regneark - dvs det er åben i baggrunden så brugerne ikke generes af excel. Det er derfor ikke et embedded object (som er noget skrammel i Notes!). Via @Prompt([LOCALBROWSE] kan man vælge den fil man ønsker - lidt som en stifinder.
Hvordan tjekker jeg sprogversionen i excel? Alle har en dansk office pakke.
Kan du udskrive domRange og lave lidt mere check omkring myRangeKey? Det er ikke sikkert at fejlen ligger i x.value området, men måske før.
Jeg er ikke klar over hvordan man checker den interne versionskode og sprogkode. Jeg konstaterer bare hvornår f.eks. MS Project fejler hvis man giver TableEdit( "&Entry"...) på dansk eller TableEdit( "&Indtastning"...) på engelsk.
Når jeg debugger bliver domRange sat til "A5:N5" hvilket jo er rigtigt nok. myRangeKey bliver ligeledes sat [Object] så det burde heller ikke være et problem. Jeg har tænkt på om der kunne være noget specielt i selve feltet, men heller ikke der kan jeg finde noget usædvaneligt.
Jeg burde måske uddybe problematikken. Her er hændelsesforløbet.
Brugerne har data i et regneark (excel), disse data kopiere de over i et andet regneark (arket) som de har fået fra mig. De bruger Ctrl+C og Indsæt specielt/værdier. Når de vil indlæse arket virker det ikke. De sender arket til mig som heller ikke kan indlæse. Hvis jeg kopiere dataene fra arket ind i et andet regneark og indlæser fra dette virker det fint.
Jeg ved ikke om det kan hjælpe til en løsning af problemet.
Du skriver ikke noget om, hvorvidt arket, hvori der bliver indsat data i, bliver gemt. Jeg har ingen erfaring med dette; men kan det være noget så banalt som om arket har været gemt med de data i, der skal hentes af Notes?
Du siger at brugerne selv klippe/klistrer data fra et regneart til et andet regneark, og stoler du virkerlig på at de gør det konsistent? Hvor ofte sker problemet? Er det de samme personer? Det regneark, som heller ikke du kan indlæse, skal undersøges nærmere. Tag evt. og start en makro-optagelse i et regneark der virker, som laver noget på "A5:N5"-range. Derefter kopierer du agenten til det andet regneark og udfører den der.
Det regneark, som brugerne arbejder på, kunne du ikke lave noget kode der tilgår data direkte herfra? Evt. ved at definere et eller flere navngivne RANGE, som grugerne skal udfylde?
Jeg lavede en macro: For Each xx In Worksheets(1).Range("A5:O5").Cells MsgBox xx.Value Next
Meget simpel, men effektiv. når jeg køre den på regnearket fra min bruger får jeg en række tomme msgbox. Hvis jeg opretter et nyt regneark og indtaster tilfældige tal i range A5:O5 og køre macroen virker det fint. Det virker som om data på brugernes ark kan ses men ikke rigtig er gemt i cellerne.....???!!?
Jeg skriger snart! Jeg fatter ikke hvorfor det ikke virker. Hvis jeg køre min macro på deres udgangsark, får jeg ene blanke msgbox. Når jeg kopiere linierne over i et andet regneark og køre macroen er der ingen problem. Hvis brugerne kopiere over i et andet regneark og køre macroen er det blanke msgbox. Jeg har kigget dem over skuldren for at se om de nu gør det rigtigt (paste as value) og de gør det 100% rigtigt.
Hej Medusa Problemet ligger vist nok i din tilgang til worksheetet: Hvis du istedenfor Worksheets(1) anvender Worksheets("TILGANGSARK STANDARD-excel") så virker det tilsyneladende.
Worksheets(1) virker tilsyneladende fint ved standard navngivning eller måske fordi der som standard er flere sheets? Det er jeg ikke helt klar over.
Hej Jogii Du har da fuldkommen ret! Hvorfor så jeg ikke den *¤# detalje med ark-navnet. Jeg troede at hvis man henviste til worksheet(1) ville den tage det første ark, men sådan leger den altså ikke. Nu kan jeg også indlæse arket i notes, så jeg er bare super glad nu. TAK!
Problemet er vist nok Excel, som burde have rejst en runtime error hvis den ikke har noget fornuftigt liggende i worksheets(1). Eller måske ligger dit sheet som nummer 5, du kan blot ikke se de andre?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.