Excel VBA UserForm printscreen save as pdf












2















I have UserForm where I have button to take print screen of UserForm, paste to newly created worksheet and export it as pdf. Problems I have with current code are:



1) I want to fit print screen to one page, now it takes print screen and splits to two pages.



2) Higher resolution of print screen. Is it possible to increase resolution of print screen for more higher quality?



Code I use for button on UserForm:



Private Sub btnPrintPDF_Click()
'change to your button name
Dim pdfName As String
Dim newWS As Worksheet

Application.DisplayAlerts = False

keybd_event VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY, 0
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY, 0
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP, 0
keybd_event VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP, 0

DoEvents 'Otherwise, all of screen would be pasted as if PrtScn rather than Alt+PrtScn was used for the copy.

Set newWS = ThisWorkbook.Worksheets.Add(After:=Worksheets(Worksheets.Count))
newWS.PasteSpecial Format:="Bitmap", Link:=False, DisplayAsIcon:=False
pdfName = ThisWorkbook.Path & "" & Sheets("MAIN").Range("D14").Value & "Project_Summary" & "_" & " " & Format(Now, "yyyy-mmm-dd") & ".pdf"
newWS.ExportAsFixedFormat Type:=xlTypePDF, _
FileName:=pdfName, Quality:=xlQualityStandard, _
IncludeDocProperties:=False, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
newWS.Delete
Unload Me
Application.DisplayAlerts = True
ThisWorkbook.Sheets("MAIN").Activate
End Sub









