Quicken into Check Register

ClaraBarton

Registered User.
Local time
Today, 02:19
Joined
Oct 14, 2019
Messages
654
I built a check register with transactions in one table and categories in another. It's a many to many relationship so there is a table between with amounts and foreign keys to both check register and categories. I have it working well but now I'd like to import several years worth of transactions from Quicken. A simple export with split categories looks like this:
12/8/2021​
Deposit ACH XXSOC SEC TYPE: XXSOC SEC ID: 9031036030 CO: XXSOC SSocial Security
692​
R
7,502.01​
12/8/2021​
ALICK S HOME MEDICAL SOUTHMedical
-26.2​
R
7,475.81​
12/9/2021​
Wal-mart--SPLIT--
-61.43​
R
7,414.38​
S
Gifts:Christmaspaydays for Carolers
-10.64​
Personalcandy
-10.68​
Household:Health & Hygienemouthwash;
-8.04​
Groceries
-32.07​
Any split amount has an S following. I can import all my transactions but I don't know how to connect the categories to them. Can you give me some ideas on where to start?
 
Any split amount has an S following. I can import all my transactions but I don't know how to connect the categories to them. Can you give me some ideas on where to start?
It all depends on the structure of your data, on the relationships between tables
There are many nuances - it is difficult to answer without knowing the main task and details
 
A simple export with split categories looks like this:
apparently the program would split your table into 2, adding fields for communication

the names of the fields are conditional, since I do not know the real ones
 

Attachments

  • Screenshot_12-0748.png
    Screenshot_12-0748.png
    43.9 KB · Views: 214
My problem is that there is nothing in the Quicken data that ties the split categories to the check other than the location in the text file.
 
My problem is that there is nothing in the Quicken data that ties the split categories to the check other than the location in the text file.
Quicken exports to an .xlsx format, correct? However, it looks like you chose the text format, instead.

You can do this with a pile of work, but it'll involve massaging the output into a format that Access CAN import first.

Try exporting to the .xlsx format. Then you can massage the data in Excel to get it closer to a layout that can be imported. I've never gotten past the point where I sigh and say it's not worth it, myself. However, if the data set is not that big, and you are willing to manually manipulate the .xlsx file, it might be worthwhile.
 
apparently the program would split your table into 2, adding fields for communication

the names of the fields are conditional, since I do not know the real ones
The problem is that this is in a text file (.txt) and it has to be further manipulated to get it into a layout that Access can import. I think what you show is the solution, but I would also imagine that this can be done more easily in an Excel output file.
 
Use the transaction report and Copy for Excel.
Paste it in Excel.

Then run some code to replicate the main transaction data to the split transactions.
That is how I handled it, then imported it into Access to manipulate.

Here is the code I used. Should get you started at least, but try as it is on a backup.

HTH
Code:
Sub Access_input()
Dim iLast_Row As Integer, iSplit As Integer
iSplit = 0
'
' Access_input Macro
' Macro recorded 17/02/2011 by Paul Steel
'
' Keyboard Shortcut: Ctrl+i
'
' Check if we have splits or have not checked before running
    iSplit = MsgBox("Any Splits to process", vbYesNoCancel)
    If iSplit = 2 Then ' Cancel selected
        Exit Sub
    End If
    
'   Find top BALANCE row and delete
    ActiveSheet.Cells(1, 1).Select
    Cells.Find(What:="BALANCE ", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
    Range(ActiveCell.Row & ":" & ActiveCell.Row - 1).Select
    Selection.Delete Shift:=xlUp
'   Find TOTAL field, select extra rows and delete
    Cells.Find(What:="TOTAL ", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
    Range(ActiveCell.Row & ":" & ActiveCell.Row + 10).Select
    Selection.Delete Shift:=xlUp
'   Now format Amount column so no commas present
    Columns("I:I").Select
    Selection.NumberFormat = "0.00"
'   Now remove empty column A
    Columns("A:A").Select
    Selection.Delete Shift:=xlToLeft
    
' Now format for splits if they exist
    If iSplit = 6 Then ' Yes was selected
        Fill_Split
    End If
    
'   Sort by date
    Cells.Select
    Range("H91").Activate
    Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal

'Now format the date column
    Columns("A:A").Select
    Selection.NumberFormat = "m/d/yyyy"
' Make sure the Payee/Cheque number have no decimal places and trim the width
    Columns("C:C").Select
    Selection.NumberFormat = "0"
    Columns("C:C").ColumnWidth = 10
    
        
' And finally move the heading to the top
'    iLast_Row = Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
'    Range("A" & iLast_Row & ":Z" & iLast_Row).Select
'   Selection.Cut
'    Rows("1:1").Select
'    Selection.Insert Shift:=xlDown
    Range("A1").Value = "Transactiondate"
    
'   Finally save the file
    Application.DisplayAlerts = False
    ChDir "C:\Users\PAUL\Documents\SSAFA"
    ActiveWorkbook.SaveAs Filename:= _
        "C:\Users\PAUL\Documents\SSAFA\Access Input.xls", FileFormat:=xlNormal, _
        Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
        CreateBackup:=False
        
    Application.DisplayAlerts = True
    
End Sub
Sub Fill_Split()
    Dim Last_Row As Long
' Find last Row for loop
    Last_Row = Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
' Now copy the data to rows left by the split function of Quicken
    Range("A1").Select
    Do While ActiveCell.Row < Last_Row
        Columns("A:A").Select
        Selection.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
            :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
            False, SearchFormat:=False).Activate
        Call Move_Cursor("Up")
        Range("A" & ActiveCell.Row & ":E" & ActiveCell.Row).Select
        Selection.Copy
        Range("A" & ActiveCell.Row + 1).Select
        ActiveSheet.Paste
Loop
    
End Sub
 
Thank you for your replies. I could not think this through until I slept on it. Here are the steps I used.:
  1. Printing the register and then exporting it into a tab-delimited Excel file works very well for manipulating it in Excel. I did a month at a time to keep it workable.
  2. A number is needed to combine the transactions. Insert a new column. put 1 in the first row and then succeeding in rows use the formula:d is =If(the balance column amount <>0, preceding number +1, +preceding number) . This gives all transactions a number. Add a separate (Quicken No) column to the Access register because this number will not match the autonumber ID.
  3. I also added a debit column: if (Amount is <0,- Amount, ""); and then a Credit column: (if Amount is >0, +Amount, "")
  4. And then a Cleared column (I use a boolean, yes/no checkbox in Access); =If(Cleared = "R",-1,0).
  5. I copy and paste these columns into values and get rid of everything I'm not importing.
  6. Make sure all columns heads match the Access field names.
  7. Import needed columns into the register table
  8. Then match the remaining columns by the added number into the categories.
It looks like a lot of work here but I use a template and it works very well.
 

Users who are viewing this thread

Back
Top Bottom