Meddelande

Minska
No announcement yet.

VBA, vad är referens/klass/objekt/bibliotek?

Minska
X
 
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • VBA, vad är referens/klass/objekt/bibliotek?

    Hej

    Jag sitter och trasslar väldigt mycket med VBA för att få till en lösning och det har dykt upp många frågetecken..

    I excel kan man ju gå på Verktyg->referenser
    Här har man ju alla tillgängliga funktioner (tilläggsprogramm).

    Här är mina första fråga. Vad kallas dessa, är det klasser eller bibliotek.. Jag fattar ju att de tillför viss funktionalitet i programmet..

    Jag behöver nog få dom olika begreppen lite tydliggjorda så man fattar vad man snackar om..

    Man ser ju också vad alla dessa referenser pekar mot, det verkar ju kunna vara .ocx filer eller .dll filer, och det som strular för mig är en referens som pekar mot en .exe fil?

    Vad blir skillnaden på dessa, är det också så att dessa måste vara registrerade i windowsregistret?

    När jag skapar instanser av dessa i programeringen så använder jag ju typ:
    Kod:
    Createobject("ADODB.Connection")
    eller
    Kod:
    Dim object as new ADODB.Connection")
    finns skillnader i säkerheten vad det gäller referenser leder till .exe object eller .dll och .ocx?
    Skapar jag makro i excel som i sin tur skapar olika instanser m.m. så funkar det att anropa från övriga Office programm osv, men om jag anropar makrot från en asp sida så fungerar det inte.. Detta gäller just objekt med referens till en .exe fil?


    Blev en del frågor men nu är det mest frågor, vet ju knappt vad man pratar om
    "An nescis, mi fili, quantilla prudentia mundus regatur?"

  • #2
    1. Det kallas komponenter/bibliotek/libraries. Komponenterna innehåller klasser som innehåller metoder som man kan anropa.

    2. Exe betecknar en körbar fil (t ex en applikation som ska startas) och ska normalt inte refereras på det som du beskriver sätt . Det verkar skumt.

    3. Att anropa excelmakron från en webbsida känns helt tokigt


    Du får komma med mer information om vad du vill åstadkomma...
    Microsoft Certified Application Developer

    Kommentera


    • #3
      ok , det gjorde vissa frågor lite tydligare... Detta gäller ett intranät där det finns en väldigt avancerad excelfil som gör ganska många beräkningar.. Det jag måste lösa är att hämta information från denna excelfil och sedan använda det på webbsidan (intranätet).
      Jag har lyckats lösa detta genom att skapa en instans av excel och på så sätt kunna öppna excelfilen och till och med skriva ut från filen med anrop från asp script.. Mitt problem är nu att när jag skriver ut från asp script där jag öppnat excelfilen så får jag inte rätt teckensnitt, men om jag öppnar excelfilen rent "fysiskt" genom interaktivitet och skriver ut så blir det rätt..
      HUr funkar det när man skapar en instans av ett objekt och jobbar med det? något som påverkar teckensnitten, läst någonstans att det är ett systemkonto som exekverar ett program om jag exempelvis använder
      Server.createobject("Excel.application")

      Kan det stämma, har sökt som en tok men lyckas inte hitta någon information om detta?

      MVH
      "An nescis, mi fili, quantilla prudentia mundus regatur?"

      Kommentera


      • #4
        evilaid skrev: Visa inlägg
        Mitt problem är nu att när jag skriver ut från asp script där jag öppnat excelfilen så får jag inte rätt teckensnitt, men om jag öppnar excelfilen rent "fysiskt" genom interaktivitet och skriver ut så blir det rätt..
        Hur menar du.

        Är det så att du ifrån din ASP-sidan anropar en funktion i EXCEL filen som sedan returnerar ett resultat tillbaka till din ASP-Kod och du därifrån printar ut denna information på din websida.

        Eller menar du att du genererar ett excel dokument från din ASP-kod som laddas ner från din websida och det i detta dokument blir ett annat typsnitt än ditt "orginal dokument".
        Vad är värst? Att jag har fördomar om folk, eller att de hela tiden infriar dem?

        Kommentera


        • #5
          Jag har snurrat så mycket med detta att jag knappt själv vet vad jag gör, ursäkta att det är lite rörigt..
          Så här är det:
          jag har en excelfil med flera olika flikar som gör olika beräkningar (avancerade och allmänt krångliga)

          Nu har jag en asp sida på intranätet som öppnar denna excelfil för att sedan skriva ut en av flikarna..
          Då gör jag det i stil med:
          Kod:
          <%
          
          Set xlApp = Server.createobject("Excel.application")
          Set xlWorkBook = xlApp.workbooks.open(xlfil.xls)
          
          xlWorkBook.sheets(1).Printout
          %>
          När jag gör enligt ovan metod så skrivs dokumentet ut med något teckensnitt jag inte känner igen, och det är inte det man ser när man fysisiskt öppnar och arbetar med excelfilen.. Samma är att om jag öppnat excelfilen rent fysiskt och skriver ut så blir det rätt teckensnitt??

          IIS user har jag satt till samma konto som jag loggar in med (admin konto)..

          En annan sak jag itne heller förstår är att om jag via asp kod anropar ett makro i en excelfil så fungerar det kanon, men om jag i ett excelmakrot lagt till en rad för sheets(1).Prinout så händer inget när jag anropar det från asp script, men om jag öppnar excelfilen fysiskt och kör makrot så skrivs det ut??

          Då använder jag kod typ:

          Kod:
          <%
          
          Set xlApp = Server.createobject("Excel.application")
          Set xlWorkBook = xlApp.workbooks.open(xlfil.xls)
          
          xlApp.Run "Test"
          
          %>
          Blir inte klok på detta...
          "An nescis, mi fili, quantilla prudentia mundus regatur?"

          Kommentera


          • #6
            Jag är förbryllad. Var kommer .NET in i bilden?
            @aviddevguy

            Kommentera


            • #7
              Använder du Windows Authentication? Om inte så testa det...
              Microsoft Certified Application Developer

              Kommentera


              • #8
                Jag använder redan Windows Authentication.
                KOm nog precis fram till att detta inte blir något roligt problem.. Nu har jag testat på en Windows xp maskin med IIS 6 och då funkar det, men när jag kör på Winsows 2003 server med IIS 6 så händer inget.. MÅste väll vara någon säkerhetspryl antar jag som pajar allt...

                Nedan kod anropar ett makro i filen print.xls
                Kod:
                    
                Set oExcelApp = CreateObject("Excel.Application")     
                oExcelApp.DisplayAlerts = False
                    oExcelApp.Visible = FALSE     
                Set oWorkbook = oExcelApp.workbooks.Open(server.mapPath("print.xls")) 'Öppnar fil med arbetsböcker
                    oExcelApp.Run "'print.xls'!test" 'Anropar makro i fil
                    oWorkbook.Close False 'stänger objektet
                    oExcelApp.Quit 'stänger excelobjektet
                Excel kod
                Kod:
                Sub test()
                     Application.ActivePrinter = "Xerox Phaser 6125N på Ne00:"
                     ThisWorkbook.Sheets("Blad1").PrintOut
                End Sub

                Så ovan funkar på Xp maskinen men inte windows server maskinen... Fan!!!
                ursäkta språket..

                Här är en rolig sak, denna koden funkar däremot på båda maskinerna:
                Kod:
                    Set oExcelApp = CreateObject("Excel.Application") 'Skapar excelobjektet
                    oExcelApp.DisplayAlerts = False
                    oExcelApp.Visible = FALSE 'visar inte excelfönstret
                    Set oWorkbook = oExcelApp.workbooks.Open(server.mapPath("print.xls")) 'Öppnar fil med arbetsböcker
                    oExcelApp.ActivePrinter = "Xerox Phaser 6125N på Ne00:"
                    oWorkbook.sheets(1).Printout
                     oWorkbook.Close False 'stänger objektet
                    oExcelApp.Quit 'stänger excelobjektet
                Måste väll ha något med säkerheter att göra när det inte går anropa utskriftkommandot innifrån excel??

                Puuhh..

                @nders:
                Jag vet inte var tråden hör hemma riktigt, försökte söka på lite liknande problem och hittade många av trådarna i detta forumet..

                Hoppas alla har en go kväll, öl vore sjukt fint nu!
                "An nescis, mi fili, quantilla prudentia mundus regatur?"

                Kommentera


                • #9
                  Eftersom tråden inte har något med .NET att göra flyttar jag den till "Webbutveckling - Övrigt".

                  Jag tycker också det låter som att det är någon sorts rättighets- eller inställningsgrej på servern som bråkar. I min erfarenhet är det ALLTID problem med att automatisera Excel på en server. Det är inte meningen att man ska göra det. "Alla" gör det, men Microsoft vägrar stödja det. Saker du kan prova är:

                  * Se till att Excel alltid körs som administratör
                  * Prova att göra samma sak från något som inte är en asp-sida (typ en .vbs-fil eller liknande)
                  * Kolla att det är samma version av Excel på din XP-maskin som på servern
                  @aviddevguy

                  Kommentera


                  • #10
                    Ok, tack. Ursäkta felplaceringen...

                    jo det har varit obgränsat med problem vad det gäller automatiseringen av excel.. Tyvärr kommer jag inte ifrån det utan behöver lösa det

                    Det är inte meningen att man ska göra det. "Alla" gör det, men Microsoft vägrar stödja det. Saker du kan prova är:
                    Då är jag inte ensamm alltså, har sökt hur mycket som helst på nätet men det känns ändå gasnak begränsat (för att vara internet)?

                    Några motfrågor..

                    Du skriver att jag alltid ska se till att excel körs som administratör:
                    Jag har ju nu satt ett användakonto med admin rättigheter i IIS som kör alla sidor, är det rätt så eller finns det någon annastans jag behöver kolla behörighet?

                    jag har provat att köra samma sak från en annan excelfil istället för ett asp script, då fungerar det: Ska jag pröva på något annat sätt??

                    Excelversionerna är desamma på båda maskinerna s det kan jag nog stryka..


                    Ang behörighet: om jag kör en excelfil via ett asp script och jag då angivit et konto i IIS'en som är det samma som jag är inloggad med, är det då det kontot som används när jag kör filen..

                    Jag läste för ett tag sedan på någon sida att det skulle vara ett systemkonto inblandat och för utskrifter så var man tvungen att lägga upp aktuella slrivare i registret för just systemanvändaren?


                    Man kan ju bryta ihop över den skiten...

                    Ny dag nya möjligheter !! (så länge man inte håller på med vba automation)
                    "An nescis, mi fili, quantilla prudentia mundus regatur?"

                    Kommentera


                    • #11
                      Okej som om jag förstår dig rätt så försöker du alltså skriva ut till skrivaren och inte skärmen.

                      Är det så att din IIS är på samma maskin som när du skriver sidan ifrån EXCEL direkt, eller är det så att din IIS ligger på en helt annan maskin och du försöker skriva ut från den. Om det är fallet så skulle det ju kunna vara så enkelt som att den font som du vill skriva ut med inte är installerade på servern och därför inte kan användas till din print.
                      Vad är värst? Att jag har fördomar om folk, eller att de hela tiden infriar dem?

                      Kommentera


                      • #12
                        precis den iden fick jag för ett par dagar sedan.. Men jag har isntallerat alal fonter på servern och direkt genom att öppna excelfilen p servern skrivit ut den, då ser det ok ut, men om det görs via asp scriptet som körs på samma server så blir det fel..
                        "An nescis, mi fili, quantilla prudentia mundus regatur?"

                        Kommentera


                        • #13
                          [citat]Du skriver att jag alltid ska se till att excel körs som administratör:
                          Jag har ju nu satt ett användakonto med admin rättigheter i IIS som kör alla sidor, är det rätt så eller finns det någon annastans jag behöver kolla behörighet?[/citat]Det borde gå att välja att excel.exe (typ via högerklick på exe-filen) alltid ska köras som administratör. Men jag vet inte hur det ser ut på en gammal 2003-server.
                          @aviddevguy

                          Kommentera


                          • #14
                            Men bara genom att högerklicka på en fil kan man inte ange sånt va, är det inte sånt man styr när man sätter rättigheter för Dcom objekt?

                            vilken härva detta är..
                            "An nescis, mi fili, quantilla prudentia mundus regatur?"

                            Kommentera


                            • #15
                              Beror på vilken version av Windows server man kör, och jag minns inte hur det är i 2003. I Windows 2008 kan man välja "Run this program as administrator" på fliken "Compatibility".
                              @aviddevguy

                              Kommentera

                              Working...
                              X