Endre XLA fil med MSBuild

stemmer
4

Jeg prøver å lage en bygge script for min nåværende prosjekt, som inkluderer et Excel-tillegg. Tillegget inneholder en VBProject med en fil modGlobal med en variabel VERSION_NUMBER. Dette nummeret må endres for hvert bygge. Den nøyaktige fremgangsmåten:

  1. Åpne XLA dokument med Excel.
  2. Bytt til VBEditor modus. (Alt + F11)
  3. Åpne VBProject, inn et passord.
  4. Åpne modGlobal fil.
  5. Endre variable standardverdien til dagens dato.
  6. Lukk og lagre prosjektet.

Jeg er på et tap for hvordan å automatisere prosessen. Det beste jeg kan komme opp med er en excel makro eller Auto-IT script. Jeg kunne også skrive en tilpasset MSBuild oppgave, men det kan få ... vanskelig. Har noen andre har noen andre forslag?

Publisert på 17/09/2008 klokken 17:36
kilden bruker
På andre språk...                            


3 svar

stemmer
1

Jeg er ikke 100% sikker på hvordan du gjør akkurat det du har bedt om. Men gjetter målet du har i tankene er det noen muligheter.

1) Lag en del (eller alle) av Globals en egen tekstfil som distribueres med XLA jeg ville bruke dette for eksterne referanser som den versjonen av resten av programmet ditt. Skriv dette på bygge gang og distribuere, og lese på belastningen av XLA.

2) Jeg gjetter din skriver den versjonen av hovedkomponenten (dvs: den ikke XLA del) av søknaden din. Hvis dette er tru hvorfor lagrer dette i XLA? Hvorfor ikke ha hoveddelen av programmet tillater viss versjon av XLA å fungere. Versjon 1.1 av hoved app kan ta imot samtaler fra versjon 7.1 til 8.9 av XLA.

3) Hvis du bare er ute etter å oppdatere XLA så det blir inkludert i versjonskontrollsystemet eller lignende (jeg gjetter her) kanskje bare ta på filen slik at det ser ut som det endret.

Hvis det er den versjonen av resten av app som du kontrollerer jeg ville bare stikke den i en tekstfil og distribuere at sammen med XLA.

Svarte 17/09/2008 kl. 23:12
kilden bruker

stemmer
0

Du kan endre koden i xla programma innenfra Excel. Du trenger en referanse til 'Microsoft Visual Basic for Applications Utvidelses ..' komponent.

Eksemplene på Chip Pearsons utmerket sted bør komme i gang.

Svarte 18/09/2008 kl. 11:44
kilden bruker

stemmer
3

En alternativ måte å håndtere versjonskontroll av en XLA fil er å bruke en tilpasset bolig i Dokumentegenskaper. Du kan få tilgang til og manipulere ved hjelp av COM som beskrevet her: http://support.microsoft.com/?kbid=224351 .

Fordelene med dette er:

  • Du kan undersøke versjonsnummeret uten å åpne XLA fil

  • Du trenger ikke Excel på build maskin - bare DsoFile.dll komponent

Et annet alternativ ville være å lagre versjonsnummer (eventuelt annen konfigurasjon data også) i et regneark i XLA filen. Regnearket vil ikke være synlig for brukere av XLA. En teknikk jeg har brukt i det siste er å lagre tillegget som en XLS fil i kildekontroll, da som en del av byggeprosessen (for eksempel i en Post-Build hendelse) kjøre skriptet nedenfor for å konvertere den til en XLA i output katalog. Dette skriptet kan enkelt utvides til å oppdatere et versjonsnummer i et regneark før du lagrer. I mitt tilfelle jeg gjorde dette fordi min Excel-tillegg brukes VSTO, og Visual Studio støtter ikke XLA-filer direkte.

'
'   ConvertToXla.vbs
'
'   VBScript to convert an Excel spreadsheet (.xls) into an Excel Add-In (.xla)
'
'   The script takes two arguments:
'
'   - the name of the input XLS file.
'
'   - the name of the output XLA file.
'
Option Explicit
Dim nResult
On Error Resume Next
nResult = DoAction
If Err.Number <> 0 Then 
    Wscript.Echo Err.Description
    Wscript.Quit 1
End If
Wscript.Quit nResult

Private Function DoAction()

    Dim sInputFile, sOutputFile

    Dim argNum, argCount: argCount = Wscript.Arguments.Count

    If argCount < 2 Then
        Err.Raise 1, "ConvertToXla.vbs", "Missing argument"
    End If

    sInputFile = WScript.Arguments(0)
    sOutputFile = WScript.Arguments(1)

    Dim xlApplication

    Set xlApplication = WScript.CreateObject("Excel.Application")
    On Error Resume Next 
    ConvertFileToXla xlApplication, sInputFile, sOutputFile
    If Err.Number <> 0 Then 
        Dim nErrNumber
        Dim sErrSource
        Dim sErrDescription
        nErrNumber = Err.Number
        sErrSource = Err.Source
        sErrDescription = Err.Description
        xlApplication.Quit
        Err.Raise nErrNumber, sErrSource, sErrDescription
    Else
        xlApplication.Quit
    End If

End Function

Public Sub ConvertFileToXla(xlApplication, sInputFile, sOutputFile)

    Dim xlAddIn
    xlAddIn = 18 ' XlFileFormat.xlAddIn

    Dim w
    Set w = xlApplication.Workbooks.Open(sInputFile,,,,,,,,,True)
    w.IsAddIn = True
    w.SaveAs sOutputFile, xlAddIn
    w.Close False
End Sub
Svarte 23/09/2008 kl. 04:56
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more