Excelで指定したフォルダに保存するマクロ

このQ&Aのポイント
  • Excel2003で、シートをコピーし別ファイルとして保存する方法を教えてください。
  • 保存先のフォルダがネットワーク上にある場合、指定することはできますか?
  • 保存ダイアログを開く理由は何ですか?
回答を見る
  • ベストアンサー

Excelで指定したフォルダに保存するマクロ

Excel2003で、シートをコピーし別ファイルとして保存したいのですが 保存先のフォルダがネットワーク上にあります。 ファイル名は、指定したセルの値で保存されるようにします。 以下の記述でマクロ実行すると、シートは別ファイル(BOOK1)としてコピーされ ます。 名前をつけて保存ダイアログが開きますが、そのときにマイドキュメントが開き ます。 Private Sub CommandButton1_Click() ActiveSheet.Select ActiveSheet.Copy Dim Sname As String, Fname As Variant, Folname As String Folname = "ネットワーク上フォルダのフルパス" Sname = Range("O46").Value If Sname = "" Then Sname = ThisWorkbook.Name Fname = Application.GetSaveAsFilename(InitialFileName:=Sname, fileFilter:="Excel(*.xls), *.xls") If Fname <> False Then ActiveWorkbook.SaveAs Fname End Sub そもそもネットワーク上のフォルダを指定することはできないのでしょうか? マクロに関してはずぶの素人で、上記の記述は過去の質問などを参考に作成しま したので どこかに間違いがあるのかも知れませんが、間違いを特定することができません。 お手数おかけし申し訳ありませんが、ご教示のほどよろしくお願いします。 補足として、保存する際にダイアログを開きたい理由は以下の通りです。 ・保存先誤り防止(作業者が多数いて、使用するPCも違うため) ・ファイル名誤り防止(同じファイル名が存在しないかどうか確認)

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

こちらでは、IP Address 指定だとファイル名が,"" で括られてしまいましたが フォルダ名とファイル名が一緒くたになることはありませんでした。Excel2010 UNC名だとうまく行きました。 Sub てすと() Dim Sname As String, Fname As Variant Dim oFs As Object Const FolName As String = "\\サーバー名\共有名\フォルダ名\" Set oFs = CreateObject("Scripting.FileSystemObject") If oFs.folderExists(FolName) = False Then MsgBox FolName & " が見つかりません" Set oFs = Nothing Exit Sub End If ActiveSheet.Select ActiveSheet.Copy Sname = Range("O46").Value If Sname = "" Then Sname = ThisWorkbook.Name End If Fname = Application.GetSaveAsFilename(InitialFileName:=FolName & Sname, _ fileFilter:="Excel(*.xls), *.xls") If Fname <> False Then ActiveWorkbook.SaveAs Fname End If Set oFs = Nothing End Sub

naozen
質問者

お礼

ご回答ありがとうございます! 完璧でした!ちゃんと指定したフォルダにセルの値で保存することができました! 本当にありがとうございました☆(≧∀≦*)ノ

naozen
質問者

補足

大変です! 同じファイルの別のシートにコマンドボタンとマクロをコピーしたら使えなくなりました。 コンパイルエラー:プロシージャの外では無効です というメッセージが出て、 Set oFs = CreateObject("Scripting.FileSystemObject") この部分の、文頭にチェックが入りました。 同じマクロは、別シートにコピーできないのでしょうか?

その他の回答 (1)

  • tohru999
  • ベストアンサー率49% (76/154)
回答No.1

Folname = "ネットワーク上フォルダのフルパス" 上記を例えば Folname = "\\192.168.1.1\Folder1\" にして、 Fname = Application.GetSaveAsFilename(InitialFileName:=Sname, を Fname = Application.GetSaveAsFilename(InitialFileName:=Folname & Sname, に変更

naozen
質問者

お礼

回答ありがとうございました! No.2さんの方法で解決できました。 また機会があれば お願いします(*・∀・)ノ゛ この場をお借りしまして、No.2さんの補足に書きました不具合ですが ちょっとした操作ミスで発生していたことが判明し、教えていただいた方法で解決できました! お騒がせし、申し訳ありませんでした。

naozen
質問者

補足

