Archive

Archive for October, 2014

How to fix MS-Word not creating PDF Bookmarks for your Headings

  1. Problem: No navigation bar in Acrobat Reader when viewing your PDF created from MS-Word.
  2. Solution: Check this setting first in the Save as PDF Options: image
  3. But: Word 2013’s  “Save as PDF” with “Create Bookmarks”  may remains greyed out since it won’t even see your own heading styles, even if you based these styles on the built-in heading styles (which are known to contain  “hidden magic” not easily replicated) , including their outline level, if
    1. Heading appears in Content control.
    2. Heading appears in Table.
  4. Workaround:
    1. Move headings out of Content Controls (you can still “lock”the text with Grouping, which will be enabled on the Developer Tab once you select at least a conten control and text (meant for form field labels).
    2. Move headings outside of tables.

Can speech recognition tools be soundly applied for speaking practice in second language acquisition programs? Paper at SLRF 2014

For your convenience, I provide two versions of this presentation: the slide deck:

And a screencast of my presentation:

(Unfortunately, PowerPoint 2013 seems to have introduced a bug in alignment of narration and video. If they fix it, I will republish),

How to fix primary screen on Linux laptop not coming out of sleep

  1. Problem: My Debian (Jessie) Linux laptop has issues with juggling a secondary screen and sleeping at the same time. More specifically, it seems:
    1. It seems if you come out of sleep with a secondary screen connected, even if you put the laptop to sleep with “it” (o.k., not the same “it”, just spec-wise the equivalent FULL HD LCD screen on VGA – being able to easily move the laptop to work in multiple places is kind of the point of having one in the first place), the primary laptop screen seems to remain asleep completely. FN keys to switch primary and secondary screen on laptop have no effect.
    2. If you disconnect the secondary screen, Linux does fall back onto the primary screen, however, “forgets” to turn the backlight on. FN keys to up brightness have no effect
    3.   have not found a reliable way avoiding the issue  – maybe always disconnecting secondary screen before putting laptop to sleep? If you don’t want to have to do this, or forget, try to use this:
  2. Workaround:
    1. While I could get to the tty shell on secondary screen using CTRL+ALT+F1, but using xrandr --auto gave can't open display.
    2. However, try installing this utility which I found recommended in a different context:
      1. aptitude search xbacklight
      2. xbacklight               - simple utility to set the backlight level
      3. aptitude install xbacklight
      4. Switch to a non-elevated user (or else you’ll get: No protocol specified" , "Primary laptop", "Can't open display :0", Why can't I run GUI apps from 'root': "No protocol specified"? : " In Debian $XAUTHORITY is usually not set explicitly.", "xauth list xauth:  file /root/.Xauthority does not exist" ).
      5. Then issue: xbacklight -set 50 OR issue xbacklight -inc 50.
      6. Viola: “Fiat lux”…
      7. Sleep takes out your primary screen and you are not good at blind starting, finding and typing into your Konsole? Right-click on the desktop of your secondary scree, “Run command”, and issue the same command line.
      8. Thank you, xbacklight.

How to export BMC Remedy data into Excel other than via copy-paste

  1. This question came up during consulting (Disclaimer: BMC provides non-customers only limited access to online documentation and trial software).
  2. BMC Remedy Action Request System 8.1  supports a wide variety of reports, including from a query builder, and editing of reports, using the free Eclipse data visualization and reporting plugin BIRT, and exports of reports in a wide variety of formats, including Excel ( you can find more on Exporting to Excel in these articles).
  3. BMC can also read excel and other data: “Data Management is a web-enabled dataload tool that enables you to import data into your system” (source) .
  4. BMC Remedy provides ODBC connectivity (note: read-only , so no round-tripping!). Applications that have been used with this feature include Access, Crystal Reports and Excel. In principal, querying an ODBC data source from Excel (2007 and up) works like this:
  5. On the Excel machine, install the BMC-provided ODBC driver into ODBCINST.INI (contains information about ODBC drivers available system-wide).
  6. Create an ODBC connection, save office data connection files as .odc  file for easy reuse.
  7. Query the Remedy database  using SQL from ribbon: ” Data” / section:”Get External Data”:”From other sources”/ menu item: “From Microsoft Query”, select the Remedy Database, clear “Use the Query Wizard”, log in, in “Microsoft Query” window, add Remedy data tables, then columns to display, then go to menu: “File”/ “Return Data to Microsoft Office Excel”.
  8. Some BMC-ODBC-driver-specific limitations are covered in BMC Remedy AR System ODBC considerations
  9. If the exact required functionality is not built in, BMC remedy also provides extension points for developing plugins. See Application development with BMC Remedy Developer Studio, which happens with  using BMC Remedy Developer Studio, a freely downloadable add-on which can be enabled by a vendor call

VBA script to more easily examine the properties of your Content Control-based forms

  1. The routine loops through the Content Controls and outputs properties as text into the VBA-Editor immediate window,
  2. from where it can be easily converted into an Excel-table which makes it easy t o spot and mark inconsistencies and outright oversights, like so: image
Sub ccPropertiesPrint()
On Error Resume Next
Dim strHeadings, strProps As String
Dim count As Integer
Dim response

strHeadings = strHeadings & "~" & "count"
strHeadings = strHeadings & "~" & "Tag"
strHeadings = strHeadings & "~" & "Title"
strHeadings = strHeadings & "~" & "Type"
strHeadings = strHeadings & "~" & "DefaultTextStyle"
strHeadings = strHeadings & "~" & "Application"
strHeadings = strHeadings & "~" & "BuildingBlockCategory"
strHeadings = strHeadings & "~" & "BuildingBlockType"
'strHeadings = strHeadings & "~" & "Checked"
'strHeadings = strHeadings & "~" & "Creator"
'strHeadings = strHeadings & "~" & "DateCalendarType"
'strHeadings = strHeadings & "~" & "DateDisplayFormat"
'strHeadings = strHeadings & "~" & "DateDisplayLocale"
'strHeadings = strHeadings & "~" & "DateStorageFormat"
'strHeadings = strHeadings & "~" & "DropdownListEntries"
strHeadings = strHeadings & "~" & "ID"
strHeadings = strHeadings & "~" & "LockContentControl"
strHeadings = strHeadings & "~" & "LockContents"
strHeadings = strHeadings & "~" & "MultiLine"
'strHeadings = strHeadings & "~" & "Parent"
strHeadings = strHeadings & "~" & "ParentContentControl"
strHeadings = strHeadings & "~" & "PlaceholderText"
strHeadings = strHeadings & "~" & "Range"
strHeadings = strHeadings & "~" & "ShowingPlaceholderText"
strHeadings = strHeadings & "~" & "Temporary"
'strHeadings = strHeadings & "~" & "XMLMapping"
Debug.Print strHeadings
  If ActiveDocument.ContentControls.count > 0 Then
    For Each oCC In ActiveDocument.ContentControls
    'debug
    'If oCC.Type = 9 Then 'debug: repeating
count = count + 1
If count = 50 Then
'dim response = vbmsgboxresponse
    Exit For
End If
    
' useless cannot access immediate window If count = 15 Then response = MsgBox("paused", vbOKOnly) End If
strProps = "" 'start over
strProps = strProps & "~"
strProps = strProps & count 'CStr(count)
strProps = strProps & "~"
strProps = strProps & CStr(Replace(Replace(oCC.Tag, Chr(13), "#"), Chr(10), "#"))
strProps = strProps & "~"
strProps = strProps & CStr(Replace(Replace(oCC.Title, Chr(13), "#"), Chr(10), "#"))
strProps = strProps & "~"
strProps = strProps & CStr(Replace(Replace(oCC.Type, Chr(13), "#"), Chr(10), "#"))
strProps = strProps & "~"
strProps = strProps & CStr(Replace(Replace(oCC.DefaultTextStyle, Chr(13), "#"), Chr(10), "#"))
strProps = strProps & "~"
strProps = strProps & CStr(Replace(Replace(oCC.Application, Chr(13), "#"), Chr(10), "#"))
strProps = strProps & "~"
strProps = strProps & CStr(Replace(Replace(oCC.BuildingBlockCategory, Chr(13), "#"), Chr(10), "#"))
strProps = strProps & "~"
strProps = strProps & CStr(Replace(Replace(oCC.BuildingBlockType, Chr(13), "#"), Chr(10), "#"))
'strProps = strProps & "~"
'strProps = strProps & CStr(Replace(Replace(oCC.Checked, Chr(13), "#"), Chr(10), "#"))
'strProps = strProps & "~"
'strProps = strProps & CStr(Replace(Replace(oCC.Creator, Chr(13), "#"), Chr(10), "#"))
'strProps = strProps & "~"
'strProps = strProps & CStr(Replace(Replace(oCC.DateCalendarType, Chr(13), "#"), Chr(10), "#"))
'strProps = strProps & "~"
'strProps = strProps & CStr(Replace(Replace(oCC.DateDisplayFormat, Chr(13), "#"), Chr(10), "#"))
'strProps = strProps & "~"
'strProps = strProps & CStr(Replace(Replace(oCC.DateDisplayLocale, Chr(13), "#"), Chr(10), "#"))
'strProps = strProps & "~"
'strProps = strProps & CStr(Replace(Replace(oCC.DateStorageFormat, Chr(13), "#"), Chr(10), "#"))
'strProps = strProps & "~"
'strProps = strProps & CStr(Replace(Replace(oCC.DropdownListEntries.count, Chr(13), "#"), Chr(10), "#"))
strProps = strProps & "~"
strProps = strProps & CStr(Replace(Replace(oCC.ID, Chr(13), "#"), Chr(10), "#"))
strProps = strProps & "~"
strProps = strProps & CStr(Replace(Replace(oCC.LockContentControl, Chr(13), "#"), Chr(10), "#"))
strProps = strProps & "~"
strProps = strProps & CStr(Replace(Replace(oCC.LockContents, Chr(13), "#"), Chr(10), "#"))
strProps = strProps & "~"
strProps = strProps & CStr(Replace(Replace(oCC.MultiLine, Chr(13), "#"), Chr(10), "#"))
'strProps = strProps & "~"
'strProps = strProps & CStr(Replace(Replace(oCC.Parent, Chr(13), "#"), Chr(10), "#"))
strProps = strProps & "~"
strProps = strProps & CStr(Replace(Replace(oCC.ParentContentControl, Chr(13), "#"), Chr(10), "#"))
strProps = strProps & "~"
strProps = strProps & CStr(Replace(Replace(oCC.PlaceholderText, Chr(13), "#"), Chr(10), "#"))
strProps = strProps & "~"
strProps = strProps & CStr(Replace(Replace(oCC.Range, Chr(13), "#"), Chr(10), "#"))
strProps = strProps & "~"
strProps = strProps & CStr(Replace(Replace(oCC.ShowingPlaceholderText, Chr(13), "#"), Chr(10), "#"))
strProps = strProps & "~"
strProps = strProps & CStr(Replace(Replace(oCC.Temporary, Chr(13), "#"), Chr(10), "#"))
'strProps = strProps & "~"
'strProps = strProps & CStr(Replace(Replace(oCC.XMLMapping, Chr(13), "#"), Chr(10), "#"))
Debug.Print vbCrLf & strProps & vbCrLf
'End If 'oCC.Type=9  then 'debug: repeating
 Next
 End If
End Sub

Expanding the Review and Modify Content Control Properties to include Repeating Sections

  1. Greg Maxey provides a lot of useful information on MS-Word content Controls, including a VBA utility to more easily loop through the properties and placeholder text dialogue of Content Controls when building your MS-Word forms.
  2. Unfortunately, the latter bit fails with nested repeating (wdContentControlRepeatingSection):
  3. The debugger shows that it Errors on non placeholder text of repeating controls set to
  4. “.txtPHText = oCC.PlaceholderText” which it breaks into, and a watch put on oCC shows:
  5. The form 1 (display of inbuilt form ) works and is useful also for wdContentControlRepeatingSection, while form 2 has no use for wdContentControlRepeatingSection. So as a workaround, we just do not show form 2 if placeholder text isNothing:
  6. We have no pretension to redistribute, get the utility from Greg’s website, it is open and you can extend it with above, if you need to.
Sub CCPropertiesReviewModify()
    Dim oFrm As frmCC
    bCancel = False
    
    If ActiveDocument.ContentControls.Count > 0 Then
        For Each oCC In ActiveDocument.ContentControls
            oCC.Range.Select
            Dialogs(wdDialogContentControlProperties).Show
            Set oFrm = New frmCC
            
            If Not isNothing(oCC.PlaceholderText) Then 'trp
                With oFrm
                    .Caption = oCC.Title
                    .txtPHText = oCC.PlaceholderText
                    .Show
                End With
           End If
        If bCancel Then Exit For
        Next oCC
        
        Unload oFrm
        Set oFrm = Nothing
    Else
    MsgBox "This document does not contain any Content Controls.", vbInformation, "Review\Set Content Control Properties"
    End If
lbl_Exit:       Exit Sub
End Sub

Now what about wdContentControlGroup?

Has the “text effects” cheese been moved only in Word 2013 styles?

Used to have its own separate button – don’t despair, it is still there, now under the “Format” button:

word-styles-text-effects-

We can nest controls in repeating content controls, including repeating content controls

  1. Just saying, since it seems not easy to find within web search results the ones that nest nesting….
  2. image
  3. image
  4. Have not tried accessing the results in OpenXML yet which will have to be done  via the control ID
    1. since repeating:  Repeating-Section-content-control-in-action
    2. does not autoincrement the titles and tags. image