• ベストアンサー

VBAでの " の使い方をお教え下さい

 ThisWorkbook.SaveAs Filename:="C:???.xlsm"(???はファイル名です)をVBAの式に直す方法をお教えください。なお、???はセルを参照することにしています。具体的にはRange("O1")です。  ThisWorkbook.SaveAs Filename:="""C:" & "Range(""O1"").xlsm"""とすると、ファイル名に : は使えないというエラーメッセージが出ました。  " の使い方が分かりづらく、悩んでいます。正しい使い方はどのように考えれば良いかも教えていただければ幸いです。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

文字列の中でダブルクォート自体を現すには""と二つ重ねる。 で、そもそもそれ以前に間違ってます。むしろダブルクォートの云々は必要ありません。 >"""C:" & "Range(""O1"").xlsm""" は 「"C:」と「Range("O1").xlsm"」の合成、つまり「"C:Range("O1").xlsm"」というファイル名で保存しようとしています。O1セルの参照ではなく文字列になっているのと、コロンの後ろにバックスラッシュがないからドライブだと認識してくれず、こういうファイル名だと判断されます。だから保存できなくて当然です。 やりたいのはこんなファイル名ではないでしょ? O1セルにどんな値が入っているかわからないけど、 ThisWorkbook.SaveAs Filename:="C:" & Range("O1") & ".xlsm" で、Cドライブの中で「O1に記載されたパス」にxlsmで保存「しようとし」ます。できるかどうかはほかの要因が絡むので保障できません。 で、話はちょっと戻りますが、O1に何が入ってるかわかりませんが、バックスラッシュ(円記号に見えているかもしれない)がO1にないなら、"C:"は"C:\"にしないといけません。 ※一応噛み砕いた上にかなりはしょってます。 意味がわからなかったら追加説明には応じますが、補足だと気づけないのでお礼欄でお願いしますね。

moodesu
質問者

お礼

早速の御返事ありがとうござしました。無事保存できました。

関連するQ&A

  • VBAで新規ファイル名

    VBAであるテンプレートのファイルを開いて、ファイル名をB3セルに入力された名前で保存したいのです。まず、下にマクロを示します。 Sub 新規_試作マスタ作成() ChDir "C:\Users\H1250-201\Desktop" Workbooks.Open Filename:="C:\Users\H1250-201\Desktop\試作マスター.xlsm" ChDir "D:\A\" & Format(Date, "yyyy年") & "\" & Format(Date, "yyyy年m月") & "" ActiveWorkbook.SaveAs Filename:="D:\A\" & Format(Date, "yyyy年") & "\" & Format(Date, "yyyy年m月") & "\" & Format(Date, "yyyymmdd") & " " & ThisWorkbook.Sheet1.Range("B3").Value & " 試作.xlsm", FileFormat _ :=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False End Sub Dドライブの中のAというフォルダがあり、その中に、2014年→2014年1月の順にフォルダがあります。ただし、Aの中には2013年~2020年、2014年の中には、2014年1月~2014年12月のフォルダがあるのです。そこで、今日の日付を参照してそれに応じたフォルダ分けを行い、ファイルの頭に「日付」、その後に「B3セルに入力された名前」、「試作」の順に 「日付」 「B3セルに入力された名前」 「試作」という名前で保存されるマクロを作成したいのです。 上のマクロでは、ThisWorkbook.Sheet1.Range("B3").Valueの部分がおかしくてうまく行きません。個々の部分をただ文字列として"○○"とするとうまくいきました。 つまり、マクロのある自身のファイルのセルを参照したいのです。差し支えなければご回答願います。

  • ファイル名を日付にしたいのですが、うまく行きません

    Sheet1のセルA1に"2016/5/1"のデータが有ります。 このデータをファイル名にして保存したいので、以下のVBAを作りました。 しかし、ファイル名が"2016/5/1"ではなく、"ym"になってしまいます。 どうしたらよいでしょうか? Option Explicit Sub コピー保存() Dim ym As Long Sheets("Sheet1").Range("a1").Select ym = Range("z1") ThisWorkbook.SaveCopyAs _ Filename:="H:\" & "ym" & ".xlsm" End Sub

  • エクセルVBAの変数利用

    シートのC1セルに入力したブック名をアクティブにするための 変数なのですが、アクティブになりません。 下のようにしていますが、とのようにすればよいでしょうか? Sub test() Dim FileName As Range FileName = ThisWorkbook.Path & "\" & Sheets("sheet1").Range("C1") & ".xls" Workbooks.FileName.Activate End Sub

  • VBAで特定のフォルダ内のエクセルファイルをPDF

    VBAで特定のフォルダ内のエクセルファイルをPDFに変換する作業しているのですが Filename:=ThisWorkbook.Path & "\" & Replace(f.Name, fs.GetExtensionName(f.Path), "pdf"), _ 出来上がったファイル名を コード_日付にしたく Filename:=ThisWorkbook.Path & "\" & ("コード") & Range("B9") & ("_") & Format(Now, "yyyymmdd") & ".pdf", _ に入力したのですがB9セルのコードが入りません。 どこが間違っているのでしょうか?

  • VBAで値だけコピー

    EXCEL VBAで別ファイルの値をコピーして貼り付けをしているのですが、セルの中の一部のみを貼り付けしたいと思いますが、 どのようにしたらいいのでしょうか? 関数では取り出すことができたのですが、できればVBAの中で処理できればと思っています。 =IFERROR(MID(Z2,FIND("6",Z2),FIND(" has",Z2)-FIND("6",Z2)),"") やりたいこと 1.左から見て6~空白までの値のみを貼り付けしたい 2.エラーの時は空白にしたい Sub SO_Copy() Dim ws As Worksheet Set ws = Worksheets("Sheet1") Dim FilePath, FileName As String 'C8&C9にファイルパス/ファイル名を入力 FilePath = ws.Range("C8").Value & "\" & ws.Range("C9").Value FileName = ws.Range("C9").Value Workbooks.Open FilePath 'Z2~コピーして、"メール送信.xlsm"のD11以降に値だけ貼り付け Range("Z2", Range("Z2").End(xlDown)).Copy Windows("メール送信.xlsm").Activate Range("D11").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Workbooks(FileName).Close End Sub

  • Excel-VBA rangeプロパティの使い方について

    Excel-VBA rangeプロパティの使い方について VBA初心者です。いろいろ調べたのですが、分からないので教えてください。 ThisWorkbookのSheet1のA1セルに、aというファイルのaというシートの特定のセルの値をコピーしたいです。 コピーする値のセルは、ThisWorkbookで入力した値を基に変数で記述したいです。 例えば、ThisWorkbookのSheet1のC2セルに「D1」と記載していたとして、その値を変数として設定して、最終的にaというファイルのaというシートの「D1」セルをThisWorkbookのA1セルに貼り付けるのが目的です。 この場合の、下記のhensuu = の設定方法について、ご教授願います。 hensuu = ThisWorkbook.Sheets("Sheet1").Range(“A1”)= Workbooks(a).Sheets(a).Range(hensuu)

  • アドバイスをお願いします(VBAで・・・)

    Excel2010を使用。 現在".xlsm"ファイルに シートが複数あります。 この中の一つのシートだけを新たなBookにコピーして、 名前を付けて保存する際、Book名を、"L5"セルにある文字列に したいと思い、ググった結果、下記のコードにたどりつきました。 このコードだけだと"close"の時にダイアログがでてくるので、 これに ActiveWorkbook.SaveAs Filename:="フォルダ名" & Range("L5").Value & ".xlsx" をCloseの前に挿入してみたのですが、Range("L5").Value=Empty値となり エラーがでてしまいます。 VBA初心者であるため、改善策がわからず苦戦しております。 申し訳ありませんが、アドバイスいただけないでしょうか? Sub サンプル() Dim sc As Integer sc = Application.SheetsInNewWorkbook Application.SheetsInNewWorkbook = 1 ThisWorkbook.Sheets("オリジナル").Cells.Copy 'コピー Workbooks.Add 'ブック追加 Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlValues '値貼り付け Sheets("Sheet1").Range("A1").PasteSpecial Paste:=xlFormats '書式貼り付け Sheets("Sheet1").Name = "コピー" Application.CutCopyMode = False Application.SheetsInNewWorkbook = sc ActiveWorkbook.Close ThisWorkbook.Activate End Sub 参考URL:http://okwave.jp/qa/q2167570.html ※コピーしたいのは、シートの中のデータ、書式だけなので マクロを必要としません。

  • Excel VBAでの関数入力

    お世話になっております。 ExcelのVBAに関する質問です。 やりたいこととしては  (1) CSVファイルを開き、そのファイル名を取得後  (2)「カウントマクロ.xlms」、「件数表」シートのB2から最終行まで、(1)のCSV(Sheet1)を参照先とするCOUNTIF関数を入力する。というものです。   Dim OpenFileName As String OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.csv?") Workbooks.Open OpenFileName Filename = Dir(OpenFileName) Workbooks("カウントマクロ.xlsm").Activate Worksheets("件数表").Activate LASTROW = Cells(Rows.Count, "A").End(xlUp).Row Range("B2").Select ActiveCell.FormulaR1C1 = _ "=COUNTIF(Filename.Sheet1!R2C10:R10C10,""*"" & RC[-1] & ""*"")" Range("B2").Select Selection.AutoFill Destination:=Range(Cells(2, "B"), Cells(LASTROW, "B")) End Sub 上記のように記述してみたのですが、 "=COUNTIF(Filename.Sheet1!R2C10:R10C10,""*"" & RC[-1] & ""*"")" の部分Filenameが件数表シートの関数にそのまま表示されており、うまく機能しませんでした。 このようにVBA上で関数を入力する場合、FileNameのように定義したファイル名はどのように記述すればよいのでしょうか。 どなたかご教示いただけましたら幸いです。

  • EXCELマクロを無効にして開く方法

    掲題の通りなのですが、EXCEL2007で作成されたマクロ有効ファイル(XLSM形式)を マクロ無効の状態で開く方法が分からず困っております。 マクロの内容は Workbook_Open 処理で、特定セルに入力されている EXCELファイルを開き、自身は閉じるというものです。 Private Sub Workbook_Open() Dim FileName As String '1ファイル目 Range("A2").Select FileName = ActiveCell.FormulaR1C1 Workbooks.Open FileName:=FileName ThisWorkbook.Activate '2ファイル目 Range("A3").Select FileName = ActiveCell.FormulaR1C1 Workbooks.Open FileName:=FileName ThisWorkbook.Activate ・・・・・・繰り返し DoEvents ThisWorkbook.Close End Sub 上記の特定セルに設定してあるファイルパスを変更するためには マクロを無効にして開かなければなりません。 マクロのセキュリティを変更して、「すべてのマクロを無効にする」を設定して 該当のファイルを開けば良い事は分かっているのですが、他に分かりやすい方法で マクロ無効状態で開く方法があれば、ご教授頂ければと思います。

  • エクセルマクロ文で教えてください。

    お世話になります。 エクセルマクロ文で セルD6 に保存するドライブ名(C とか D) セルD7に保存するフォルダ-名(資料2016 とか 閲覧2016 など) セルD8にファイル名 を置いて、 ドライブ名やフォルダ-名を任意に選択できる形で、作成したエクセルシ-トを保存するマクロ文を、お教えください。 ThisWorkbook.SaveAs "D:\資料2016"&fileName というような形で、fileName=Range(”D8”)と置いてあるのですが、ドライブ名とフォルダ-名とをD6とD7に任意の値を置いて当該文字によるドライブとフォルダ-にD8に記入したファイル名で保存したいというマクロ文を、お教えください。

専門家に質問してみよう