Avatar billede hansjacob Nybegynder
12. november 2002 - 07:49 Der er 16 kommentarer og
1 løsning

argumenter til excel

Hej

Er det muligt at give argumenter til excel?

Jeg har et lille intranet, hvor jeg godt kunne tænke mig, at man kan klikke på et excel regneark med nogle bestemte argumenter. Eksempelvis:

mytRegneArk.xls jacob 23

hvor så de to argumenter er jacob og 23. Er det noget der kan lade sig gøre eller skal jeg se mig om efter en alternativ løsning?
Avatar billede martin_moth Mester
12. november 2002 - 08:54 #1
Hvad skal dine argumenter gøre, i forhold hvis du ikke starter regnearket?
Avatar billede martin_moth Mester
12. november 2002 - 08:54 #2
Sludder og vrøvl. Hvad skal dine argumenter gøre, i forhold til hvis du kalder arket uden argumenter?
Avatar billede hansjacob Nybegynder
12. november 2002 - 12:29 #3
fx sætte en variabel. A1=5, A2=jacob etc.
Avatar billede martin_moth Mester
12. november 2002 - 13:20 #4
Det er jeg 99% sikker på at du ikke kan. Men du kan lave en lille VB-applikation, der åbner det ark du peget på, og indsætter de værdier du vil - men det er vist ikke det du er interesseret i.

Lad os se om der har den sidste 1 % - jeg er somsant ikke helt sikker på at du ikke kan
12. november 2002 - 17:03 #5
Spændende spørgsmål - jeg går i tænke tank.
12. november 2002 - 17:04 #6
Har iøvrigt samme forhåndsantagelse som martin_moth - men går efter den sidste % *GG*
12. november 2002 - 17:05 #7
hansjacob> jacob og 23 er det dit brugernavn og bruger nummer eller hvad er det ? måske excelfilen kunne hente det via nogle API kald ved opstart af regnearket...
Avatar billede hansjacob Nybegynder
12. november 2002 - 17:09 #8
Det er fordi der på vores intranet ligger nogle filer med mapperygge, faneblade mv. i excel format. På samme intranetside er et register over projekter. Jeg vil gerne lave det således, at man kan klikke ind på et projekt og så klikke på en knap,hvor der står "lav mapperygge" og så popper excel op, hvor projektnavnet, nummer mv. står som det skal!

Hvad er API kald?
12. november 2002 - 17:15 #9
API kald er nogle standard funktioner, som kan bruges til at modtage oplysninger om pc'en styresystem og dets indstillinger. Men det løser nok ikke opgave her.

Tænker videre.
Avatar billede martin_moth Mester
12. november 2002 - 17:33 #10
Hvis du har mod på VB (jeg mener ikke VBA), så er det lige til at lave deri  og faktisk ikke så svært endda - interesseret i det?? :o)
Avatar billede hansjacob Nybegynder
12. november 2002 - 17:39 #11
arrr jeg ved ikke rigtigt. Det er ikke min stærke side og argumentet for at gøre det på denne måde er nemlig, at vi kan benytte noget eksisterende.

Hvis der skal programmeres kan jeg ligeså godt lave en HTML/PHP side med lidt css. Men ellers tak for tilbudet ;-)
Avatar billede Slettet bruger
12. november 2002 - 17:47 #12
Hvad med bare at lave en skabelon i Excel til dine mapperygge.
Du kan herefter låse skabelonen og lægge den på f.eks. et fælles drev så
den er lige til at udfylde og printe ud.
12. november 2002 - 19:56 #13
Det kan nu godt lade sig gøre - se her hvad jeg fandt:

What I do is set environment variables and
then read the environment variable in the Excel code:

Batch file:
    SET CustId="CUS0000232"
    C:\MyExcelLib\001.XLS

Then, in the workbook Auto_Open procedure (or in a procedure called by
Auto_Open), I read the environment variables.  I have a common routine
to get environment variables because my application has a handful of
environment variables to retrieve.  Here is sample code:

Sub Auto_Open
  Dim CustIdParameter

    CustIdParameter = Get_Environment("CustId")
End Sub

