Avatar billede DrMercy Praktikant
10. maj 2017 - 10:10 Der er 2 kommentarer

Hjælp til konvertering af VBA kode til Javascript

Kære forum

Jeg har flg. VBA kode (skal bruges til at foruddefinere filtre i en pivottabel). Jeg vil rigtigt gerne have hjælp til at oversætte det til JavaScript, hvis det kan lade sig gøre :)

Sub Test()
    Dim Pi As PivotItem

    With Worksheets("Aktivitetsoversigt").PivotTables("Aktivitetsoversigt").PivotFields("adiag")
   
        For Each Pi In .PivotItems
       
            If UCase(Pi.Value) = "DZ038" Or UCase(Pi.Value) = "DZ039" Then
           
                Pi.Visible = True
            Else
                Pi.Visible = False
            End If
        Next Pi
    End With
End Sub

På forhånd tak! :)

Mvh
Bo
Avatar billede intenz Novice
10. maj 2017 - 23:10 #1
Jeg har ikke en løsning til dig.

Hvis du vil læse og behandle Excel filer (som det ser ud til at du vil), er det nok ikke Javascript du skal gøre det i.

Lige det første jeg fandt på Google hvis du vil den vej (anbefales ikke):
http://stackoverflow.com/questions/8238407/how-to-parse-excel-file-in-javascript-html5

Ellers ville jeg nok overveje et backend sprog, f.eks. Java der typisk er bedre til det. Ikke at det er specielt nemt uanset hvad.
Avatar billede DrMercy Praktikant
11. maj 2017 - 10:14 #2
Hej intenz

Tak for dit svar.
Grunden til det lige skal være JavaScript er, at jeg bruger programmet SAS til at generere Excel ark. SAS kan dog ikke selv lave pivottabeller, men i stedet kan det generere JavaScripts, som det efterfølgende kan eksekvere via dos prompt.
Der er desværre dog ret begrænsede muligheder for at skræddersy Javascriptet via SAS. Man kan dog efterfølgende gå ind og manuelt editere javascriptet, hvilket er baggrunden for, at jeg skriver her :)

Nedenunder kan man se det JavaScript, som fungerer ind til videre:

var xl = new ActiveXObject("Excel.Application");
xl.Visible = false;
var wb = xl.Workbooks.Open("L:\\OEP\\DATA\\Team Registrering\\1 Den nye struktur paa L-drevet\\Pivotaktivitet_alle afdelinger\\2017\\1 Kvartal\\Ambulant\\Anæstesi-Intensiv Afd. V (Odense) (Amb).xlsx");
var sheet = wb.ActiveSheet;

wb.Worksheets.Add(after=wb.Sheets(wb.Sheets.Count));
var pws = wb.ActiveSheet;
pws.Name="dz038,039 u. tillæg";
var pnb=xl.ActiveWindow;
var pt=wb.PivotCaches().Create(1,wb.sheets("Data").Range("A1").CurrentRegion);
var pvtTable=pws.PivotTables.Add(PivotCache=pt,TableDestination=pws.Range("A1"),TableName="dz038,039 u. tillæg");
pvtTable.RowAxisLayout(1);
var ptformat=pws.PivotTables("dz038,039 u. tillæg");
pvtTable.PivotFields("CPR").Orientation = 1;
pvtTable.PivotFields("CPR").Subtotals(1) = 0;
pvtTable.PivotFields("INDDTO").Orientation = 1;
pvtTable.PivotFields("INDDTO").Subtotals(1) = 0;
pvtTable.PivotFields("CASEMIX_RSD").Orientation = 1;
pvtTable.PivotFields("CASEMIX_RSD").Subtotals(1) = 0;
pvtTable.PivotFields("PRISIALT_RSD").Orientation = 1;
pvtTable.PivotFields("PRISIALT_RSD").Subtotals(1) = 0;
pvtTable.PivotFields("ADIAG").Orientation = 1;
pvtTable.PivotFields("ADIAG").Subtotals(1) = 0;
pvtTable.PivotFields("TDIA1").Orientation = 1;
pvtTable.PivotFields("TDIA1").Subtotals(1) = 0;
pvtTable.PivotFields("TDIA2").Orientation = 1;
pvtTable.PivotFields("TDIA2").Subtotals(1) = 0;
pvtTable.PivotFields("PROC1").Orientation = 1;
pvtTable.PivotFields("PROC1").Subtotals(1) = 0;
pvtTable.PivotFields("PROC2").Orientation = 1;
pvtTable.PivotFields("PROC2").Subtotals(1) = 0;
pvtTable.PivotFields("PROC3").Orientation = 1;
pvtTable.PivotFields("PROC3").Subtotals(1) = 0;
pvtTable.PivotFields("ANTAL").Orientation = 4;
pvtTable.PivotFields("ANTAL").Subtotals(1) = 0;
pvtTable.PivotFields("MDR").Orientation = 3;
pvtTable.PivotFields("MDR").Subtotals(1) = 0;
pvtTable.PivotFields("KVARTAL").Orientation = 3;
pvtTable.PivotFields("KVARTAL").Subtotals(1) = 0;
pvtTable.PivotFields("AAR").Orientation = 3;
pvtTable.PivotFields("AAR").Subtotals(1) = 0;
pvtTable.PivotFields("SGHAFD_RSD").Orientation = 3;
pvtTable.PivotFields("SGHAFD_RSD").Subtotals(1) = 0;
pvtTable.PivotFields("OVAFDTXTNY_RSD").Orientation = 3;
pvtTable.PivotFields("OVAFDTXTNY_RSD").Subtotals(1) = 0;
if (xl.Version > 11) {
ptformat.TableStyle2 ="PivotStyleLight1";
}

pws.Columns.Autofit;
pws.Rows.Autofit;
wb.Save;
xl.DisplayAlerts =0;
xl.DisplayAlerts = 1
xl.CutCopyMode = 0;
xl.EnableEvents = 0;
xl.Quit();
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