こんにちは。VBA初心者です。
エクセルファイルのシートを、いろいろ行を増やしたり計算を自動にするようにして、
最後にテキスト形式にするためのマクロをつくっております。

元のエクセルファイルの対象のシートをコピーして、新しいファイルを作成しペースト→保存→ファイルを閉じるところまでなんとかできました。
現在、下記のコードで新しいファイルは「マイドキュメント」に保存されていますが、元のエクセルファイルと同じ場所に保存したいのですが、どのようにコードを書けばよろしいでしょうか。
教えていただけますと幸いです。宜しくお願い申し上げます。

Sheets("TXT").Copy
Sheets("TXT").SaveAs FileFormat:=xlCurrentPlatformText, Filename:="今月.txt"
With Workbooks("今月.txt")
.Saved = True
.Close

このQ&Aに関連する最新のQ&A

A 回答 (1件)

ご希望かどうか?


Sheets("TXT").SaveAs FileFormat:=xlCurrentPlatformText, Filename:=ThisWorkbook.Path & "\今月.txt"
として試してみてください。
以下、参考です。

参考URL:http://www.moug.net/tech/exvba/0060050.htm
    • good
    • 1
この回答へのお礼

早速ありがとうございます。

試してみたところ、思いどおりになりました!
本当にありがとうございます。

URLも今後の参考にさせていただきます。

お礼日時:2009/05/17 17:40

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

QExcel VBAで同じフォルダ内のファイルを開くには?

Windows2000、Excel2000を使用しています。

「経理」というフォルダに「見積」「請求」の2つのExcelファイルがあります。
「見積」から「請求」を開くマクロを作りたいのですが、どうすればいいでしょうか?
「経理」フォルダは場所が変わることがあるので、パスをどうすれば良いかがわからず苦しんでいます。
VBAはまったくの素人で、本を見ながら挑戦しているのですがうまくできないのです。

どうかよろしくお願いします。

Aベストアンサー

必ず「経理」というフォルダに「見積」「請求」の2つのExcelファイルがあると仮定。

以下ならどうでしょう?

フォルダごと移動されても上記のお約束があれば大丈夫と思います。
以下の記述は「見積」に記述してください。



Sub BookOpen()
Workbooks.Open Filename:=ThisWorkbook.Path & "\請求.xls"
End Sub

Qエクセル マクロを使って同じフォルダ内にPDF保存したい。

マクロ初心者です。

エクセルで作成したものを ボタンを押すと作成したエクセルと同じフォルダに
エクセルと同じ名前で保存できるようにしたいです。

色々検索してPDFで保存することはできたのですが、
同じフォルダに保存することができません。

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF

End Sub

↑今は、このように作成してあります。
で、マイドキュメントに保存されてしまいます。

宜しくお願いいたします。

Aベストアンサー

すみません。, が抜けてました。
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=Left(ThisWorkbook.FullName, InStrRev(ThisWorkbook.FullName, ".")) & "pdf"

QSaveAsの保存先について

エクセルのマクロのついての質問です

よろしくお願いします

現在、下記のようなコードでマクロを実行するとパスワードをつけて上書き保存したような結果になっています(元のファイル名も○○.xlsで、指定したものと同一です)

Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:="○○.xls", FileFormat:=xlNormal, Password:="1111", WriteResPassword:="2222", ReadOnlyRecommended _
:=False, CreateBackup:=False
Application.DisplayAlerts = True

私の目的としてはそれでよいのですが、このように格納先を指定しなかった場合は

必ず元のファイルと同一のフォルダになるってくれるものなのでしょうか?

それとも状況によって別なところに名前をつけて保存されてしまったりすることがありますか?

Aベストアンサー

> 私の目的としてはそれでよいのですが、このように格納先を指定しなかった場合は
> 必ず元のファイルと同一のフォルダになるってくれるものなのでしょうか?

通常は、格納先パスを指定しなかった場合は、Excelのオプションで指定したカレントフォルダが
保存先になります。
ですが、Excelを開いてからSaveAsを行ったり、「名前をつけて保存」を
実行したりすると、そのときのパスが入るようです。

確実に同じフォルダに保存したい場合は、パスを指定した方が良いでしょうね。

例えば、上の例の場合は"○○.xls"を開いてそれを修正してまた保存する、
という形なんじゃないかと思いますが、そういう場合は"○○.xls"を
開いた直後に
 pathname = ActiveWorkbook.path
とパスを取得しておいて、SaveAsの中に
 Filename:= pathname & "\○○.xls"
と記述すればよいと思います。

なお、マクロのパスを取得したい場合は、
 pathname = Thisworkbook.path
で、できます。

Q保存先のフォルダ名を指定したいとき

希望する事は
ファイルを保存するフォルダを指定し、
ファイル名(インプットボックスをつかって
変数として入力させたもの)をつけて保存したい。
フォルダは事前に作成してあるが
保存したい場所はそのときによってまちまちなので
保存するたびにフォルダを指定したい。


具体的には
C:\入力済みデータ\【○○】としたいのですが
この【○○】の部分を、そのときに応じて選択するにはどうすればいいでしょうか。

または、浅知恵で
Application.Dialogs(xlDialogSaveAs).Show arg1:="c:\"
というかたちでダイアログボックスを出すまでは出来たのですが
ファイル名は空欄になってしまいますよね。

InputBoxでファイル名を変数として入力させたものを
上のファイル名に入れることは可能ですか?

どうぞよろしくお願いします。

Aベストアンサー

