Avatar billede medusa Nybegynder
04. november 2003 - 09:49 Der 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.
04. november 2003 - 09:59 #1
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?
Avatar billede medusa Nybegynder
04. november 2003 - 10:05 #2
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.
Avatar billede jogii Nybegynder
04. november 2003 - 10:09 #3
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
Avatar billede medusa Nybegynder
04. november 2003 - 10:15 #4
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.
Avatar billede jogii Nybegynder
04. november 2003 - 10:46 #5
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.
Avatar billede medusa Nybegynder
04. november 2003 - 11:18 #6
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.
Avatar billede medusa Nybegynder
04. november 2003 - 11:31 #7
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.
Avatar billede pr0gm4n Nybegynder
04. november 2003 - 14:57 #8
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?
Avatar billede medusa Nybegynder
04. november 2003 - 15:14 #9
ak hvis det bare var så simpelt. Men arket bliver gemt (ellers kan man vist ikke vælge det i indlæsningen).
Avatar billede jogii Nybegynder
05. november 2003 - 09:02 #10
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?
Avatar billede medusa Nybegynder
06. november 2003 - 10:32 #11
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.....???!!?
Avatar billede jogii Nybegynder
07. november 2003 - 09:22 #12
Er de programmeret (formler)? Kan det være at de er beskyttede? Er du sikker på at de ved kopiering bliver pasted "as values" og ikke "formula"?
Avatar billede medusa Nybegynder
07. november 2003 - 11:23 #13
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.
Avatar billede jogii Nybegynder
07. november 2003 - 20:29 #14
Er jeg rigtig på den hvis jeg siger at vi sidder tilbage med et Excel problem?
Jeg kan godt undersøge regnearkene for dig ...
Avatar billede medusa Nybegynder
10. november 2003 - 10:19 #15
Det ville da være lækkert. Måske kan du se noget jeg ikke kan.
Hvor skal jeg sende den hen?
Avatar billede jogii Nybegynder
11. november 2003 - 00:34 #16
jogi@asmucon.dk
Avatar billede jogii Nybegynder
12. november 2003 - 08:06 #17
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.

Jeg har testet med Excel 97
Avatar billede medusa Nybegynder
12. november 2003 - 08:17 #18
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!
Avatar billede jogii Nybegynder
12. november 2003 - 08:20 #19
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?
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester