+ Reply to Thread
Results 1 to 3 of 3

Problem with R1C1 in Formulae when Running Code

Hybrid View

  1. #1
    Registered User
    Join Date
    06-15-2023
    Location
    POland
    MS-Off Ver
    365
    Posts
    1

    Problem with R1C1 in Formulae when Running Code

    Hello,

    In my place i'm using vba script to paste ready table to email.
    It's working okay but problem appear when users are using R1C1 style in Excel formulas.
    That code is making problem:
    Dim rng As Range
    Set rng = Range("A:C")


    i was trying to replace it with Cells() but without success.
    when i do it i have new sheet without email pasted.

    Could you please help me to solve that issue? How to change the Range to working for both ways of formulas.

    Thats all the code:

    
    
    Sub Paste_Range_Outlook()
    Dim rng As Range
    Dim Outlook As Object
    Dim OutlookMail As Object
    Set rng = Nothing
    On Error Resume Next
    
    
    Set rng = Range("A:C")
    
    
    On Error GoTo 0
    If rng Is Nothing Then
    MsgBox "Not a range or protected sheet" & _
    vbNewLine & "please correct and try again.", vbOKOnly
    Exit Sub
    End If
    With Application
    .EnableEvents = False
    .ScreenUpdating = False
    End With
    Set Outlook = CreateObject("Outlook.Application")
    Set OutlookMail = Outlook.CreateItem(0)
    On Error Resume Next
    With OutlookMail
    .To = ""
    .CC = ""
    .BCC = ""
    .Subject = " " & Date
    .HTMLBody = RangetoHTML(rng)
    .Display 'or use .Send
    End With
    On Error GoTo 0
    With Application
    .EnableEvents = True
    .ScreenUpdating = True
    End With
    Set OutlookMail = Nothing
    Set Outlook = Nothing
    End Sub
    Function RangetoHTML(rng As Range)
    Dim obj As Object
    Dim txtstr As Object
    Dim File As String
    Dim WB As Workbook
    File = Environ$("temp") & "" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
    rng.Copy
    Set WB = Workbooks.Add(1)
    With WB.Sheets(1)
    .Cells(1).PasteSpecial Paste:=8
    .Cells(1).PasteSpecial xlPasteValues, , False, False
    .Cells(1).PasteSpecial xlPasteFormats, , False, False
    .Cells(1).Select
    Application.CutCopyMode = False
    On Error Resume Next
    .DrawingObjects.Visible = True
    .DrawingObjects.Delete
    On Error GoTo 0
    End With
    With WB.PublishObjects.Add( _
    SourceType:=xlSourceRange, _
    Filename:=File, _
    Sheet:=WB.Sheets(1).Name, _
    Source:=WB.Sheets(1).UsedRange.Address, _
    HtmlType:=xlHtmlStatic)
    .Publish (True)
    End With
    Set obj = CreateObject("Scripting.FileSystemObject")
    Set txtstr = obj.GetFile(File).OpenAsTextStream(1, -2)
    RangetoHTML = txtstr.readall
    txtstr.Close
    RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
    "align=left x:publishsource=")
    WB.Close savechanges:=False
    Kill File
    Set txtstr = Nothing
    Set obj = Nothing
    Set WB = Nothing
    End Function
    Last edited by Maciej Bocian; 06-15-2023 at 03:31 AM.

  2. #2
    Forum Moderator AliGW's Avatar
    Join Date
    08-10-2013
    Location
    Retired in Ipswich, Suffolk, but grew up in Sawley, Derbyshire (both in England)
    MS-Off Ver
    MS 365 Subscription Insider Beta Channel v. 2503 (Windows 11 Home 24H2 64-bit)
    Posts
    90,480

    Re: Problem with R1C1 in Formulae when Running Code

    Administrative Note:

    Welcome to the forum.

    You need to read the forum rules regarding thread titles and code tags.

    We would very much like to help you with your query, however the thread title does not really convey what your request is about. Tell us what you are trying to do, not how you think it should be done.

    Please take a moment to amend your thread title. Make sure that the title properly explains your request. Your title should be explicit and not be generic (this includes function names used without an indication of what you are trying to achieve).

    Please see Forum Rule #1 about proper thread titles and adjust accordingly. To edit the thread title, open the original post to edit and then click on Go Advanced (bottom right) to access the area where you can edit your title.

    (Note: this change is not optional. As you are new here, I have done it for you this time.)
    Ali


    Enthusiastic self-taught user of MS Excel who's always learning!
    Don't forget to say "thank you" in your thread to anyone who has offered you help. It's a universal courtesy.
    You can reward them by clicking on * Add Reputation below their user name on the left, if you wish.

    NB:
    as a Moderator, I never accept friendship requests.
    Forum Rules (updated August 2023): please read them here.

  3. #3
    Spammer
    Join Date
    10-23-2012
    Location
    Adelaide, Australia
    MS-Off Ver
    Excel 2003, Office 365
    Posts
    1,237

    Re: Problem with R1C1 in Formulae when Running Code

    Untested...but maybe something like this?
        If Application.ReferenceStyle = xlR1C1 Then
            Set rng = Range(Cells(1, 1), Cells(999, 3))
        Else
            Set rng = Range("A:C")
        End If

+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1