41 
We  must  not  wax  philosophical.  Much  of  contemporary  learning  is  prompted  and 
structured by developments of computing, down to the advent of a new piece of software, 
or the different use of an existing one. This is the situation that frames text analysis also 
in the humanitarian and development fields. The tools offered here, if they are any good, 
will speed up our understanding of texts, yet not leave it less profound. 
Pdf form save with reader - C# PDF Field Edit Library: insert, delete, update pdf form field in C#.net, ASP.NET, MVC, Ajax, WPF
Online C# Tutorial to Insert, Delete and Update Fields in PDF Document
chrome save pdf form; allow users to save pdf form
Pdf form save with reader - VB.NET PDF Field Edit library: insert, delete, update pdf form field in vb.net, ASP.NET, MVC, Ajax, WPF
How to Insert, Delete and Update Fields in PDF Document with VB.NET Demo Code
add submit button to pdf form; best program to create pdf forms
42 
Appendices 
Excel search term flagging formulas 
Step 1 of the three-step procedure outlined on pages 22 sqq. requires the creation of 
binary  variables  to  indicate  (“flag”)  the  presence  or  not,  in  the  concerned  text  field 
(“Comment”), of selected search terms of interest. For each term, a separate binary is 
created; the term is the field name and thus bolded in the top row. This image holds the 
same information of interest as the table in the main body, plus (yellow) the area of 
indicator variables as well as the formula bar, with the formula used in the active cell 
R2C2 (cell I2 in “A1”-notation). 
Figure 9: Screenshot of a log book-like table, with search term indicator variables 
In this example, the three questions of interest are – whether the event was a training 
event,  whether  the  Dalit  community  was  mentioned  (as  participants,  or  in  other 
situations),  and  whether  a  reference  to  the  empowerment  concept  was  made.  The 
corresponding indicator variables take the value “1” if the term occurred in the comment, 
and “0” if it was absent. The results are shown in the yellow area. 
The composite formula  
=IF(ISERROR(SEARCH(R1C,RC7,1))=FALSE,1,0) 
is used to calculate the indicator values. At first sight, it looks daunting. Yet it simply 
exploits a combination of text search, error reporting and IF functions. As an added bonus, 
mixed cell references are used to make the formula identically usable for alls search term 
fields (yellow columns) and event records (rows).  The clarity of mixed references in 
R1C1-style is one of the reasons why this notation is preferable.  
We break the formula open starting from the inside. In this example, we use a comment 
for which the result is 0, i.e. the term is not present. The logic is the same for terms 
present, as the dissection of the formula below will make clear. Novice readers may want 
to first study the explanations that Excel’s Help function offers for the functions involved. 
C# PDF: PDF Document Viewer & Reader SDK for Windows Forms
SaveFile(String filePath): Save PDF document file to a specified path form (Here, we take a blank form as an open a file dialog and load your PDF document in
change font size pdf fillable form; change font in pdf form field
VB.NET Image: How to Save Image & Print Image Using VB.NET
printing multi-page document files, like PDF and Word is used to illustrate how to save a sample RE__Test Public Partial Class Form1 Inherits Form Public Sub New
pdf form save in reader; build pdf forms
43 
R2C9 is the active cell (blue border). It returns “0” because the search term “Dalit” does 
not occur in the comment field of record no. 1. How did we get this result? 
Table 10: Deconstructing the formula 
Functions 
used 
in 
formula: 
How it works: 
Formula 
result: 
=SEARCH(R1C,RC7,1) 
The reference R1C in “=SEARCH” directs Excel to copy the 
search term in row 1 and in the same column as the active cell. 
Here, this is “Dalit”. The second argument, RC7, fetches the 
text to be searched, from the same row as the active cell, and 
in  column 7.  The third argument  (“1”) instructs to begin  the 
search  with  the  first  character  of  the  text  to  be  searched. 
However, in the targeted cell R2C7 “Dalit” does not occur. 
“SEARCH” cannot find the desired term and therefore sends 
the error message "#VALUE!" 
#VALUE! 
[If it found it, it would send a number (the position of the search 
term within the text), not an error] 
We embrace “SEARCH” in the function “=ISERROR”, to tell us 
if this indeed is an error: 
=ISERROR(SEARCH(R1C,RC7,1)) 
It returns "TRUE", "Yes, this is an error" 
TRUE 
Now that we know whether the search term occurs in the text or 
not, we add another function, “=IF”. This formula tells Excel to 
return "1" if there is no error, i.e. the term occurs somewhere in 
the text. It returns "0" if there is an error, i.e., the text does not 
contain any of the strings "Dalit" or "Dalits" or "dalit". 
=IF(ISERROR(SEARCH(R1C,RC7,1))=FALSE,1,0) 
“=IF(ISERROR(SEARCH(R1C,RC7,1))=TRUE,0,1)”  does  the 
same and may be more cogent in the minds of some. 
The formula is convenient for two reasons. First, no matter how many search terms are of 
interest, and how many event records the table holds, the formula can be copied and 
pasted  identical  to  the entire target range. Second, if  a search term  is changed  (say, 
instead of searching for “Dalit” you wish to find occurrences of “women”), the results 
will automatically be updated. There is no need to change any formulas; just replace the 
search term in the cell of the top row
22
Excel macros 
Term frequencies in external documents 
This macro (for MS Word documents) and the following (for .txt documents) require MS 
Word to be installed. They can be placed – by copying the entire text here in Courier 
New font – in any one of three different locations: 
22
Haynes (2009), using a similar formula, reports an application from an accounting department that used a 
text field to record reasons for delayed payments. Three columns were used to flag the most common 
reasons, a forth for prompt payments. These flags helped to reduce the initial set of 300,000 payment 
records to the roughly 100,000 that were of special interest to a research project. 
C# PDF File Merge Library: Merge, append PDF files in C#.net, ASP.
Merge Microsoft Office Word, Excel and PowerPoint data to PDF form. Append one PDF file to the end of another and save to a single PDF file.
chrome save pdf with fields; pdf form save
VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
this RasterEdge XDoc.PDF SDK, you can simply delete a single page from a PDF document using VB.NET or remove any page from a PDF document and save to local
changing font size in pdf form; add form fields to pdf without acrobat
44 
•  By  right-clicking  the  sheet  name  tab  of  the  worksheet  that  is  to  hold  the 
frequencies, then clicking “View code”, the Excel VBA editor opens a space for 
macros and functions reserved to affect this particular worksheet
. If stored here, 
the macros can be used only in this sheet. 
•  By inserting a module, in the VBA editor, for this workbook
, or adding the code 
to an existing module, the macros will be available to work in any worksheets of 
any open workbook as long as the macro-holding workbook stays open. 
•  Some users may have an invisible template workbook
that loads at Excel startup, 
most often named “Personal.xls”. When macros are placed in a module here, they 
will be available to all open workbooks any time and in all worksheets. 
Here starts the macro code: 
Sub FreqGivenTermsMSWorddocs() 
'Excel macro to calculate frequency of search string in several Word documents 
'Search strings to use must be listed in the leftmost column of the active sheet, 
'starting in row 2. (Cell R1C1 or A1 can be used as a title "SearchTerms") 
'The macro writes the document names in the top row, starting in R1C2 (or "B2"). 
'In the row below the word frequency matrix, it writes the total word count 
'for each document. 
'Example of a segment of the resulting table: 
'searchstrings   test1.doc   test2.doc 
'xxx 2   2 
'yy  1   7 
'aa  0   1 
'xxxx    1   1 
'TotalWordsInDoc 4   6 
' where 7 means that the string "yy" occurs 7 times in document test2.doc. 
'Written by Aldo Benini, 5 June 2009 
'In part adapted from a macro written by Ray Tweedale, 
'"Import WILDCARD search to EXCEL from WORD", 2008 
Dim sPth As String 'Path where Word docs are stored 
Dim sNam As String 'Name of Word doc file 
Dim oWrd As Object 'MS Word as an application object within Excel 
'----------------------- 
'PARAMETERS THAT YOU MUST SET: 
'1. Subdirectory where Word documents to investigate are stored: 
sPth = "C:\Aldo\A_Automap\counttest\"  
'Change as appropriate. Ensure backslash at the end. 
'2. Column 1 (or "A" depending on cell reference type) hold the search terms 
' from row 2 to the last row, without gap. Set the row number of the bottom cell 
' (the one holding the last term in your list): 
RowNoBottomList = 5 'Change as appropriate 
'------------------------ 
'Count variables that are reset to zero at the beginning of execution: 
docseqno = 0 'Sequential number of Word docs in subdir 
occur = 0    'Number of occurrences of searchterm in individual doc 
'Writes the row heading for the word counts: 
Cells(RowNoBottomList + 1, 1).FormulaR1C1 = "TotalWordsInDoc" 
C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net
to extract single or multiple pages from adobe PDF file and save into a The portable document format, known as PDF document, is a widely-used form of file
create a fillable pdf form online; pdf form creation
C# Image: Save or Print Document and Image in Web Viewer
or image, you can easily save the changes to DLL Library, including documents TIFF, PDF, Excel, Word string fileName = Request.Form["saveFileName"]; string fid
add text field to pdf acrobat; pdf form change font size
45 
'Calling MS Word: 
Set oWrd = CreateObject("Word.Application") 
oWrd.Visible = False 'Saves time, avoids opening Word docs on screen 
sNam = Dir(sPth & "*.doc") 'Read in all file names with extension .doc 
'WHILE - WEND OUTERMOST LOOP GOING THROUGH ALL .DOC FILES IN SUBDIR: 
While sNam <> "" 'Loops until empty. 
oWrd.documents.Open sPth & sNam 'Opens one document at a time 
docseqno = docseqno + 1 'Keeps a sequential number on doc currently open 
'Copies file name to spreadsheet top row, first doc name to col 2, etc.: 
Cells(1, docseqno + 1).Value = sNam 
Dim rDcm As Object 
'RUN THROUGH SEARCH TERMS IN THE ACTIVE DOCUMENT 
For Counter1 = 2 To RowNoBottomList 
searchterm = Cells(Counter1, 1).Value 
'DO FIND OPERATION 
Set rDcm = oWrd.activedocument.Range  
'"Range" implies "search all" of this document. 
'The "Set .." statement has to be here, inside the Counter1 
'structure so that every time counter value updated, will search from 
'beginning of document: 
With rDcm.Find 
.Text = searchterm 
While .Execute 
rDcm.Select 'Selects another occurrence if there is one. 
occur = occur + 1 'Updates whenever a new occurrence found. 
Wend 
'Passes the occurrence count to the cell that is at the intersection 
'of search term (row) and document name (column) in the spreadsheet: 
Cells(Counter1, docseqno + 1).Value = occur 
occur = 0 'After passing the count,  
'reset occurrence counter to zero for next search. 
End With 
' END FIND OPERATION 
Next Counter1 
'COMPLETED RUNNING THROUGH ALL SEARCH TERMS WITHIN THIS DOCUMENT 
'WORD COUNT FOR EACH DOCUMENT 
'Places the total number of words (tokens, not types!) in the row 
'immediately below the word frequency matrix. 
'This statistic is needed for calculating relative word frequencies, 
'e.g., occurrences per 10,000 words. 
nowords = oWrd.activedocument.Words.Count 
Cells(RowNoBottomList + 1, docseqno + 1).Value = nowords 
'DONE WITH THIS DOCUMENT; IT CAN BE CLOSED: 
oWrd.activedocument.Close 
sNam = Dir 
Wend 
'END OUTERMOST LOOP. DONE WITH ALL WORD DOCS IN SUBDIR. 
oWrd.Quit 
Set oWrd = Nothing 
End Sub 
Sub FreqGivenTermsTextdocs() 
'Excel macro to calculate frequency of search string in several .txt documents 
'Search strings to use must be listed in leftmost column of active sheet, 
C# PDF Convert to Tiff SDK: Convert PDF to tiff images in C#.net
Description: Convert to DOCX/TIFF with specified zoom value and save it into stream. Parameters: zoomValue, The magnification of the original PDF page size.
convert word doc to pdf with editable fields; change font size pdf form
C# Create PDF from Tiff Library to convert tif images to PDF in C#
Description: Convert to PDF and save it on the disk. Parameters: Name, Description, Valid Value. Description: Convert to PDF and save it into stream. Parameters:
add jpg to pdf form; create a fillable pdf form from a pdf
46 
'starting in row 2. (Cell R1C1 or A1 can be used as a title "SearchTerms") 
'The macro writes the document names in the top row, starting in R1C2 (or "B2"). 
'In the row below the word frequency matrix, it writes the total word count 
'for each document. 
'Example of a segment of the resulting table: 
'Searchstrings   text-001.txt text-002.txt text-003.txt 
'Lutheran    1   9   3 
'empower 1   0   0 
'TotalWordsInDoc 374 659 683 
'where "9" means that the word "Lutheran" occurs 9 times in document text-002.text, 
'which is 659 words' long. 
'Written by Aldo Benini, 5 June 2009 
'Adapted from a similar macro for Word docs, FreqGivenTermsMSWorddocs(), 
'which in part was adapted from a macro written by Ray Tweedale, 
'"Import WILDCARD search to EXCEL from WORD", 2008 
Dim sPth As String 'Path where .txt docs are stored 
Dim sNam As String 'Name of .txt file 
Dim oWrd As Object 'MS Word as an application object within Excel 
'----------------------- 
'PARAMETERS THAT YOU MUST SET: 
'1. Subdirectory where .txt documents to investigate are stored: 
sPth = "C:\Aldo\A_Automap\LWI2008\" 'Change as appropriate. Ensure backslash at the end. 
'2. Column 1 (or "A" depending on cell reference type) hold the search terms 
' from row 2 to the last row, without gap. Set the row number of the bottom cell 
' (the one holding the last term in your list): 
RowNoBottomList = 3 'Change as appropriate 
'------------------------ 
'Count variables that are reset to zero at the beginning of execution: 
docseqno = 0 'Sequential number of Word docs in subdir 
occur = 0    'Number of occurrences of searchterm in individual doc 
'Writes the row heading for the word counts: 
Cells(RowNoBottomList + 1, 1).FormulaR1C1 = "TotalWordsInDoc" 
'Calling MS Word: 
Set oWrd = CreateObject("Word.Application")  
'We use MS Word to read and search these .txt documents 
oWrd.Visible = False 'Saves time, avoids opening docs on screen 
sNam = Dir(sPth & "*.txt") 'Read in all file names with extension .txt 
'WHILE - WEND OUTERMOST LOOP GOING THROUGH ALL .txt FILES IN SUBDIR: 
While sNam <> "" 'Loops until empty. 
oWrd.documents.Open sPth & sNam 'Opens one document at a time 
docseqno = docseqno + 1 'Keeps a sequential number on doc currently open 
'Copies file name to spreadsheet top row, first doc name to col 2, etc.: 
Cells(1, docseqno + 1).Value = sNam 
Dim rDcm As Object 
'RUN THROUGH SEARCH TERMS IN THE ACTIVE DOCUMENT 
For Counter1 = 2 To RowNoBottomList 
searchterm = Cells(Counter1, 1).Value 
'DO FIND OPERATION 
Set rDcm = oWrd.activedocument.Range  
'"Range" implies "search all" of this document. 
'Has to be here, inside the Counter1 
'structure so that every time counter value updated, will search from 
'beginning of document: 
C# PDF Convert to Word SDK: Convert PDF to Word library in C#.net
key. Quick to remove watermark and save PDF text, image, table, hyperlink and bookmark to Word without losing format. Powerful components
convert word to editable pdf form; adding text fields to pdf acrobat
C# Create PDF from PowerPoint Library to convert pptx, ppt to PDF
Description: Convert to PDF/TIFF and save it on the disk. Parameters: Description: Convert to PDF/TIFF and save it into stream. Parameters:
adding images to pdf forms; pdf form creator
47 
With rDcm.Find 
.Text = searchterm 
While .Execute 
rDcm.Select 'Selects another occurrence if there is one. 
occur = occur + 1 'Updates whenever a new occurrence found. 
Wend 
'Passes the occurrence count to the cell that is at the intersection 
'of search term (row) and document name (column) in the spreadsheet: 
Cells(Counter1, docseqno + 1).Value = occur 
occur = 0  
'After passing the count, reset occurrence counter to zero for next search. 
End With 
' END FIND OPERATION 
Next Counter1 
'COMPLETED RUNNING THROUGH ALL SEARCH TERMS WITHIN THIS DOCUMENT 
'WORD COUNT FOR EACH DOCUMENT 
'Places the total number of words (tokens, not types!) in the row 
'immediately below the word frequency matrix. 
'This statistic is needed for calculating relative word frequencies, 
'e.g., occurrences per 10,000 words. 
nowords = oWrd.activedocument.Words.Count 
Cells(RowNoBottomList + 1, docseqno + 1).Value = nowords 
'DONE WITH THIS DOCUMENT; IT CAN BE CLOSED: 
oWrd.activedocument.Close 
sNam = Dir 
Wend 
'END OUTERMOST LOOP. DONE WITH ALL .txt DOCS IN SUBDIR. 
oWrd.Quit 
Set oWrd = Nothing 
End Sub 
Here ends the code of the two macros.  
Association matrix 
Explanations are given in comment lines of the code. The macro will not work unless a 
range named  
Here starts the macro code: 
Sub AssocMatrix() 
'The macro produces an asymmetrical matrix of association coefficients between the terms 
'used in a term - document frequency table: p(B | A) = (number of docs in which  
'both A and B appear) / (number of docs in which A appears). 
'Written by Aldo Benini 20 July 2009 
'WHAT THE USER MUST DEFINE 
'The user needs to name the range of the term - document frequency table "TermDocFreq". 
'This range must hold the terms (in the leftmost column) and the doc names  
'(in the top row)but must not include any cells that hold row (e.g. term occurrences  
'in the corpus, on the far right)or column totals (e.g. word counts, in the bottom row). 
Dim AssocCoef As Variant, DiagElem As Integer 
48 
'OPTIONAL PARAMETER TO SET DIAGONAL ELEMENTS TO ZERO 
'The default produces diagonal elements p(A | A) = 1. For network visualization purposes, 
'users may want to have these elements set to zero. The optional parameter 
DiagElem = 1 
'achieves that when it is set to zero. 
'Inserts a new blank sheet to hold the association matrix 
'and avoids using the same sheet name again if the user re-runs the macro: 
nosheets = Sheets.Count 
Set NewSheet = Sheets.Add(Type:=xlWorksheet) 
NewSheet.Name = "Sheet" & (nosheets + 1) & "_AssocMatrix" 
Sheets("Sheet" & (nosheets + 1) & "_AssocMatrix").Move after:=Sheets(nosheets + 1) 
TDFrows = Range("TermDocFreq").Rows.Count 
TDFcols = Range("TermDocFreq").Columns.Count 
'Counters used in "For .. To" expressions: 
'Counter1 goes through the terms of the TDF table to fetch the base term (A). 
'Counter2 goes through the terms of the TDF table to fetch the target term (B). 
'Counter3 goes through the documents to fetch the base and target term occurrences. 
'Counter4 goes through the terms to find the diagonal elements of the association matrix 
'if the user chooses to set them to zero. 
For Counter1 = 2 To TDFrows 
'Writes the row and column names of the association matrix (= copies ther terms): 
Cells(Counter1, 1).FormulaR1C1 = Range("TermDocFreq").Cells(Counter1, 1).FormulaR1C1 
Cells(1, Counter1).FormulaR1C1 = Range("TermDocFreq").Cells(Counter1, 1).FormulaR1C1 
'Calculation of association coefficients starts here: 
For Counter2 = 2 To TDFrows 
'Resets these auxiliary variable each time Counter2 moves forward: 
AssocNumerat = 0 
AssocDenom = 0 
addproduct = 0 
mult1 = 0 
mult2 = 0 
For Counter3 = 2 To TDFcols 
If Range("TermDocFreq").Cells(Counter1, Counter3) > 0 Then 
mult1 = 1 
Else 
mult1 = 0 
End If 
If Range("TermDocFreq").Cells(Counter2, Counter3) > 0 Then 
mult2 = 1 
Else 
mult2 = 0 
End If 
addproduct = mult1 * mult2 
AssocNumerat = AssocNumerat + addproduct 
AssocDenom = AssocDenom + mult1 
Next Counter3 
'After Counter3 has come to its end, transfers the value to the matrix cell: 
AssocCoef = AssocNumerat / AssocDenom 
Cells(Counter1, Counter2) = AssocCoef 
'End calculation of coefficient for given values in Counter1, Counter2 
Next Counter2 
'Next row in association matrix: 
49 
Next Counter1 
'Formats coefficients uniformly: 
Range("A1").Select 
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select 
Selection.NumberFormat = "0.00" 
Range("A1").Select 
'Sets diagonal elements to zero if DiagElem = 0 
If DiagElem = 0 Then 
For Counter4 = 2 To TDFrows 
Cells(Counter4, Counter4) = 0 
Next Counter4 
Else 
End If 
End Sub 
Here ends the code for this macro. 
Figure 8 on page 34, which uses an output of this macro, was drawn with the network 
visualization freeware “Pajek” (Batagelj and Mrvar 2009). 
The  Excel  spreadsheet  “Benini_TextAnalysisMacros090721.xls”,  loaded  with  these 
macros, is available at www.aldo-benini.org
50 
References 
Adolphs, S. (2006). Introducing electronic text analysis
. New York, Routledge. 
Altman,  M.  (2008).  "The  Impoverished  Social  Scientist's  Guide  to  Free  Statistical 
Software  and  Resources."        Retrieved  5  June  2009,  from 
http://maltman.hmdc.harvard.edu/micah_altman/socsci.shtml#TEXT
Bamberger, M., Rugh, J. and Mabry, L. (2006). RealWorld evaluation : working under 
budget, time, data, and political constraints
. Thousand Oaks, Sage Publications. 
Batagelj,  V.  and  Mrvar,  A.  (2009).  "Pajek  1.24."        Retrieved  19  July  2009,  from 
http://pajek.imfm.si/doku.php
Baulch, B. and Scott, L. (2006). Report on CPRC Workshop on Panel Surveys and Life 
History Methods [Held at the Overseas Development Institute, London, 24-25th 
February 2006]. Manchester, Chronic Poverty Research Center. 
Benini, A. (2008). Does Empowerment Work? Underlying concepts and the experience 
of  two  community  empowerment  programs  in  Cambodia  and  Tanzania. 
Washington DC. 
Benoit,  K.,  Laver,  M.  and  Lowe,  W.  (Undated).  Wordscores  for  Stata  and  R, 
Wordscores.com. 
Bryman,  A.  (2007).  "Barriers  to  Integrating  Quantitative  and  Qualitative  Research." 
Journal of Mixed Methods Research
1(1): 8-22. 
Carley, K. M. (2009). AutoMap-2.7.70 [http://www.casos.cs.cmu.edu/projects/automap]
Pittsburgh,  Carnegie Mellon  University, Center for Computational Analysis of 
Social and Organizational Systems (CASOS). 
Cortenraad, J. (2000). "Reflections from a refugee camp." UN Volunteers Retrieved 4 
May  2009,  from http://www.unv.org/en/perspectives/doc/reflections-from-a-
refugee.html
Davies, R. (2005). "Scale, complexity and the representation of theories of change: Part 
II." Evaluation
11(2): 133-149. 
Denzin, N. K. and Lincoln, Y. S. (2005). The Sage Handbook of Qualitative Research
Thousand Oaks, CA, Sage Publications Inc. 
DiRT  (2009a).  "Perform  Qualitative  Data  Analysis."  Digital  Research  Tools  Wiki 
Retrieved 
June 
2009, 
from 
http://digitalresearchtools.pbworks.com/Perform+Qualitative+Data+Analysis
DiRT (2009b). "Text Analysis Tools." Digital Research Tools Wiki Retrieved 5 June 
2009, from http://digitalresearchtools.pbworks.com/Text+Analysis+Tools
Duriau, V. J., Reger, R. K. and Pfarrer, M. D. (2007). "A content analysis of the content 
analysis  literature  in organization studies: Research themes,  data sources,  and 
methodological refinements." Organizational Research Methods
10(1): 5. 
Feinerer,  I.,  Hornik,  K.  and  Meyer,  D.  (2008).  "Text  mining  infrastructure  in  R 
[http://www.jstatsoft.org/v25/i05/paper].
" Journal of Statistical Software
25(5): 1-
54. 
Feinerer,  I. and Wild, F. (2009). "CRAN Task  View:  Natural Language Processing." 
CRAN  R  Project  Retrieved  7  June  2009,  from http://cran.r-
project.org/web/views/NaturalLanguageProcessing.html
Documents you may be interested
Documents you may be interested