ご回答ありがとうございます。 Fname = Application.GetSaveAsFilename(InitialFileName:=Folname & Sname, この記述だと、ファイル名にフォルダ名がプラスされてしまいます。 できれば、保存するファイル名はセルの値だけにしたいのですが可能でしょうか?

関連するQ&A

  • エクセルでセル値をファイル名にして保存しようと思っています。

    エクセルでセル値をファイル名にして保存しようと思っています。 エクセル2003では以下の方法でセル値を取得して保存しています。 'Cell値を取得 strName2 = Sheets("#######").Range("A1").Value strName3 = Sheets("*******").Range("B2").Value 'strName2の値が空の場合、現在のブック名を代入 If strName2 = "" Then strName = ThisWorkbook.Name 'セル値の結合 sName = strName3 + strName2 '名前を付けて保存] ダイアログ ボックスを表示 fName = Application.GetSaveAsFilename(InitialFileName:=sName, fileFilter:="Excel(*.xls), *.xls") 'ファイル名を取得したら保存 If fName <> False Then ActiveWorkbook.SaveAs fName 同様の操作を2007以降で「マクロを有効にして保存」を行いたいのですが、どの様にすればいいのでしょうか? (自動保存では以下の様になる状態の事です。) ActiveWorkbook.SaveAs Filename:="#:\*******.xlsm", FileFormat:= _ xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False 2007の時の「'名前を付けて保存] ダイアログ ボックスを表示」の方法が分かりません。 共通の命令文では出来でしょうから、最終的にはエクセルのバージョンを取得して、IFで分岐させようと思っています。 宜しくお願い致します。

  • 指定したセルでファイル名を保存するマクロについて

    マクロ初心者です。 A1セルの文字をファイル名にして保存する方法を知りましたが、A1セルとB1セルの文字をファイル名にして保存したい場合、どのようにすれば良いか分かりません。 A1セルに企業コード、B1セルに企業名です。 ファイル名を「請求書(13579いろは株式会社様)」としたいのです。 実際のマクロを一部抜粋しますが、下記の場合はファイル名は 「請求書(13579様).xls」となります。 Dim WS As Worksheet Dim fname As String fname = "C:\保存先\" & ("請求書(") & WS.Range("a1").Value & ("様)") & ".xls" どなたか教えて下さい。 どうぞよろしくお願い致します。

  • エクセルファイルをフロッピーに保存するマクロで教えて下さい

    今、フロッピーにファイルを保存する為のマクロを創っているのですが ワイルドカードの使い方を教えて下さい ここから***** Sub フロッピー保存() ' ' Dim fNAME As String fNAME = ActiveWorkbook.Name 'アクティブなブックのファイル名を取得 'ファイルが新規に作成された場合の処理(book1,book2等と成っている場合) If fNAME = "Book*" Then fNAME = Application.InputBox(prompt:="新規ファイルですね。ファイル名を入力して下さい", _          Title:="新規ファイル入力", Type:=2) Else ActiveWorkbook.Save End If '取得したファイル名でフロッピーディスクに保存 ActiveWorkbook.SaveAs Filename:="A:\"&fNAME, _    FileFormat:=xlNormal, _ Password:="",WriteResPassword:="",ReadOnlyRecommended:=False, _ CreateBackup:=False End Sub ここまで***** >>'ファイルが新規に作成された場合の処理(book1,book2等と成っている場合) >> If fNAME = "Book*" Then この、If fNAME = "Book*" Then が有効に働いていないみたいなんです。 「ワイルドカード・・・* や ? はマクロではどの様な書式が正しいのでしょう それと、エラー処理なんですが InputBoxメソッドでキャンセルやファイル名を入力しないで「OK]が押された 場合の処理、又フロッピーが挿入されていなかった場合などの エラー処理の対処法を教えて下さい

  • GetSaveAsFilenameでフォルダを指定したいのですが?

    すいません。マクロ初心者です。 (1)以下のプロシージャで保存するときに、フォルダを指定したいのですがどこにフォルダ名を入れたらいいかわかりません。 (2)XPのエクセル2003で作成したのですが、vistaのエクセル2007で使用すると保存時に拡張子.xlsが付かずエクセルファイルになりません。 ご教授ください。 Sub シート保存2() Dim Answer3 Dim 既定ファイル名 As String Dim 保存ファイル名 As Variant Answer3 = MsgBox("本当に保存しますか?", vbYesNo) If Answer3 = vbNo Then MsgBox ("キャンセルしました。") Exit Sub End If Sheets("保存シート").Select Application.CutCopyMode = False Sheets("保存シート").Copy 既定ファイル名 = Range("V7") & ".xls" 保存ファイル名 = Application.GetSaveAsFilename(既定ファイル名) If 保存ファイル名 = False Then MsgBox "保存は中止されました。" ActiveWorkbook.Close (False) Else ActiveWorkbook.SaveCopyAs 保存ファイル名 ActiveWorkbook.Close (False) End If End Sub よろしくお願いします。

  • VBA Excel処理の追加を2点教えてください

    Office2003(SP3) 以下は、昔、教えてもらったExcel VBAスクリプトで、よく使わせて もらってます。「C:\mybooks\」にあるxlsファイル(a001.xls、a002.xls、 a003.xls・・・・)を片っ端から開き、 1つのBookに束ねる動作をします。 これだけでも大変便利なのですが、もう少し改善いたしたく。 (1) 束ねられたBookのSheet名が、Sheet1、Sheet1 (2)、Sheet1 (3)、 Sheet1 (4)・・・ になってしまいます。そこで、ファイル名から拡張子を落 とした文字列をSheet名にセットする記述をご教示下さい。 (2) a001.xls、a002.xls、a003.xls・・・は、それぞれSheet1、Sheet2、 Sheet3を含みます。Sheet1だけが抜き取られてSheet2、Sheet3が残された大量 の残骸Bookが開きっぱなしになります。これら、保存せずに閉じる記述を追加 したいのですが。 よろしくお願い致します。 Sub OpenFiles() Dim i As Integer Dim wb As Workbook Dim fname Dim dirname As String ' i = 1 dirname = "C:\mybooks\" fname = Dir(dirname + "*.htm") If fname <> "" Then Do While fname <> "" If fname <> "." And fname <> ".." Then If i = 1 Then ' 最初のファイルを開く Workbooks.OpenText FileName:=dirname + fname Set wb = ActiveWorkbook ' 最初のファイルを新規ブックに複製して閉じる。 ActiveSheet.Copy wb.Close Set wb = ActiveWorkbook Else ' 2番目以降のファイルは複製した最初のファイルに追加 Workbooks.OpenText FileName:=dirname + fname ActiveSheet.Move After:=wb.Worksheets(wb.Worksheets.Count) End If i = i + 1 End If fname = Dir Loop Else MsgBox "検索条件を満たすファイルはありません。" End If Set wb = Nothing End Sub

  • Excel マクロ アクティブシートの指定について

    こんにちは。Excelでマクロを作成しています。あるファイルを開きマクロを実行すると、日々エクスポートしているExcelファイルのシートが開き、自動的にそのシートにピボットテーブルを実行し集計するマクロを作成しています。ファイルの指定はファイル名が毎日日付のファイル名(例:02-12等)になるので、[ファイルを開く]ダイアログを表示させ、そこから指定することにしました。ただ、シート名もファイル名と同じなのですが、どうしてもそのシート名でしか作成できません。現在アクティブなシートにピボットを実行するようにするには、どうすればいいでしょうか。 下記に作成したVBを記載しておきます。 Fname = Application.GetOpenFilename(FileFilter:="Excel ファイル (*.xls), *.xls") ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "'02-12'!R1C1:R91C23").CreatePivotTable TableDestination:="", TableName:= _ "ピボットテーブル3", DefaultVersion:=xlPivotTableVersion10 ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) ActiveSheet.Cells(3, 1).Select ActiveSheet.PivotTables("ピボットテーブル3").AddFields RowFields:=Array("所属名", _ "受付担当者") ActiveSheet.PivotTables("ピボットテーブル3").PivotFields("状況").Orientation = _ xlDataField ・・・ 上記の02-12の部分がシート名になるのですが、このシート名は毎日変化していきます(次の日は、02-13 など)。どのように作成すればいいでしょうか。 よろしくお願いします。

  • ExcelでのA1セルで名前と場所指定したい

    こんにちは、 エクセル2010 でマクロを色々勉強しながらやっているのですが、うまく行かず皆さん助けていただければと思います。 [概要] 1.Sheel1のA1セルをファイル名に。 2.保存場所を指定したフォルダ(会社サーバー内フォルダ) に保存したい こういうマクロを以下のように作ってみたのですが、名前を付けて保存するダイアログがしか表示されなく上手く行きません。 ご教授頂けたらと思います。 Sub TestFileSaveAs() '指定フォルダを置く Const MYPATH = "\\192.000.000.00\所属部\固定フォルダ\" Dim myData As String Dim myFile As String 'A1 にあるデータをファイル名にする If Range("A1").Value <> "" Then myData = Range("A1").Value End If On Error Resume Next Do Err.Clear myFile = Application.GetSaveAsFilename(MYPATH & myData, "EXCELファイル (*.xls), *.xls") If StrComp(myFile, "False") = 0 Then Exit Sub ActiveWorkbook.SaveAs myFile Loop While Err.Number > 0 End Sub

  • ワードで保存先を指定する

    http://okwave.jp/qa/q7366977.html http://okwave.jp/qa/q7370982.html の続きでお願いします。 ワードテンプレートを作成しています。入力後の保存先をNASの特定フォルダに自動的にできるような設定にしたいと考えています。 上記の質問で下記のようなマクロを提案されました。 Sub FileSaveAs() ' ' FileSaveAs Macro ' 作業中の文書を「顧客ID+日付」の名前で保存します。 ' Dim SaveDay As String Dim kokyaku As String Dim Fname As String SaveDay = Format(Date, "yymmdd") kokyaku = ActiveDocument.FormFields("顧客ID").Range.Text Fname = SaveDay & "_" & kokyaku ChangeFileOpenDirectory "フォルダパス名" ActiveDocument.SaveAs FileName:=Fname & ".doc" ' 名前を付けて保存ダイアログを表示する場合は以下を有効に ' Dialogs(wdDialogFileSaveAs).Show End Sub こによって、「名前を付けて保存」では目的を果たしましたが、「上書き保存では」規定のフォルダに保存されます。この際も”NASのフォルダ”に出来ますか? よろしくお願いします。

  • Excelマクロのエラー

    お世話になります。 マクロは、超初心者で只今、本やネットで勉強中なのですが、本の通りに作成しましたが、 エラーが出てしまいます。 急いでおりまして、大変お手数ですがご教示お願いできますでしょうか? Excel2007でマクロを作成中(実際に業務で使用する環境は2003です)。 2点あります。 (1)サブフォルダ内の全ブックを開く  ファイルは開くのですが、下記のエラーが出てしまいます。  C:¥...... "\web保存\"が見つかりません。ファイル名およびファイルの保存場所が  正しいかどうかを確認してください。 (2)開いたファイルをhtm保存する。  htm保存できるのですが、ファイル名が「●●●.xls.htm」  となってしまい、元のファイル名の.xlsの拡張子が付いたままです。  ファイル名を変えず、「●●●.htm」となるようにしたいです。 どうぞ宜しくお願い致します。 (1)サブフォルダ内の全ブックを開く Sub 全ブックを開く() Dim パス名 As String Dim ファイル名 As String パス名 = ThisWorkbook.Path & "\web保存\" ファイル名 = Dir(パス名 & "*.xls*") Do While ファイル名 <> " " Workbooks.Open パス名 & ファイル名 ファイル名 = Dir() Loop End Sub (2)開いたファイルをhtm保存する Sub htm保存() Dim wb As Workbook Dim wbname As String For Each wb In Workbooks wb.Activate If wb.Name <> ThisWorkbook.Name Then wb.SaveAs FileName:=ThisWorkbook.Path & "\" & wb.Name & ".htm", FileFormat:=xlHtml, CreateBackup:=False wb.Close savechanges:=False End If Next End Sub

  • Excelシート1シートのみを指定フォルダへ保存

    Excelのシート1のみを、本日の日付と名前の入ったセル(I7)を保存する時の名前にして指定したフォルダへ保存したいと思っています。 1、シートは本日の日付+I7セルに入っている値を名前にする。 2、フォルダはCではなくV:\○○\○○\○○\○○\○○\○○\○○に格納 3、シート1以外のシート2、シート3は保存せず閉じる 4、格納後○○に保存しました。と表示 試行錯誤し、下記のように記述してみたのですが、 Sub Macro1() 'Option Explicit Sub Sample() Dim xSheet As Worksheet Dim myFile As String Dim myName As String Set xSheet = ActiveSheet ThisWorkbook.Worksheets("シート名").Copy 'myName = ActiveWorkbook.Worksheets(1).Name 'myFile = ThisWorkbook.Path & "\" & myName & ".xls" myFile = ThisWorkbook.Path & "\" & xSheet.Range("I7").Value & ".xls" Application.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:=myFile Application.DisplayAlerts = True ActiveWorkbook.Close End Sub 日付を指定して保存 Sub test()  Dim Filename As String  Filename = Format(Date, "yyyy年mm月dd日") & ".xls"  ActiveWorkbook.SaveAs "C:\My Documents\" & Filename End Sub 日付とI7セルの名前を合せてブックの名前としたい場合どうVBEで記述すればいいのかわからないので詳しい方がおられましたら、 よろしくお願いいたします。 あまり詳しくないので、そのままコピーできるか、○○の部分を指定フォルダ名に変えてください。等の注釈を付けていただけると助かります。

専門家に質問してみよう