Copy and paste to install the macro into your Excel spreadsheet and build a button to execute it. You will find it convenient to insert it into the same Excel file that you use for the variable listing I mentioned above. The macro will use a browse-for-file feature so you can select the QlikView document file you want to update. Then, the macro will go down the rows of your active worksheet taking variable names from column A and variable contents from column B and updating the document until it hits an empty cell in column A. It will then tell you how many variables it has processed and ask if you want to save the document. It starts from row 4 of your worksheet to make it compatible with the earlier spreadsheet macro but you can change the row that it starts with - look for the comment in the middle of the macro.
As always, make a backup copy of your files before running a macro like this. Here's the macro code:
Sub Update_QV_Variables()
'------------------------
'This Excel macro will ask you to select a QlikView document file and
'then it will insert/updateput the variable names and contents from
'your current worksheet into the QlikView document.
'Variable name must be in column A and variable contents in column B.
'The process goes down the rows until it hits an empty cell in column A.
'--QlikView Maven, April 2013
Dim oQV, oDoc, oVars, oTempVar, oThisVar, qv_fn, i, rowlmt, start_row, varctr, x
'Get the QlikView document pathname
qv_fn = Application.GetOpenFilename("QlikView Report File (.),*.*", , "Select a QlikView .qvw Report File", False)
If qv_fn = 0 Then
Exit Sub
End If
'Open the QlikView document file
On Error Resume Next
Set oQV = CreateObject("QlikTech.QlikView")
If Err.Number > 0 Then
x = MsgBox("Sorry, I can't find QlikView", vbOKOnly, "Update_QV_Variables")
Exit Sub
End If
Set oDoc = oQV.OpenDoc(qv_fn)
If Err.Number > 0 Then
oQV.Quit
x = MsgBox("Sorry, I can't find the QlikView document", vbOKOnly, "Update_QV_Variables")
oQV.Quit
Exit Sub
End If
Set oVars = oDoc.GetVariableDescriptions
If Err.Number > 0 Then
oQV.Quit
x = MsgBox("Sorry, I can't find the QlikView document", vbOKOnly, "Update_QV_Variables")
Exit Sub
End If
On Error GoTo 0
start_row = 4 'this is the first spreadsheet row with variable data - change as needed
rowlmt = ActiveSheet.UsedRange.Rows.Count
varctr = 0
'Loop through the rows
For i = start_row To rowlmt
varname = ActiveSheet.Cells(i, 1).Value
If Len(Trim(varname)) = 0 Then
Exit For
End If
varctr = varctr + 1
varcontent = ActiveSheet.Cells(i, 2).Value
Set oThisVar = oDoc.Variables(varname)
If oThisVar Is Nothing Then
'must need to create variable
oDoc.CreateVariable varname
Set oThisVar = oDoc.Variables(varname)
End If
oThisVar.SetContent varcontent, True
Next
'Finish up
x = MsgBox(varctr & " variables inserted into " & qv_fn & ". OK to Save?", vbOKCancel, "Update_QV_Variables")
If x <> 2 Then
oDoc.Save
End If
oDoc.CloseDoc
oQV.Quit
End Sub
★★★
3 comments:
Thanks Tim - these seem invaluable as backing up variable values is a real problem in QlikView natively.
Sorry for the random question. But is that picture a sunset of Erie?
I took that picture in January 2013 from a rooftop bar overlooking the Gulf in St Petersburg Florida.
Post a Comment