これでできませんか?
まず条件どおり、C:\入力済みデータ の中にいくつかのフォルダを用意しました。
Excel 2003 を新規に立ち上げ、新規ワークブックに標準モジュールを挿入し、以下のコードを書き込んで実行しました。

Sub hoge()
Dim initPath As String
initPath = "C:\入力済みデータ"
Dim saveFilePath As String
saveFilePath = Application.GetSaveAsFilename(initPath, "Excel File (*.xls),*.xls")
If Not (saveFilePath = "False") Then
ThisWorkbook.SaveAs saveFilePath
End If
End Sub

"ファイル名を指定して保存" のダイアログが表示され、初期フォルダとして C:\入力済みデータ が開かれています。
ファイル名は何も指定されていません。
ダイアログの中には当然、先に作っておいたいくつかのサブフォルダが一覧表示されているので、ユーザーは
1) サブフォルダを選択する。
2) ファイル名を入力する。
3) [保存] ボタンをクリックする。
というアクションを行う。

私のところではダイアログ表示時の初期フォルダとして My Documents ではなく、きちんと C:\入力済みデータ が開かれましたよ。

これでできませんか?
まず条件どおり、C:\入力済みデータ の中にいくつかのフォルダを用意しました。
Excel 2003 を新規に立ち上げ、新規ワークブックに標準モジュールを挿入し、以下のコードを書き込んで実行しました。

Sub hoge()
Dim initPath As String
initPath = "C:\入力済みデータ"
Dim saveFilePath As String
saveFilePath = Application.GetSaveAsFilename(initPath, "Excel File (*.xls),*.xls")
If Not (saveFilePath = "False") Then
ThisWorkbook.SaveAs saveFilePath
End If
End Su...続きを読む

Qエクセルマクロで任意のファイル名をつけて保存したい

 エクセルVBAについての質問です。
 エクセルのマクロで、Aというファイルを開いて、そのうち必要なワークシートだけを抽出し、新しいブックに移動し、その新しいブックを新しいブックのsheet1のセルC2の文字列をファイル名として保存するようなマクロをくみたいと思っています。
 ファイルを開いて必要なワークシートだけを抽出し、新しいブックに移動するところまではできましたが、新しいブックのセルC2の文字列をファイル名として保存することができません。FNを変数として宣言して、C2の文字列を代入し、FNをファイル名として保存しようとすると、ファイルにFNという名前が付いてしまいます。どうすれば、C2の文字列をファイル名として保存できるのでしょうか。なお、保存するフォルダはc:\変換ファイル\6月です。どなたか教えてください。よろしくお願いします。

Aベストアンサー

FNを文字列として扱っていませんか?以下でどうでしょう?


Sub 保存()

Dim FN As String
FN = Range("C2")
ActiveWorkbook.SaveAs Filename:="C:\変換ファイル\6月\" & FN & ".xls"
End Sub

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

どうぞよろしくお願いします。

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む

QExcelでセル内の文字をファイル名にする方法と、下のSheet1タブを2列にする方法は?

Excel2003です。OSはWinXPです。質問は2つです。

1.セル内の文字をファイル名にする方法は?
例えばA1セルに 1153 と入っていたら、ファイルの名前を付けて保存するとき、普通は Book1.xls となりますが、
これを 1153.xls とするにはどうしたらよいですか?

2.下のSheet1タブを2列にする方法は?
EXcelの下の方にシート切り替えがありますが、これを2列にするにはどうしたらよいですか?

Aベストアンサー

1は、前回の回答で間違いありませんが、もう少し詳しく処理方法を書きます。

(1)そのBookを開き、ツール→マクロ→新しいマクロの登録を選択。
(2)ダイアログボックスを確認、マクロ名(今回はMacro1のまま)を入力し、OK。
(3)そのBookを適当な名前(今回はBook1)で保存し、マクロの記録を終了。
(4)ツール→マクロ→マクロを選択、マクロ名を選択し、編集ボタンを押す。
すると、下記のようなモジュールが現れる。
Sub Macro1()
'
' Macro1 Macro
' マクロ記録日 : 2006/8/29
'
ChDir "C:\Documents and Settings\管理者\保存するフォルダ○○"
ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\管理者\保存するフォルダ○○\Book1.xls", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
End Sub

ので、Filename:=の後の " から .xls" までを Range("A1") & ".xls" と変更する。

2については済みません。解りません。

1は、前回の回答で間違いありませんが、もう少し詳しく処理方法を書きます。

(1)そのBookを開き、ツール→マクロ→新しいマクロの登録を選択。
(2)ダイアログボックスを確認、マクロ名(今回はMacro1のまま)を入力し、OK。
(3)そのBookを適当な名前(今回はBook1)で保存し、マクロの記録を終了。
(4)ツール→マクロ→マクロを選択、マクロ名を選択し、編集ボタンを押す。
すると、下記のようなモジュールが現れる。
Sub Macro1()
'
' Macro1 Macro
' マクロ記録日 : 2...続きを読む

QExcel VBAで複数シートをコピーする

Excel VBAで複数のシートを新たらしいブックにコピーする方法が分かりません。

一応、Selectで全てのシートを選択し
コピーする方法は分かるのですが
出来ればSelectなどの画面遷移をプログラム内に含ませたくありません

シートは n件存在します。
ご存知の方がおられましたら
ぜひ、教えて頂けないでしょうか?

Aベストアンサー

すいません、勉強不足でした。
ただ単純に「全てのシートを選択」し「新規ファイルにコピー」という動作であれば、
sheets.Select
sheets.Copy
だけでできました。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報