• 締切済み

VBEでの引数を書き方について

VBE の pdf の出力をする構文の書き方についての質問です。 構文は ExportAsFixedFormat (Type, FileName, Quality, IncludeDocProperties, IgnorePrintAreas, From, To, OpenAfterPublish, FixedFormatExtClassPtr) かと思いますが, Webサイトなどで,調べていると Sheets(ShtName).ExportAsFixedFormat Type:=xlTypePDF, _ FileName:=MyPath & "\" & Sheets(ShtName).Name & ".pdf" のように書かれていて,引数の部分に( ) が使われていません。 なぜでしょうか?

みんなの回答

  • SI299792
  • ベストアンサー率48% (715/1480)
回答No.3

 コマンドとして直接書く場合は不要ですが、関数の様に使う場合は必要です。以下、不要な場合と必要な場合の例です。 '   ActiveSheet.ExportAsFixedFormat xlTypePDF, _     ThisWorkbook.Path & "\" & ActiveSheet.Name '   Dummy = ActiveSheet.ExportAsFixedFormat(xlTypePDF, _     ThisWorkbook.Path & "\" & ActiveSheet.Name) '   Call ActiveSheet.ExportAsFixedFormat(xlTypePDF, _     ThisWorkbook.Path & "\" & ActiveSheet.Name) Dummy には何も入りません。下2つの書き方は無駄です。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

引数らしきもの、の、名前の後の()は (1)関数 Functionで (2)SUB プロシージャーで (3)メソッド、プロパテイで その他に (4)演算における順序指定(常識的事項なので略) などで見かけます。 ーー ・括弧が必要かどうかは下記http://officetanaka.net/に書いてあることが(VBA的に)参考になるのではないでしょうか。 ・その他に、Googleなどで「VBA 引数 括弧の省略」など で照会し、記事を読んで、頭を整理してください。 ーー 普通は()は必要のようですが、下記のような事項もあるようです。 https://www.tipsfound.com/vba/02002 VBA でやっかいなのは、関数の引数に括弧 () を付けて呼び出すと ByRef でも値が変更されません。 ーー 小生の経験で、(3)のケースだと思うのですが、 Set AAA=XXX(引数・・)のようなとき、空白区切りで引数を連ねようとすると、(名前付き引数でも)()で囲むことを求められる経験があります。 下記に書いてあるケースだと思うのですが。 http://officetanaka.net/ 括弧が必要な場合 ーー https://learn.microsoft.com/ja-jp/office/vba/language/concepts/getting-started/understanding-named-arguments-and-optional-arguments 名前付き引数とオプションの引数について >名前付き引数を使用してこのプロシージャを呼び出すことができます。 この場合は()は不要のようです。

  • dell_OK
  • ベストアンサー率13% (740/5647)
回答No.1

カッコのありなしについてはこちらが参考になるかと思います。 http://officetanaka.net/excel/vba/beginner/07.htm

関連するQ&A

  • VBA  PDF ファイル名をセルからつける

    ExcelでPDFを出力するときに、たとえばB1のセルに入力されているものを、ファイル名の一部として出力する方法がわかりません。 例えばB1に「資料1」と入力されていた場合で、PDFのファイル名を[TEST資料1.pdf]にしたい場合、下記に何かを足すだけでできますでしょうか? ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ "I:\補TEST\TEST.pdf", Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ True End Sub できれば、解説もいただけると助かります。よろしくお願いします。

  • VBAでPDFを保存する

    Excel2013です。VBAでPDFで保存するコードを書きたいのですが、通常の名前をつけて保存のように保存先とファイル名をその都度変更できるウィンドウを出したいのですが、どのようにすればいいのでしょうか?保存先とファイル名をあらかじめ指定する方法はネット検索でヒットするのですが、そうでない方法が探せません。 以下は現在のコードです。 Sub PDF保存() ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ "c:\\xxx.pdf", Quality:= _ xlQualityStandard, IncludeDocProperties:=True, _ IgnorePrintAreas:=False, _ OpenAfterPublish:=False End Sub

  • Excelマクロで1シートの中身変えて一冊のPDF

    ExcelのPDF出力で教えてください シート1に帳票テンプレートを作りまして、連番印刷しておりました。 雰囲気でこんな感じで Sub Macro1() ' Macro1 印刷 Dim i As Integer For i = 1 To 10 Range("a1").Value = Format(i, "0000") Sheets(1).PrintOut Next End Sub #例として1~10としましたが、本当は別シートの台帳の連番で #次は11から10枚とか50枚とか変数で指定してますです。 これをPDF出力へと変えようとして次のように変えようと考えました Sub Macro2() ' Macro2 PDF Dim FilePath As String FilePath = "C:\Temp\" Dim FileName As String Dim i As Integer For i = 1 To 10 Range("a1").Value = Format(i, "0000") FileName = "Temp" & i & ".pdf" Sheets(1).ExportAsFixedFormat Type:=xlTypePDF, _ FileName:=FilePath & FileName, _ Quality:=xlQualityStandard, _ IncludeDocProperties:=False, _ IgnorePrintAreas:=False, _ OpenAfterPublish:=False Next End Sub で、ここからが相談なんですが、これだとPDFファイルが10個出来ますよね? そうではなく、一冊の10ページのtemp.pdfとしたい場合はどのようにしましょうか? 一旦ズラズラズラーとPDF作ってからのPDF連結ソフト立ち上げての 手作業とかじゃ面倒なので、全自動でVBA処理で出来ればいいなと思っています。 Sheets(1)に0001作ってSheets(2)に複写 Sheets(1)に0002作ってSheets(3)に複写 Sheets(1)に0003作ってSheets(4)に複写 ・・・ Sheets(2)~Sheets(11)まで選択してあげてのPDFエクスポート Sheets(2)~Sheets(11)削除 という流れを構想してみたのですが 他にも、こうすると簡単だよとかいうアドバイスなどありましたら ぜひともご教示くださいませ♪ Sheets(Array("Sheet2", "Sheet3",・・・)).Select ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF~ ActiveWindow.SelectedSheets.Delete という感じ 一挙にいきなりいっぱいシート生成していくのも見た目びっくりだし 配列にシート名入れていくのも面倒だし、どうしてやるのがベターなのかな?と 思案中です

  • VBAでPDFファイルをメールに添付する

    下記のVBAでエクセルのファイルをpdfに変換して名をつけ保管する、と同時に自動的にメールへ添付したいのですがうまくいきません 「A」でエクセルをpdfに変換して名をつけて保管することができます。 「B」でメールを開き件名の挿入までできます。 「A」のpdfファイルを「B」のメールに添付するプログラムを教えて下さい。 windows7、.エクセルは2010です 「A」 Sub メール() ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ "C:\Users\nakasima\Documents\見 積\見積書控\" & Range("O4").Value & ".pdf",_ Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ False 「B」 Shell "C:\Program Files\Windows Live\Mail\wlmail.exe /mailurl:mailto:?subject=_ 見積書送付の件" End Sub

  • マクロ

    色々やってみたものの… これ以上できません。 やりたいこと↓ 例)シート2のA~Zにデータがあります (1)シート2、A1~24をシート1、D2に貼り付ける (2)シート1を印刷、PDFでフォルダに保存(保存名は【シート2、A25】又は【シート1、D3&"_"&D4】) (3)シート2のA列を削除、シート1の(1)で張り付けたものを消す ※これをシート2、A列のデータがなくなるまで繰り返す。  ・(※)の繰り返すやり方がわからない  ・下記で実行を何度かやると印刷は上手く行くんですが   保存する時にファイル名が最初のファイル名のままで中身が上書きされてしまいます… Sub カード() ' ' カード Macro ' ' Keyboard Shortcut: Ctrl+a ' Sheets("Sheet2").Select Range("A1:A24").Select Selection.Cut Sheets("Sheet1").Select Range("D2").Select ActiveSheet.Paste Sheets("Sheet2").Select Range("A25").Select ActiveCell.FormulaR1C1 = "" Sheets("Sheet1").Select ChDir "C:\Users\sinnbasi\Desktop\カード" ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ "C:\Users\sinnbasi\Desktop\カード\RON37806_4021489.pdf", Quality:= _ xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _ OpenAfterPublish:=False ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False Range("D2:D25").Select Selection.ClearContents Sheets("Sheet2").Select Columns("A:A").Select Selection.Delete Shift:=xlToLeft Sheets("Sheet1").Select End Sub 詳しい方教えて頂けないでしょうか。 宜しくお願い致します。

  • エクセルのマクロでシートの指定範囲をセル名で保存

    いつもお世話になっております。 だいぶ前に下記のコードを教わってあまりの便利さに非常に多くのファイルで多用しているのですが今回エクセルシートのまま保存したく。 2か所のPDFとpdfをxlmsに変更してみたのですが何故か必ずpdfで保存されるのです。 尚、保存ファイルは印刷範囲で指定でした範囲で、ページ設定通りに印刷されることも必要なので合わせてよろしくお願いします。 更に、問題ないと思うのですが、保護の範囲&編集許可の範囲指定も保持したファイルにしたいのでこれも合わせてお願い致します。 Sub 保存() Sheets("成績表(提出)").ExportAsFixedFormat Type:=xlTypePDF, _ Filename:="\\Sav01\成績書\原紙\1.成績表" & "\" & Range("E20") & ".pdf" End Sub

  • マクロの動作不良

    エクセルに下のようなボタンマクロを設定しています。 内容は、inpシートに設定している開始番号と終了番号を入力するとその番号分だけreceptシートのでーたを入れ替えてPDFで吐き出すというコードです。 問題なく動いていたのですが、先日、PCを入れ替えた際に確認したところ、pdfが出力されなくなりました。特にエラーはでることなく完了するのですがファイルができません。 変な質問ですが、原因がつかめず困っております。 このエクセルファイルは旧PCでも、新PCでもSDカードに保存して使用しております。 宜しくお願い致します。 Sub ボタン6_Click() Dim s As Long Dim e As Long Dim i As Long Dim outputFilePath As String Dim outputFileName As String On Error Resume Next s = InputBox("開始No.を入力して下さい。") If s = 0 Then Exit Sub e = InputBox("終了No.を入力して下さい。") If e = 0 Then Exit Sub ' PDFの保存先フォルダを指定する outputFilePath = Environ("USERPROFILE") & "\Desktop\" For i = s To e ' 出力するファイル名を指定する outputFileName = "recept_" & i & ".pdf" ' 対象の番号を設定する Worksheets("Inp").Range("C1").Value = i ' PDF出力を行う With Worksheets("Recept").Range("A36:J74") .ExportAsFixedFormat Type:=xlTypePDF, _ fileName:=outputFilePath & outputFileName, _ Quality:=xlQualityStandard, _ IncludeDocProperties:=True, _ IgnorePrintAreas:=False, _ OpenAfterPublish:=False End With ' 作成したファイル名を表示する MsgBox "PDFファイルを作成しました: " & outputFilePath & outputFileName Next i End Sub

  • 日付のセルをファイル名にしたい

    お世話になります。 さてかなり前に2つのセルの内容をファイル名にしてpdfで保存して印刷画面の表示までをマクロにする下記のコードを教わって多くのエクセルで使用しているのですがE22が日付の場合が出てきました。 (E22").Textや.ValueやNETで探したコードも試したのですがダメでした。 (要するに分かっていません) やりたいことは、ファイル名は200216XXXXのようにyymmdd+A1セルの内容にしたいのです。 別のセルにE22を参照して「200213」というように表示させてもOKです。 一番簡単な方法を教えて下さい。 Sub 保存印刷() Sheets("提出").ExportAsFixedFormat Type:=xlTypePDF, _ Filename:="\\***\XXXX\?????" & "\" & Range("E22") & Range("A1") & ".pdf" Application.Dialogs(xlDialogPrint).Show End Sub

  • CreateObject関数 引数にパスワード

    CreateObject関数を使ってエクセルを開く際に、 引数にパスワードを設定することは可能ですか? 新規Microsoft Excel ワークシート.xlsと言うファイルには、 読み足りパスワードとして0000と言うパスワードが設定されているのですが Sub Sample() Dim MyPath As String Dim MyFile As String Dim xlApp As Object Dim xlBook As Object MyPath = "C:\" MyFile = "新規Microsoft Excel ワークシート.xls" Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(MyPath & MyFile) xlApp.Visible = True Set xlApp = Nothing Set xlBook = Nothing End Sub このようなvbaコードで開く時に、 どうやってパスワードを設定すればいいでしょうか? Set xlBook = xlApp.Workbooks.Open(MyPath & MyFile),"0000" こうすると構文エラーになります。 Sub Sample02() Dim MyPath As String Dim MyFile As String MyPath = "C:\" MyFile = "新規Microsoft Excel ワークシート.xls" Workbooks.Open Filename:=MyPath & MyFile, Password:="0000" End Sub これのCreateObjectバージョンが知りたいです。

  • エクセルで印刷時に、ページ毎にPDF保存するマクロ

    エクセルで印刷時にPDF保存をしたいですのですが、ページ毎に名前を変えて保存をしたいです。 例えば、 For i = 1 To 50 Application.ActivePrinter = "Microsoft Print to PDF on Ne02:" ActiveSheet.PrintOut From:=i, to:=i Next i であれば、1ページずつ保存は出来るのですが、ファイル名もセルを参照しながら変えていきたいです。 具体的には、G列の1行名から50行目まで取引先の名前を入れていて 印刷毎に、取引先名でPDFを保存します。 Activesheet.ExportAsFixedFormat Type:=xlTypePDF, _ Filename:=ActiveWorkbook.Path & "\" & fName & ".pdf" のような方法は、ネットにもありますが、これだとページ毎にファイル名を変えられないので困っています。 よろしくお願いいたします。