Here is a copy of my function Get_Environment, which uses the API
GetEnvironmentVariable (which is listed after the Get_Environment
function:

Function Get_Environment(ByVal vsEnvVar As String) As String

'***********************************************************************
'* Get_Environment:
'*    This procedure will retrieve the value in the environment
'*    variable passed in vsEnvVar.
'* Parameters:
'*    vsEnvVar:
'*        The name of the environment variable desired.
'* Return Value:
'*    The value of the environment variable.
'***********************************************************************
    Dim SaveCurrentProcedure As String
    Dim EnvVarlen As Long
    Dim Buffer As String * 256
    Dim Temp As String

    Get_Environment = ""
    EnvVarlen = GetEnvironmentVariable(vsEnvVar, Buffer, Len(Buffer))
    Temp = Left(Buffer, EnvVarlen)
    If Left(Temp, 1) = """" Then
        Temp = Right(Temp, Len(Temp) - 1)
    End If
    If Right(Temp, 1) = """" Then
        Temp = Left(Temp, Len(Temp) - 1)
    End If
End Function

'***********************************************************************
'* GetEnvironmentVariable
'*      This is used to retrieve environment variables
'***********************************************************************
Declare Function GetEnvironmentVariable Lib "kernel32"
Alias "GetEnvironmentVariableA" (ByVal lpName As String, _
    ByVal lpBuffer As String, ByVal nSize As Long) As Long
12. november 2002 - 19:57 #14
eller....

The following trick works at least in XL97 SR-1 / Win95.
The command line arguments must be read by the Auto_open (or
Workbook_Open) Sub of your add-in (say c:\temp\test.xla).
Your command line should look like this one:

start excel c:\temp\test /e/param1/param2/.../paramN (DOS command)

RetVal = Shell("c:\...\excel.exe c:\temp\test /e/param1/...paramN")
(VB)

i.e. : after excel.exe, the name of the add-in, then the switch /e
**immediately** followed by your own arguments. These arguments should
be separated by "/" without any intermediate space.
For instance, if you want to pass the arguments "c:\temp\file1.dbf",
"all" and "exclusive" to Excel, your command-line should look like:

start excel c:\temp\test /e/c:\temp\file1.dbf/all/exclusive

2. In Test.xla, use the API function GetCommandLine (alias
GetCommandLineA in Win95) to get the contents of this command-line
string.
You should then parse the string returned by GetCommandLineA, search
for
the separators "/" and store each argument in an array. Here is an
example of a such Auto_open sub:

'**************************************************
Option Base 1
Declare Function GetCommandLineA Lib "Kernel32" () As String
Dim Args() As String

Sub Auto_open()

  Dim CmdLine As String
  Dim ArgCount As Integer
  Dim Pos1 As Integer, Pos2 As Integer

  CmdLine = GetCommandLineA
  Pos1 = InStr(1, CmdLine, "/") + 1
  Pos1 = InStr(Pos1, CmdLine, "/") + 1

  Do While Pos1 <> 1
    Pos2 = InStr(Pos1, CmdLine, "/")
    ArgCount = ArgCount + 1
    ReDim Preserve Args(ArgCount)
    Args(ArgCount) = Mid(CmdLine, Pos1, _
      IIf(Pos2, Pos2, Len(CmdLine)) - Pos1)
    MsgBox "Argument " & ArgCount & " : " & Args(ArgCount)
    Pos1 = Pos2 + 1
  Loop

End Sub
'**************************************************

If you use the command-line above, this Auto_open sub will store the
three arguments ("c:\temp\file1.dbf", "all" and "exclusive") in the
Args() array and display them.

Again, be sure that you don't insert any space between /e and each
argument in the command-line, otherwise it will fail (Excel would
believe that these "pseudo-arguments" are the names of workbooks to
open
at startup...).
Avatar billede martin_moth Mester
12. november 2002 - 21:21 #15
Neat.... :o)
Avatar billede martin_moth Mester
13. november 2002 - 17:36 #16
Er du tilfreds, hansjacob ?
Avatar billede hansjacob Nybegynder
26. november 2002 - 09:57 #17
hmmm. Jeg havde jo håbet på, at man kunne lave noget mere simpelt, men tak for de VB scripts.
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

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