I have started to work on a book project which requires several texts from the King James Version of the Bible to be included. Rather than type each text into the book, I wondered if there might be a better way.
KJV Bible in Excel Format
I searched online for "King James Version Excel," and found the following link to be helpful:The Spreadsheet Page > King James Bible
However, when I viewed the Excel workbook after downloading, I realized that each book of the Bible (a total of 66) was included its own individual spreadsheet. In ordinary circumstances multiple spreadsheets would not be a problem, but 66 spreadsheets - far too many.
Combining Multiple Worksheets
Thus, I returned to the Internet to search for some technique to combine multiple Excel worksheets into one. The best option I found is the one listed below. The Visual Basic code combines all of the worksheets into a new worksheet entitled "Master."VBA Express > Combine All Worksheets Into One
The code as written works well for the Microsoft Windows version of Excel. However, it only merged the first column of data on the Mac version of Excel. The Visual Basic code automatically calculates the number of columns to import. When I manually entered the number of columns (2 in my case), the code worked perfectly.
All of the worksheets should have the same structure with neatly arranged data and the same number of columns. A large number of worksheets takes a few seconds to process, but the end result saved a lot of time.
You can find my combined file at the link below.
King James Version Bible
The Code (for Mac)
The modified code is below. To use (Mac instructions)1. Copy the code below. Note the highlighted code below to specify the number of columns.
2. Open the workbook that contains worksheets you want to combine.
3. Click on the Developer tab and choose Visual Basic. Activate the Developer tab by selecting Preferences > View and place a check by "In Ribbon, show Developer tab."
4. Expand the folders until it appears like this:
5. Paste in the copied code.
6. Run the code using the Play button.
7. You should see the progress displayed in the status bar.
Sub CopyFromWorksheets() Dim wrk As Workbook 'Workbook object - Always good to work with object variables Dim sht As Worksheet 'Object for handling worksheets in loop Dim trg As Worksheet 'Master Worksheet Dim rng As Range 'Range object Dim colCount As Integer 'Column count in tables in the worksheets Set wrk = ActiveWorkbook 'Working in active workbook For Each sht In wrk.Worksheets If sht.Name = "Master" Then MsgBox "There is a worksheet called as 'Master'." & vbCrLf & _ "Please remove or rename this worksheet since 'Master' would be" & _ "the name of the result worksheet of this process.", vbOKOnly + vbExclamation, "Error" Exit Sub End If Next sht 'We don't want screen updating Application.ScreenUpdating = False 'Add new worksheet as the last worksheet Set trg = wrk.Worksheets.Add(After:=wrk.Worksheets(wrk.Worksheets.Count)) 'Rename the new worksheet trg.Name = "Master" 'Get column headers from the first worksheet 'Column count first Set sht = wrk.Worksheets(1) colCount = 2 'Now retrieve headers, no copy&paste needed With trg.Cells(1, 1).Resize(1, colCount) .Value = sht.Cells(1, 1).Resize(1, colCount).Value 'Set font as bold .Font.Bold = True End With 'We can start loop For Each sht In wrk.Worksheets 'If worksheet in loop is the last one, stop execution (it is Master worksheet) If sht.Index = wrk.Worksheets.Count Then Exit For End If 'Data range in worksheet - starts from second row as first rows are the header rows in all worksheets Set rng = sht.Range(sht.Cells(2, 1), sht.Cells(65536, 1).End(xlUp).Resize(, colCount)) 'Put data into the Master worksheet trg.Cells(65536, 1).End(xlUp).Offset(1).Resize(rng.Rows.Count, rng.Columns.Count).Value = rng.Value Next sht 'Fit the columns in Master worksheet trg.Columns.AutoFit 'Screen updating should be activated Application.ScreenUpdating = True End Sub
No comments:
Post a Comment