bdavis6290
New member
- Local time
- Today, 18:10
- Joined
- Jun 2, 2014
- Messages
- 9
:banghead::banghead::banghead::banghead::banghead:I wrote some code in Office 2010, when I upgraded to Office 2016 my code stop working when it is gets to the writting stage of the code. Instead of creating a new Excel and writing data, it keeps creating a blank Excel. This exact code works in Office 2010. I attached a picture with my reference from 2010 (left) and 2016 (right). Any help is greatly appreciated
Public Sub dbcodeexport(ByVal exportfile As String, ByVal exportdir As String)
On Error GoTo errorx
'Variables
Dim db As Database
Dim rs As DAO.Recordset
Set db = CurrentDb 'Open Database
Dim dbnum As String
Dim ename As String
Dim Pcode As String
Dim pname As String
Dim sqdone As String
Dim sqtest As Integer
Dim charge As Currency
'Excel Variables
Dim xlApp As Excel.Application
Dim wb As Workbook
Dim ws As Worksheet
Set xlApp = New Excel.Application 'Start The Excel Control
stsq:
Set rs = db.OpenRecordset("tblProviderAggFinal", dbOpenDynaset)
nextx:
If rs.EOF Then
GoTo endsq
End If
ename = rs.Fields("SpecialtyCode")
If Len(ename) > 2 Then
ename = Mid(ename, 1, 2)
End If
sqtest = InStr(sqdone, ename)
If sqtest > 0 Then
rs.MoveNext
GoTo nextx
Else
dbnum = ename
sqdone = sqdone & "<" & ename & ">"
End If
'Excel Renaming
Set rs = db.OpenRecordset("tblSpecialty", dbOpenDynaset)
startE:
If rs.EOF Then GoTo endE
ename = rs.Fields("Provider_Specialty_Code")
If ename = dbnum Then
ename = rs.Fields("Specialty")
GoTo endE
End If
rs.MoveNext
GoTo startE
endE:
ename = Replace(ename, ":", ",")
ename = Replace(ename, "/", ",")
ename = Replace(ename, "", ",")
'Copying Excel
Dim fs As Object
Set fs = CreateObject("Scripting.FileSystemObject")
fs.CopyFile exportfile, exportdir & ename & " " & dbnum & ".xlsx"
'Excel Setup
Set wb = xlApp.Workbooks.Open(exportdir & ename & " " & dbnum & ".xlsx") 'Open The Excel File
On Error Resume Next
Set ws = wb.sheets(dbnum)
If ws Is Nothing Then GoTo endx
'Writing Stage
Set rs = db.OpenRecordset("SELECT * FROM tblProviderAggFinal ORDER BY Provider DESC", dbOpenDynaset)
start:
If rs.EOF = True Then
GoTo endx
End If
Pcode = rs.Fields("SpecialtyCode")
If Len(Pcode) > 2 Then
Pcode = Mid(Pcode, 1, 2)
End If
charge = rs.Fields("SumOfChargeAmt")
If Pcode = dbnum Then
If charge >= 150000 Then
pname = rs.Fields("Provider")
Dim pagename As String
If InStr(pname, ",") > 0 Then
pagename = Mid(pname, 1, InStr(pname, ",") + -1)
Else
pagename = Mid(pname, 1, InStr(pname, ";") + -1)
End If
ws.Copy wb.sheets(1)
wb.sheets(1).Name = pagename
Set ws = wb.Worksheets(1)
Dim testval As String
' testval = ""
' On Error Resume Next
' testval = ws.Range("a8").Value
' If InStr(testval, ",") > 0 Then
' ws.Range("a8").Value = pname
' GoTo edofset
' End If
testval = ""
On Error Resume Next
testval = ws.Range("a9").Value
If InStr(testval, ",") > 0 Then
ws.Range("a9").Value = pname
GoTo edofset
End If
testval = ""
On Error Resume Next
testval = ws.Range("a10").Value
If InStr(testval, ",") > 0 Then
ws.Range("a10").Value = pname
GoTo edofset
End If
testval = ""
On Error Resume Next
testval = ws.Range("a11").Value
If InStr(testval, ",") > 0 Then
ws.Range("a11").Value = pname
GoTo edofset
End If
testval = ""
On Error Resume Next
testval = ws.Range("a12").Value
If InStr(testval, ",") > 0 Then
ws.Range("a12").Value = pname
GoTo edofset
End If
'Test for ; between the provider last name and first name
testval = ""
On Error Resume Next
testval = ws.Range("a8").Value
If InStr(testval, ";") > 0 Then
ws.Range("a8").Value = pname
GoTo edofset
End If
testval = ""
On Error Resume Next
testval = ws.Range("a9").Value
If InStr(testval, ";") > 0 Then
ws.Range("a9").Value = pname
GoTo edofset
End If
testval = ""
On Error Resume Next
testval = ws.Range("a10").Value
If InStr(testval, ";") > 0 Then
ws.Range("a10").Value = pname
GoTo edofset
End If
testval = ""
On Error Resume Next
testval = ws.Range("a11").Value
If InStr(testval, ";") > 0 Then
ws.Range("a11").Value = pname
GoTo edofset
End If
testval = ""
On Error Resume Next
testval = ws.Range("a12").Value
If InStr(testval, ";") > 0 Then
ws.Range("a12").Value = pname
GoTo edofset
End If
edofset:
End If
End If
rs.MoveNext
GoTo start
endx:
xlApp.Application.DisplayAlerts = False
xlApp.Save
xlApp.Application.DisplayAlerts = False
xlApp.Application.Quit
GoTo stsq
errorx:
status = "Error please contact your admin"
endsq:
'Saving Stage
xlApp.Application.DisplayAlerts = False
xlApp.Application.Quit
End Sub
Option Compare DatabasePublic Sub dbcodeexport(ByVal exportfile As String, ByVal exportdir As String)
On Error GoTo errorx
'Variables
Dim db As Database
Dim rs As DAO.Recordset
Set db = CurrentDb 'Open Database
Dim dbnum As String
Dim ename As String
Dim Pcode As String
Dim pname As String
Dim sqdone As String
Dim sqtest As Integer
Dim charge As Currency
'Excel Variables
Dim xlApp As Excel.Application
Dim wb As Workbook
Dim ws As Worksheet
Set xlApp = New Excel.Application 'Start The Excel Control
stsq:
Set rs = db.OpenRecordset("tblProviderAggFinal", dbOpenDynaset)
nextx:
If rs.EOF Then
GoTo endsq
End If
ename = rs.Fields("SpecialtyCode")
If Len(ename) > 2 Then
ename = Mid(ename, 1, 2)
End If
sqtest = InStr(sqdone, ename)
If sqtest > 0 Then
rs.MoveNext
GoTo nextx
Else
dbnum = ename
sqdone = sqdone & "<" & ename & ">"
End If
'Excel Renaming
Set rs = db.OpenRecordset("tblSpecialty", dbOpenDynaset)
startE:
If rs.EOF Then GoTo endE
ename = rs.Fields("Provider_Specialty_Code")
If ename = dbnum Then
ename = rs.Fields("Specialty")
GoTo endE
End If
rs.MoveNext
GoTo startE
endE:
ename = Replace(ename, ":", ",")
ename = Replace(ename, "/", ",")
ename = Replace(ename, "", ",")
'Copying Excel
Dim fs As Object
Set fs = CreateObject("Scripting.FileSystemObject")
fs.CopyFile exportfile, exportdir & ename & " " & dbnum & ".xlsx"
'Excel Setup
Set wb = xlApp.Workbooks.Open(exportdir & ename & " " & dbnum & ".xlsx") 'Open The Excel File
On Error Resume Next
Set ws = wb.sheets(dbnum)
If ws Is Nothing Then GoTo endx
'Writing Stage
Set rs = db.OpenRecordset("SELECT * FROM tblProviderAggFinal ORDER BY Provider DESC", dbOpenDynaset)
start:
If rs.EOF = True Then
GoTo endx
End If
Pcode = rs.Fields("SpecialtyCode")
If Len(Pcode) > 2 Then
Pcode = Mid(Pcode, 1, 2)
End If
charge = rs.Fields("SumOfChargeAmt")
If Pcode = dbnum Then
If charge >= 150000 Then
pname = rs.Fields("Provider")
Dim pagename As String
If InStr(pname, ",") > 0 Then
pagename = Mid(pname, 1, InStr(pname, ",") + -1)
Else
pagename = Mid(pname, 1, InStr(pname, ";") + -1)
End If
ws.Copy wb.sheets(1)
wb.sheets(1).Name = pagename
Set ws = wb.Worksheets(1)
Dim testval As String
' testval = ""
' On Error Resume Next
' testval = ws.Range("a8").Value
' If InStr(testval, ",") > 0 Then
' ws.Range("a8").Value = pname
' GoTo edofset
' End If
testval = ""
On Error Resume Next
testval = ws.Range("a9").Value
If InStr(testval, ",") > 0 Then
ws.Range("a9").Value = pname
GoTo edofset
End If
testval = ""
On Error Resume Next
testval = ws.Range("a10").Value
If InStr(testval, ",") > 0 Then
ws.Range("a10").Value = pname
GoTo edofset
End If
testval = ""
On Error Resume Next
testval = ws.Range("a11").Value
If InStr(testval, ",") > 0 Then
ws.Range("a11").Value = pname
GoTo edofset
End If
testval = ""
On Error Resume Next
testval = ws.Range("a12").Value
If InStr(testval, ",") > 0 Then
ws.Range("a12").Value = pname
GoTo edofset
End If
'Test for ; between the provider last name and first name
testval = ""
On Error Resume Next
testval = ws.Range("a8").Value
If InStr(testval, ";") > 0 Then
ws.Range("a8").Value = pname
GoTo edofset
End If
testval = ""
On Error Resume Next
testval = ws.Range("a9").Value
If InStr(testval, ";") > 0 Then
ws.Range("a9").Value = pname
GoTo edofset
End If
testval = ""
On Error Resume Next
testval = ws.Range("a10").Value
If InStr(testval, ";") > 0 Then
ws.Range("a10").Value = pname
GoTo edofset
End If
testval = ""
On Error Resume Next
testval = ws.Range("a11").Value
If InStr(testval, ";") > 0 Then
ws.Range("a11").Value = pname
GoTo edofset
End If
testval = ""
On Error Resume Next
testval = ws.Range("a12").Value
If InStr(testval, ";") > 0 Then
ws.Range("a12").Value = pname
GoTo edofset
End If
edofset:
End If
End If
rs.MoveNext
GoTo start
endx:
xlApp.Application.DisplayAlerts = False
xlApp.Save
xlApp.Application.DisplayAlerts = False
xlApp.Application.Quit
GoTo stsq
errorx:
status = "Error please contact your admin"
endsq:
'Saving Stage
xlApp.Application.DisplayAlerts = False
xlApp.Application.Quit
End Sub