share|improve this question



























    2















    I have UserForm where I have button to take print screen of UserForm, paste to newly created worksheet and export it as pdf. Problems I have with current code are:



    1) I want to fit print screen to one page, now it takes print screen and splits to two pages.



    2) Higher resolution of print screen. Is it possible to increase resolution of print screen for more higher quality?



    Code I use for button on UserForm:



    Private Sub btnPrintPDF_Click()
    'change to your button name
    Dim pdfName As String
    Dim newWS As Worksheet

    Application.DisplayAlerts = False

    keybd_event VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY, 0
    keybd_event VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY, 0
    keybd_event VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP, 0
    keybd_event VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP, 0

    DoEvents 'Otherwise, all of screen would be pasted as if PrtScn rather than Alt+PrtScn was used for the copy.

    Set newWS = ThisWorkbook.Worksheets.Add(After:=Worksheets(Worksheets.Count))
    newWS.PasteSpecial Format:="Bitmap", Link:=False, DisplayAsIcon:=False
    pdfName = ThisWorkbook.Path & "" & Sheets("MAIN").Range("D14").Value & "Project_Summary" & "_" & " " & Format(Now, "yyyy-mmm-dd") & ".pdf"
    newWS.ExportAsFixedFormat Type:=xlTypePDF, _
    FileName:=pdfName, Quality:=xlQualityStandard, _
    IncludeDocProperties:=False, IgnorePrintAreas:=False, _
    OpenAfterPublish:=False
    newWS.Delete
    Unload Me
    Application.DisplayAlerts = True
    ThisWorkbook.Sheets("MAIN").Activate
    End Sub









    share|improve this question

























      2












      2








      2








      I have UserForm where I have button to take print screen of UserForm, paste to newly created worksheet and export it as pdf. Problems I have with current code are:



      1) I want to fit print screen to one page, now it takes print screen and splits to two pages.



      2) Higher resolution of print screen. Is it possible to increase resolution of print screen for more higher quality?



      Code I use for button on UserForm:



      Private Sub btnPrintPDF_Click()
      'change to your button name
      Dim pdfName As String
      Dim newWS As Worksheet

      Application.DisplayAlerts = False

      keybd_event VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY, 0
      keybd_event VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY, 0
      keybd_event VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP, 0
      keybd_event VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP, 0

      DoEvents 'Otherwise, all of screen would be pasted as if PrtScn rather than Alt+PrtScn was used for the copy.

      Set newWS = ThisWorkbook.Worksheets.Add(After:=Worksheets(Worksheets.Count))
      newWS.PasteSpecial Format:="Bitmap", Link:=False, DisplayAsIcon:=False
      pdfName = ThisWorkbook.Path & "" & Sheets("MAIN").Range("D14").Value & "Project_Summary" & "_" & " " & Format(Now, "yyyy-mmm-dd") & ".pdf"
      newWS.ExportAsFixedFormat Type:=xlTypePDF, _
      FileName:=pdfName, Quality:=xlQualityStandard, _
      IncludeDocProperties:=False, IgnorePrintAreas:=False, _
      OpenAfterPublish:=False
      newWS.Delete
      Unload Me
      Application.DisplayAlerts = True
      ThisWorkbook.Sheets("MAIN").Activate
      End Sub









      share|improve this question














      I have UserForm where I have button to take print screen of UserForm, paste to newly created worksheet and export it as pdf. Problems I have with current code are:



      1) I want to fit print screen to one page, now it takes print screen and splits to two pages.



      2) Higher resolution of print screen. Is it possible to increase resolution of print screen for more higher quality?



      Code I use for button on UserForm:



      Private Sub btnPrintPDF_Click()
      'change to your button name
      Dim pdfName As String
      Dim newWS As Worksheet

      Application.DisplayAlerts = False

      keybd_event VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY, 0
      keybd_event VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY, 0
      keybd_event VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP, 0
      keybd_event VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP, 0

      DoEvents 'Otherwise, all of screen would be pasted as if PrtScn rather than Alt+PrtScn was used for the copy.

      Set newWS = ThisWorkbook.Worksheets.Add(After:=Worksheets(Worksheets.Count))
      newWS.PasteSpecial Format:="Bitmap", Link:=False, DisplayAsIcon:=False
      pdfName = ThisWorkbook.Path & "" & Sheets("MAIN").Range("D14").Value & "Project_Summary" & "_" & " " & Format(Now, "yyyy-mmm-dd") & ".pdf"
      newWS.ExportAsFixedFormat Type:=xlTypePDF, _
      FileName:=pdfName, Quality:=xlQualityStandard, _
      IncludeDocProperties:=False, IgnorePrintAreas:=False, _
      OpenAfterPublish:=False
      newWS.Delete
      Unload Me
      Application.DisplayAlerts = True
      ThisWorkbook.Sheets("MAIN").Activate
      End Sub






      excel vba excel-vba printing userform






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 18 '18 at 19:53









      user7202022user7202022

      1878




      1878
























          1 Answer
          1






          active

          oldest

          votes


















          0














          Application.PrintCommunication = False
          With newWS.PageSetup
          .Orientation = xlLandscape
          .Zoom = False
          .FitToPagesWide = 1
          End With
          Application.PrintCommunication = True
          ewWS.ExportAsFixedFormat Type:=xlTypePDF, _
          Filename:=pdfName, Quality:=xlQualityStandard, _
          IncludeDocProperties:=False, IgnorePrintAreas:=False, _
          OpenAfterPublish:=False





          share|improve this answer
























          • Thanks! This one works for fitting to one page, but is there any way for making my screenshot taken more higher quality? I mean when I open newly created PDF it doesn't look like it was taken in 2018, more like in 1995.

            – user7202022
            Nov 19 '18 at 8:17











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53364850%2fexcel-vba-userform-printscreen-save-as-pdf%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          0














          Application.PrintCommunication = False
          With newWS.PageSetup
          .Orientation = xlLandscape
          .Zoom = False
          .FitToPagesWide = 1
          End With
          Application.PrintCommunication = True
          ewWS.ExportAsFixedFormat Type:=xlTypePDF, _
          Filename:=pdfName, Quality:=xlQualityStandard, _
          IncludeDocProperties:=False, IgnorePrintAreas:=False, _
          OpenAfterPublish:=False





          share|improve this answer
























          • Thanks! This one works for fitting to one page, but is there any way for making my screenshot taken more higher quality? I mean when I open newly created PDF it doesn't look like it was taken in 2018, more like in 1995.

            – user7202022
            Nov 19 '18 at 8:17
















          0














          Application.PrintCommunication = False
          With newWS.PageSetup
          .Orientation = xlLandscape
          .Zoom = False
          .FitToPagesWide = 1
          End With
          Application.PrintCommunication = True
          ewWS.ExportAsFixedFormat Type:=xlTypePDF, _
          Filename:=pdfName, Quality:=xlQualityStandard, _
          IncludeDocProperties:=False, IgnorePrintAreas:=False, _
          OpenAfterPublish:=False





          share|improve this answer
























          • Thanks! This one works for fitting to one page, but is there any way for making my screenshot taken more higher quality? I mean when I open newly created PDF it doesn't look like it was taken in 2018, more like in 1995.

            – user7202022
            Nov 19 '18 at 8:17














          0












          0








          0







          Application.PrintCommunication = False
          With newWS.PageSetup
          .Orientation = xlLandscape
          .Zoom = False
          .FitToPagesWide = 1
          End With
          Application.PrintCommunication = True
          ewWS.ExportAsFixedFormat Type:=xlTypePDF, _
          Filename:=pdfName, Quality:=xlQualityStandard, _
          IncludeDocProperties:=False, IgnorePrintAreas:=False, _
          OpenAfterPublish:=False





          share|improve this answer













          Application.PrintCommunication = False
          With newWS.PageSetup
          .Orientation = xlLandscape
          .Zoom = False
          .FitToPagesWide = 1
          End With
          Application.PrintCommunication = True
          ewWS.ExportAsFixedFormat Type:=xlTypePDF, _
          Filename:=pdfName, Quality:=xlQualityStandard, _
          IncludeDocProperties:=False, IgnorePrintAreas:=False, _
          OpenAfterPublish:=False






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 18 '18 at 22:47









          Michal RosaMichal Rosa

          1,3191814




          1,3191814













          • Thanks! This one works for fitting to one page, but is there any way for making my screenshot taken more higher quality? I mean when I open newly created PDF it doesn't look like it was taken in 2018, more like in 1995.

            – user7202022
            Nov 19 '18 at 8:17



















          • Thanks! This one works for fitting to one page, but is there any way for making my screenshot taken more higher quality? I mean when I open newly created PDF it doesn't look like it was taken in 2018, more like in 1995.

            – user7202022
            Nov 19 '18 at 8:17

















          Thanks! This one works for fitting to one page, but is there any way for making my screenshot taken more higher quality? I mean when I open newly created PDF it doesn't look like it was taken in 2018, more like in 1995.

          – user7202022
          Nov 19 '18 at 8:17





          Thanks! This one works for fitting to one page, but is there any way for making my screenshot taken more higher quality? I mean when I open newly created PDF it doesn't look like it was taken in 2018, more like in 1995.

          – user7202022
          Nov 19 '18 at 8:17




















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53364850%2fexcel-vba-userform-printscreen-save-as-pdf%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          這個網誌中的熱門文章

          Xamarin.form Move up view when keyboard appear

          Post-Redirect-Get with Spring WebFlux and Thymeleaf

          Anylogic : not able to use stopDelay()