コピー元ファイル名を自動入力する方法
- コピー元ファイル名で毎回コピペを月に数回csvファイルからマクロ登録エクセルへデータをコピーしている場合、ファイル名をマクロ編修で毎回書き換えるのを自動化する方法はありますか?
- コピー元ファイル名を自動入力するか、ユーザーがコピー元ファイル名を指定することで、以下のマクロを動かす方法があれば教えてください。
- Dim 最終行 As Integerのコードを使用して、コピー元ファイルを自動入力する方法を知りたいです。
- ベストアンサー
コピー元ファイル名で毎回コピペを
月に数回csvファイルからマクロ登録エクセルへデータをコピーしております。 ファイル名をマクロ編修で毎回書き換えているのを自動でする方法は? (1)開いたコピー元のファイル名を自動入力 あるいは (2)ユーザーがコピー元ファイル名を指定して 以下のマクロを動かせる方法があればご教示いただきたい。 よろしくお願いいたします。 Dim 最終行 As Integer '表の最終行を変数として定義するコード Range("A2").Select Windows("?????.csv").Activate ↑ここに開いたコピー元ファイル名を自動入力したい 以下コピー範囲.... 最終行 = Range("B65536").End(xlUp).Row 'エクセル表の最終行↓からデータの最終行↑を検索
- matban
- お礼率60% (3/5)
- Excel(エクセル)
- 回答数3
- ありがとう数5
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
既に開いているCSVファイル名を取得したいのでしたら下記方法でも取得可能です。必ずファイル名を取得したいCSVファイルがアクティブの状態でマクロを実行する事が前提です。 仮にabc.csvというファイル名の場合。 Dim Mybook, FName As String Dim MaxRow As Long Mybook = ActiveWindow.Caption FName = Replace(Mybook, ".csv", "") MaxRow = Cells(Rows.Count, 2).End(xlUp).Row mybookには"abc.csv"という変数名になります。 FNameには"abc"という変数名になります。 MaxRowは最終行取得です、数値の2はB列ですので2番目の列という意味です。 エクセルはバージョン2007から列数が2003の約倍になりました。最終行を取得するには上記方法であればバージョンが変わっても取得可能です。
その他の回答 (2)
- chie65535
- ベストアンサー率43% (8524/19375)
手で入力させるのが面倒な場合は、ファイル選択ダイアログを用います。 ファイル選択ダイアログの「初期フォルダの位置」は、カレントドライブ、カレントディレクトリで決まりますから、ダイアログを呼び出す前に、カレントを変更してあげましょう。 Dim 最終行 As Integer '表の最終行を変数として定義するコード 'ダイアログボックス用の変数を宣言 Dim Fn As Variant 'ファイル名用の変数を宣言 Dim FileName As String 'カレントドライブをC:にする ChDrive "C" 'カレントディレクトリをC:\TEMPにする ChDir "C:\TEMP" 'ファイル選択ダイアログの表示 Fn = Application.GetOpenFilename("CSVファイル(*.csv),*.csv", 1, "CSVファイル選択", "開く", False) 'ダイアログで「キャンセル」をおされた場合の処理 If Fn = False Then MsgBox ("処理を中断しました") Exit Sub End If 'ダイアログからファイル名を受け取る FileName = Fn Range("A2").Select Windows(FileName).Activate 以下コピー範囲.... 最終行 = Range("B65536").End(xlUp).Row 'エクセル表の最終行↓からデータの最終行↑を検索
- chie65535
- ベストアンサー率43% (8524/19375)
Dim 最終行 As Integer '表の最終行を変数として定義するコード 'ファイル名用の文字列変数の宣言 Dim FileName As String '今日の日付からデフォルトのファイル名を生成する FileName = Format(Now(), "yyyymmdd") & ".csv" 'デフォルトのファイル名を書き換える、または、ユーザーに別の名前を指定させる処理 FileName = InputBox("ファイル名を入力して下さい", "ファイル名入力", FileName) Range("A2").Select Windows(FileName).Activate (以下略)
お礼
日付の指定がユーザーに易しいと思います。 ありがとうございました。
関連するQ&A
- EXCELでCSVファイルの読込み
VBA超初心者でとても困っています。 仕事でEXCELのVBAを使って 現在開いているシートの中に 1つのCSVファイルからデータを読み込むのですが CSVデータの2行目をEXCELのC2へ。 4~10行目までを、EXCELのB5~B14へ マクロを使い、ボタン一つで自動入力させたいのです・・・。 Line Input も、やり方が悪いのかうまくいきません。 ヒントとなるやり方があればぜひ教えてください。
- ベストアンサー
- その他(プログラミング・開発)
- エクセルで、毎回違う行数をコピーするマクロ
こんにちは Excel2003 を使用しています。 マクロを使って毎回行数が違うデータをコピー貼り付けをしたいのですが よく分かりません。コピー先の最終行そろえのコピーの方法もお願いします。 毎回データ行数が違う2つの表を、新しい表の上の部分と下の部分に分けてコピーしたいのです。 コピー元1 0~20行 コピー元2 0~20行 1と2の合計は、0~20行です。多くても20行まで。 コピー元1を1行目から、コピー元2の最下行を20行目に揃えて、 貼り付け先の表には、上部と下部の間に空白行が入っOKです。 (例) コピー元1 コピー元2 X Y Z AA AB AC 1鈴木 千葉 男 1山本 大阪 男 2田中 東京 女 2高橋 京都 女 3 3 ↓↓ 貼り付け先 A B C 1鈴木 千葉 男 2田中 東京 女 3 ・ ・ 18 19山本 大阪 男 20高橋 京都 女 のように上部と下部に分けてコピーしたいのです。 行数は毎回ちがい、合わせて20行の場合は、空白行はなくなります。 説明が、つたなく申し訳ありませんが よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- 毎回、データの行数が変化しているため、コピー・ペーストが、、困った。
Sheet1には、毎日入荷する商品のデータを2行目から入力します。 (例ですが、1行目はタイトル:A1=日付、B1=商品名、C1=Data1、D1=Data2) 毎日入荷する商品数が1個~20個位まで変化します。 Sheet2に、年間仕入元表があり、その最終行の1行下へ毎日入荷するデータをペーストするマクロを作りたいのです。 毎日入荷するデータのカット(コピー)するところが(行数が変化しているため)初心者の私ではマクロで出来ず、困りました。 教えて!gooの過去の質問を見てきましたが、基本の基本でしょうか?ヒントとなる質問が無く、ここに質問させてください。 VBAの初心者ですが、プロシージャを示していただければ、内容を読めると思います。
- ベストアンサー
- オフィス系ソフト
- csvファイルの読み込みができません。
csvファイルの読み込みができません。 過去にExcelで作成したデータをcsvに変換するマクロを作ってもらいました。 (Excel表の中にマクロを登録したボタンがあって、それをクリックするとcsvファイルが作成される) そのcsvファイルをそのまま使用すると、読み込みができますが、一旦csvファイルを開いて一部データの変更をして保存すると読み込みができなくなります。 また、自動にファイル名が設定されるので、わかりやすいようにファイル名を変更しただけでも読み込みができなくなります。 csvファイルにも種類があるんでしょうか?
- ベストアンサー
- オフィス系ソフト
- 「コピペ」するExcelマクロで困っています。
エクセルのマクロの自動作成ツールで、下のようなコピペのマクロを作ってみました。 シートをコピーして貼り付けるところまでは動きますが、その後に用済みの「ABCD.csv」を閉るところで、メッセージ画面が出て止まってしまいます。 良く見てみると、その後に開く「はい」「いいえ」「キャンセル」の選択画面(参考画面)の指示が自動では記入出来ないようで、色々調べてみましたがどうもうまくいきません。 Windows("ABCD.csv").Activate Range("A1:B10").Select Selection.Copy Windows("DATA.xlsm").Activate Range("A1").Select ActiveSheet.Paste Windows("ABCD.csv").Activate ActiveWorkbook.Saved = False ActiveWindow.Close この画面で、「いいえ」を選択するマクロを、誰か教えてください。 マクロを始めてまだ一週間なのでまったくわからず困っています、よろしくお願いします。
- ベストアンサー
- Visual Basic
- csvファイルとexcelをマージ
定期的にcsvファイルが手元に届きます。csvファイルをそのまま印刷しても見栄えが悪いので前もって表らしい書式のexcelファイルを作成しており(列行幅の設定・タイトル・罫線等)、それにcsvファイルからカット&ペーストして値だけをコピーしています。 excelマクロを組めば自動で可能だとは思うのですが、結構ファイルの種類も多いので汎用的なツールって無いでしょうか?
- 締切済み
- オフィス系ソフト
- Excel マクロ 最終セルが毎回違う場合
マクロ初心者です。 自動記録でマクロを作りました。 最終行が毎回違うので、「コピー(オートフィル)をA列の最終行にあわせてする」と作りたいです。 自動記録ではJ71までコピーになっていますが、J71をA列の最終行にしたいです。 よろしくお願いします。 Range("G3:J3").Select Selection.AutoFill Destination:=Range("G3:J71"), Type:=xlFillDefault Range("G3:J71").Select
- ベストアンサー
- オフィス系ソフト
- 一時的にファイル名、シート名を変えて処理することは出来ますか?
VBAを勉強中で、分からないので教えてください。 2つのWorkbook間でCopy、Pasteを繰り返し、必要なデータ を一覧に書込みするマクロを作成する時 Excelデータ(同じフォーマットでセルに入っているデータが少し ずつ違う)で、異なるファイル名、異なるシート名になってしまって いるものをマクロで処理をしたいのですが、VBAで書き込む時 にはWorkbooks("○○").Worksheets("○○")と指定しなくて は動作してくれないので、どのように指定したらいいか困っています。 「直前にアクティブだったWorkbook指定する」「先頭に位置する sheetを指定する」なんてコードがあれば、一番いいのですが、 そういうコードはあるのかもわかりません。 最終的には"あるセル"に入っているファイル名で保存してしまう ので、一時的に仮ファイル名、仮シート名に変えて、後に削除 して処理をすればいいかなとが思うのですが、どうやって処理 したらいいのかわかりません。 やりたい事をうまく説明出来ているかわかりませんが、ファイル名、 シート名が違う元のデータから、一覧表へ書き込むマクロを組み たいのです。その際の元データの指定方法を知りたい or 一時的 に名前を変えて処理する方法を知りたいです。 一覧表へ書込みをした後にメールで添付してその元データ (”あるセル”にファイル名変更したもの)を送り返したいのですが、 メールへ添付する事までマクロで出来ると助かります。マクロで そこまで出来ますか?これも合わせて教えていただけたらと思います。 つたない説明ですみませんが、よろしくお願いします。
- ベストアンサー
- Visual Basic
- エクセルファイルの1レコード(1行)を1csvファイルへ変換マクロ
エクセルファイルの1レコード(1行)を1csvファイルへ変換し、エクセルファイルにあるレコード数分だけあるフォルダに自動作成するマクロを教えて下さい。 因みに、csvファイル名は、エクセルデータの『a列.csv』となるようにしたいです。 【例】 本日2007/11/13 ○○.xls A列 B列 C列 111 1 356 13 1 2 ・ ・ ・ ・ ・ ・ 111.CSV "2007/11/13(火)","1","356,"","","" 13.CSV "2007/11/13(火)","1","2,"","","" 変換後のcsvの中身は 1列目に、本日の日付 2列目に、1 3列目に、変換元のエクセルファイルの3列目 4、5、6列目に空白 という形式です。 どなたかお分かりになるかた、ご教授願います。
- 締切済み
- Visual Basic
- エクセルの行挿入とコピー
よろしくお願いいたします。 A B C D 1 123 123 123 123 2 444 555 666 777 3 890 890 890 890 4 000 000 000 000 上のようなエクセルの表(Excel2003)があるとします。 この表の1行目と2行目の間に、1行目のデータを9行コピーするための方法を教えてください。 実行後は1~10行目は全く同じデータ、11~20行目に2行目のデータがあり、同じように末尾行まで繰り返すということです。 自分でも色々と検討してみましたが、なかなかうまくいきません。 行挿入だけであればできるのですが、コピーまで同時に実行する必要があります。 元の表は3000行ほどあるため、とてもじゃありませんが手動では実行できませんので、マクロで末尾行(Excel2003の65000行)まで自動実行する方法を教えていただきたいのです。 すみませんがよろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
お礼
詳しい回答ありがとうございます。 確認してやってみます。