• 締切済み

エクセルで繰り返し同じ作業をしたい

仕事でDドライブの中のフォルダにエクセルのシートが100種類位入っています。それらのエクセルシートに毎日同じ作業をしなければならないのですが、(エクセルを開いて行う作業は各シート共通です)そのマクロの作り方を教えていただけないでしょうか?ちなみに Workbooks.Open Filename:="D:\業務\あ.xls" Range("D9").Select Selection.Copy Range("E9").Select ActiveSheet.Paste Application.CutCopyMode = False ActiveWorkbook.Save ActiveWindow.Close Workbooks.Open Filename:="D:\業務\い.xls" Range("D9").Select Selection.Copy Range("E9").Select ActiveSheet.Paste Application.CutCopyMode = False ActiveWorkbook.Save ActiveWindow.Close Workbooks.Open Filename:="D:\業務\う.xls" Range("D9").Select Selection.Copy Range("E9").Select ActiveSheet.Paste Application.CutCopyMode = False ActiveWorkbook.Save ActiveWindow.Close      その後もまだまだ続きます。 というマクロの記録を使って作ってはいるものの、やたらと長くなってしまいます。VBAの知識がない初心者なのですが、いい方法があれば教えていただけないでしょうか?

みんなの回答

回答No.4

File System Objectを使った方法です。 Sub Test() Dim myFolder As String Dim f As Object Dim wb As Workbook Dim FSO As Object Application.ScreenUpdating = False Set FSO = CreateObject("Scripting.FileSystemObject") myFolder = ThisWorkbook.Path For Each f In FSO.GetFolder(myFolder).Files If FSO.GetExtensionName(f) = "xls" _ And f.Name <> ThisWorkbook.Name Then Set wb = Workbooks.Open(myFolder & "\" & f.Name) With wb .Sheets("Sheet1").Range("D9").Copy Sheets(1).Range("E9") .Save .Close End With End If Next Application.ScreenUpdating = True Set wb = Nothing Set FSO = Nothing End Sub このマクロを新規ブックの標準モジュールに記述して D:\業務フォルダに放り込んで実行します。 各ブックの対象シートが明示されていなかったので Sheet1としてありますが、実状に合わせて変更してください。

piropiro101
質問者

お礼

ずいぶんお礼が遅くなって申し訳ありませんでした。操作に不慣れなもので・・・。参考にさせていただきます。ありがとうございました。

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

ファイル名をどこかへ覚えさせて、順々に変化させて繰り返せばよい。その記録させる場所だが、配列も良いが、せっかくエクセルVBAで シートのセルと言う便利なものがあるので あるシートのA1以下にファイル名を入力し記録する。 あ.xls い.xls う.xls ・・・ 下記を標準モジュールに貼り付け、パス名を実際のものに修正する。 そして実行する。 Sub test01() Dim sh1 As Worksheet Set sh1 = Worksheets("Sheet1") d = sh1.Range("A65536").End(xlUp).Row ' MsgBox d For i = 1 To d Workbooks.Open Filename:="C:\Documents and Settings\XXXX\My Documents\" & sh1.Cells(i, "A") Range("D9").Select MsgBox Range("D9") Selection.Copy Range("E9").Select ActiveSheet.Paste Application.CutCopyMode = False ActiveWorkbook.Save ActiveWindow.Close Next i End Sub 上記はあ。xlsなどのSheet1のD9セルを、同じブックのShhet1のE9セルにコピー貼り付けしているだけです。 あまり実際二ーズが考えられない例だが。 Application.ScreenUpdating = False を最初に Application.ScreenUpdating = True を最後に入れたほうが良いでしょう。 一応3ブックでテスト済み。

piropiro101
質問者

お礼

ずいぶんお礼が遅くなって申し訳ありませんでした。操作に不慣れなもので・・・。参考にさせていただきます。ありがとうございました。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

Dドライブの業務フォルダーにはいっている、自分自身(このマクロを書くファイル)以外の全てのエクセルファイルのアクティブになったシートに対して実行する方法です。 Sub test() Application.ScreenUpdating = False '画面更新を一時停止 fname = Dir("D:\業務\*.xls") 'フォルダ内のExcelファイルを検索 Do Until fname = Empty '全て検索し終えると、fname = Empty となるので、その間以下を実行 If fname <> ThisWorkbook.Name Then 'ファイル名がこのファイルじゃなければ Workbooks.Open "D:\業務\" & fname '選択したファイルを開く Range("D9").Copy Range("E9").PasteSpecial Application.CutCopyMode = False ActiveWorkbook.Save ActiveWorkbook.Close n = n + 1 End If fname = Dir '選択したフォルダ内の次のExcelファイルを検索します Loop '繰り返す Application.ScreenUpdating = True '画面更新一時停止を解除 MsgBox n & "件の作業を終了しました。" End Sub 元データのバックアップを必ずとってから実行してみて下さい。

piropiro101
質問者

お礼

ずいぶんお礼が遅くなってすいませんでした。なにぶん始めての質問だったもので申し訳ありません。参考にさせていただきます。ありがとうございました

  • molly1978
  • ベストアンサー率33% (393/1186)
回答No.1

VBAを使うしかないと思います。例えば、 1.新しいワークシートに、[表示]-[ツールバー]-[コントロールツールボックス]を開き、コマンドボタンを置く 2.コマンドボタンをダブルクリックして、VBAを開き、コードを記述する。 Private Sub CommandButton1_Click() Dim f(100) As String f(1) = "D:\業務\あ.xls" f(2) = "D:\業務\い.xls" f(3) = "D:\業務\う.xls" …<同様の記述> i = 1 Do Subcopy (f(i)) i = i + 1 Loop While i < 100 End Sub Private Sub Subcopy(file) Workbooks.Open Filename:=file Worksheets("Sheet1").Range("D9").Select Selection.Copy Worksheets("Sheet1").Range("E9").Select ActiveSheet.Paste Application.CutCopyMode = False ActiveWorkbook.Save ActiveWindow.Close End Sub 3.エクセルファイルを名前を付けて保存する。 4.エクセルファイルを開き、ワークシート上のボタンを押してマクロを実行する。 こんな流れですが、業務ファイルを破壊する恐れがありますので、 ☆VBAに慣れた人に相談する ☆作動を十分に確認する ☆元データのバックアップを必ずとる を行ってから実行して下さい。

piropiro101
質問者

お礼

丁寧にお答えいただきまして本当にありがとうございます。早速バックアップを取った後に教えていただいたコードで試して見たいと思います。ありがとうございました。

関連するQ&A

  • エクセルでマクロを組み始めたばかりの者です。下記の

    エクセルでマクロを組み始めたばかりの者です。下記のようなマクロを組んでみましたが、27行目もしくは41行目のActiveSheet.Pasteで「実行時エラー‘1004‘: 変更しようとしているセルまたはグラフは保護されているため読み取り専用となっています…」というエラーメッセージが出て止まってしまいます。 しようとしている内容は、転送ボタンを押し各シートの指定セルへ一括転送(コピー)をしたいのです。 その際、転送先はシート保護をしておきたいのです。 エラーはエクセル2010で確認しましたが、職場のPCを使用するため2007や2003等他のバージョンを利用する可能性もあります。また、仕事で使用するため早急に使わなければならず焦っています。 Option Explicit Private Sub CommandButton2_Click() Call Macro2 End Sub Sub Macro2() Workbook.Open Filename:=”K:¥共有¥○○○.xlsm” ActiveSheet.Unprotect ThisWorkbook.Activate Range(”D4:G20”).Select Selection.Copy Windows(”○○○.xlsm”).Activate Range(”E7”).Select ActiveSheet.Paste Application.CutCopyMode = False ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True ActiveWorkbook.Save ActiveWindow.Close Application.CutCopyMode = False Workbook.Open Filename:=”C:¥Users¥Desktop¥×××.xlsm” ActiveSheet.Unprotect ThisWorkbook.Activate Range(”D4:G20”).Select Selection.Copy Windows(”×××.xlsm”).Activate Sheet(”△△△”).Select Range(”AF18:AI34”).Select ActiveSheet.Paste Application.CutCopyMode = False ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True ActiveWorkbook.Save ActiveWindow.Close Application.CutCopyMode = False Workbook.Open Filename:=”K:¥共有¥□□□.xlsm” ActiveSheet.Unprotect ThisWorkbook.Activate Range(”D4:G20”).Select Selection.Copy Windows(”□□□.xlsm”).Activate Sheet(”▽▽▽”).Select Range(”AF18:AI34”).Select ActiveSheet.Paste Application.CutCopyMode = False ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True ActiveWorkbook.Save ActiveWindow.Close Application.CutCopyMode = False MsgBox " 『○○○』と" & vbCrLf & "『×××』と" & vbCrLf & "『□□□』の" & vbCrLf & "規格を変更しました。" End Sub どの様に修正すれば良いのでしょうか? マクロが原因でしょうか?または他の原因があるのでしょうか? マクロ初心者のため、修正方法など具体的な詳細をお教えいただけないでしょうか。 お手数をおかけして申し訳ございませんが、よろしくお願いします。

  • エクセルで複数ファイルからコピーをする。

    すみませんが、BOOK1に複数のファイルから部分的にコピーして貼り付けるという作業をしたいのですが、ど素人なもんでわかりません。マクロで記録したモノをいじってみてるのですが、根本的にコードが分かっていなくギブアップです。  やりたいことは、フォルダーの中の970305日報1、970305日報2、970306日報1、970306日報2のようなファイルが山ほどあるのですが、 この970305の日報1と2を開き、それぞれファイルの決まった列を順番にをBook1の行へ行列を入れ替えて貼りつけていき(1日が1行)保存して閉じてから、次の日970306のデータをBOOK1の2行目に貼り付けるということをしたいのですが、どなたか教えていただければ助かります。よろしくお願いします。 Sub Macro2() Dim MyFile As String, MyPath As String Dim wb As Workbook, tb As Workbook Set tb = ThisWorkbook MyPath = tb.Path & "\" MyFile = Dir(MyPath & "*.xls", vbNormal) Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Do While MyFile <> "" If MyFile <> tb.Name Then Set wb = Workbooks.Open(MyPath & MyFile) With ActiveSheet Windows("970305日報1.xls").Activate Range("B34:B38").Select Application.CutCopyMode = False Selection.Copy Windows("日報リスト.xls").Activate Range("C1").Select Selection.PasteSpecial Paste:=xlPasteAll,         Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Windows("970305日報1.xls").Activate Range("C33:C38").Select Application.CutCopyMode = False Selection.Copy Windows("日報リスト.xls").Activate Range("H1").Select Selection.PasteSpecial Paste:=xlPasteAll,       Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Application.CutCopyMode = False ActiveWorkbook.Save Windows("970305日報1.xls").Activate ActiveWindow.Close Windows("970305日報2.xls").Activate Range("B31:B36").Select Selection.Copy Windows("日報リスト.xls").Activate Range("N1").Select Selection.PasteSpecial Paste:=xlPasteAll,   Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Windows("970305日報2.xls").Activate Range("D31:D36").Select Application.CutCopyMode = False Selection.Copy Windows("日報リスト.xls").Activate Range("T1").Select Selection.PasteSpecial Paste:=xlPasteAll,   Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Application.CutCopyMode = False ActiveWorkbook.Save Windows("970305日報2.xls").Activate ActiveWindow.Close Windows("970306日報1.xls").Activate Range("B34:B38").Select Application.CutCopyMode = False Selection.Copy Windows("日報リスト.xls").Activate Range("C2").Select Selection.PasteSpecial Paste:=xlPasteAll,   Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Windows("970306日報1.xls").Activate Range("C33:C38").Select Application.CutCopyMode = False Selection.Copy Windows("日報リスト.xls").Activate Range("H2").Select Selection.PasteSpecial Paste:=xlPasteAll,   Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Application.CutCopyMode = False ActiveWorkbook.Save Windows("970306日報1.xls").Activate ActiveWindow.Close -----------------------------------------

  • 実行時エラーについて

    Konkon_mと申します よろしくお願いします エクセルの質問なんですが、今回ワークシートから別のワークシートに表と数値を貼り付けるマクロを作成したのですが終了時に、『実行時エラー'1004' WorksheetクラスのPasteメソッドが失敗しました』のエラーがでるのです 一応、コピー&貼り付けはきちんと終了しているようなのですがすごく気になります 作成したマクロを載せますので、わかる方がいらっしゃいましたら教えていただけないでしょうか? 宜しくお願いします ChDir "H:\A\B" Workbooks.Open FileName:="\\PRO800\Home Directory\B\B\コピー.xls" ActiveWindow.WindowState = xlMinimized Range("B3:D10").Select Selection.Copy ActiveWindow.WindowState = xlMinimized ActiveWindow.WindowState = xlNormal ActiveWindow.WindowState = xlMinimized Windows("コピー.xls").Activate ActiveWindow.WindowState = xlNormal Range("B3").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Range("B3:D10").Select Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Range("A1").Select ActiveWorkbook.Save ActiveWindow.Close ActiveWindow.WindowState = xlNormal Range("B3").Select ActiveSheet.Paste Application.CutCopyMode = False Range("A3").Select ActiveWindow.WindowState = xlMaximized End Sub

  • Excel VBA連続コピー、貼付処理について

    特定のフォルダ内に格納されている複数のExcelファイルの「sheet1」シートのデータを 所定のExcelファイルにコピー&ペーストしたいのですが、うまくいきません。 (貼付先のファイルを閉じようとするとエラーが発生します。) どうすればできるようになるでしょうか? ご教授の程よろしくお願いいたします。 -------------------------------------------------------------------- Sub copy_test() Dim myPath As String Dim copyFile As String Dim pasteFile As String Dim n As Long myPath = "C:\copy\" copyFile = Dir(myPath & "*.xls*") pasteFile = "C:\paste\paste_data.xlsx" n = 2 Do Until copyFile = "" Workbooks.Open Filename:=myPath & copyFile Workbooks(copyFile).Worksheets("sheet1").Range("A2:L201").Copy Workbooks.Open Filename:=pasteFile 'Workbooks(pasteFile).Worksheets("paste_data").Active Range("B1").Select Selection.End(xlDown).Select Selection.End(xlToLeft).Select Selection.End(xlUp).Select ActiveCell.Offset(1, 0).Select ActiveSheet.Paste ActiveWorkbook.Save Workbooks(pasteFile).Close False Application.CutCopyMode = False Workbooks(copyFile).Close False n = n + 999 copyFile = Dir() Loop End Sub ---------------------------------------------------------------------------------

  • VBAの勤務割表の式を短く

     月間の勤務割表を作成しています。 1列3行を一枡として一人・一日の枡とし、勤務の割り振り状態を表示するものです。 列に日付、行を個人名(max16名)とし1列3行を名前の定義で13種類作成してあります。 別シートの各セルの入力番号に応じて13種類を貼り付けていますが、式を簡単にできませんでしようか?  お教えくださいませんでしょうか?勉強不足は否めませんが。 尚名前の定義は、1行3列に1--で勤務1・""-""で日勤・""公休""で公等にしてあります。 OS Windows7 Office2010 Sub 図形の貼付け2() If Worksheets("メイン").Range("J9").Value Then Select Case Worksheets("メイン").Range("J9").Value 1人-1日 Case 1: ActiveSheet.Range("勤務1").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False Case 2: ActiveSheet.Range("勤務2").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False Case 3: ActiveSheet.Range("勤務3").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False Case 4: ActiveSheet.Range("日勤1").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False Case 5: ActiveSheet.Range("日勤2").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False Case 6: ActiveSheet.Range("日勤3").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False End Select Else Select Case Worksheets("メイン").Range("I9").Value Case 2: ActiveSheet.Range("明け").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False Case 4: ActiveSheet.Range("夜勤").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False Case 5: ActiveSheet.Range("公").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False Case 6: ActiveSheet.Range("有").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False Case 7: ActiveSheet.Range("特").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False Case 8: ActiveSheet.Range("振").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False Case 9: ActiveSheet.Range("欠").Select Selection.Copy Range("D10").Select ActiveSheet.Paste Application.CutCopyMode = False End Select End If End Sub

  • 毎回最終セルを探す。

    お世話になります。 マクロは組めないので、 マクロの記録で作ってみましたが、 ActiveCell.SpecialCells(xlLastCell).Select Range("A8356").Select これは、ctrl+end で、最終行を選び、 Home で、A列に行き、カーソルで1行下げました。 そうすると、("A8356")と、固定されてしまい、 次の『Book2』のデータは、下に蓄積されずに、 同じところから上書きをされてしまいます。 ちなみに、全文を載せさせていただきます。 どうすればよいのでしょうか? よろしくお願い致します。 ActiveCell.SpecialCells(xlLastCell).Select Range("A8356").Select Workbooks.Open Filename:= _ "C:\Documents and Settings\t.t\My Documents\Book2.xls" Range("A1").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.Copy Windows("6965.xls").Activate ActiveSheet.Paste ActiveWindow.SmallScroll ToRight:=8 Columns("T:T").Select Range("T8327").Activate Application.CutCopyMode = False Selection.Style = "Comma [0]" ActiveWorkbook.Save Windows("Book2.xls").Activate ActiveWindow.Close ActiveCell.SpecialCells(xlLastCell).Select Range("A8409").Select End Sub

  • エクセル VBA 繰り返し コピー貼り付け

    以下を繰り返し作業をOffsetを使用して行いたいのですがどうすればいいでしょうか? Sheets("Sheet1").Select Range("A1:C1").Select のA1:C1以下へA1000:C1000ぐらいあります。 Sheets("Sheet2").Select Range("G1").Select は貼り付けたセル3つの数字の組み合わせで公式に使う計算期間がまちまちですので公式を張り付けたり出来ません。 D1の解を heets("Sheet1").Select Range("D1").Select に貼り付けてA1:C1以下1000までの結果を評価出来るようにしたいのですが! ' Macro1 Macro Sheets("Sheet1").Select Range("A1:C1").Select Selection.Copy Sheets("Sheet2").Select Range("D1").Select ActiveSheet.Paste Range("G1").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet1").Select Range("D1").Select ActiveSheet.Paste Range("A2:C2").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("D1").Select ActiveSheet.Paste Range("G1").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet1").Select Range("D2").Select ActiveSheet.Paste Range("A3:C3").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("D1").Select ActiveSheet.Paste Range("G1").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet1").Select Range("D3").Select ActiveSheet.Paste End Sub よろしくおねがいします。

  • オートフィルタをし選択・貼付をマクロにしたいのですが、対象データ表示される行が毎回違うのでうまくいきません。

    いつもお世話になっております。 どなたかご教示いただければ助かります。 ファイル(1)のデータの中からA行が830となっているものを、ファイル(2)のページ1の一番下の行に付け足し 同じようにファイル(1)からA行が1000となっているものを、ファイル(2)のページ2の一番下に付け足す という作業をマクロでしたいのですが、毎回830と1000がセルAの何行目に表示されるのかが異なっており、オートフィルタをかけた状態でマクロにするとマクロ作成時にたまたま表示されていた行数が指定されているので、別の日に違う行数をコピーしてしまい私が作成したマクロではうまくいきません。 どう変更すれば宜しいでしょうか? どうぞ宜しくお願い致します。 Workbooks.Open Filename:="mm.xls"    ←上記文でファイル(1) Sheets(DM).Select Rows("1:1").Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="<>*850*", Operator:=xlAnd, _ Criteria2:="<>*1000*" Range("A2").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select Selection.EntireRow.Delete ActiveSheet.Rows("1:1").Select Selection.AutoFilter Windows("xx.xls").Activate  ←ファイル(2) Sheets("ll").Select   ←ページ1  ActiveSheet.Range("A1").Select Selection.End(xlDown).Select ActiveCell.Offset(1, 0).Activate Windows("mm.xls").Activate Rows("1:1").Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="1000" Rows("3:3").Select Selection.Copy Windows("xx.xls").Activate ActiveSheet.Paste Application.CutCopyMode = False Windows("xx.xls").Activate Sheets("pp").Select  ←ページ2 ActiveSheet.Range("A1").Select Selection.End(xlDown).Select ActiveCell.Offset(1, 0).Activate Windows("mm.xls").Activate Rows("1:1").Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="850" Rows("2:2").Select Selection.Copy Windows("xx.xls").Activate ActiveSheet.Paste Application.CutCopyMode = False ActiveWorkbook.Save Windows("mm.xls").Activate ActiveWindow.Close End Sub

  • メッセ-ジボックスを非表示に出来ますか

    マクロ初心者です 先日ココで助けて頂きファイルの読み込みの記述を教えて頂き 下記記述を作りました が!一つ問題がありまして再度助けて頂きたいのですが コピ-したあとそのファイルが不要の為閉じますが その際メッセ-ジボックスが現れ 「クリップボ-ドに大きな情報があります。この情報をほかのプログラムに貼り付けられるようにしますか?」 と、 「クリップボ-ドに保存されているデ-タの大きさや形が、指定された領域と異なります。貼り付けますか?」 と現れるのですが、このメッセ-ジを表示しないようにしたいのですが 何か良い手はありますでしょうか? 回答 宜しくお願い致します Filename = ThisWorkbook.Sheets("す-ぱ-こんぴゅ-た-").Range("B1").Value Workbooks.Open Filename:= _ "C:\Documents and Settings\k-saruwatari\" & Filename Cells.Select Selection.Copy ActiveWindow.Close Windows("試作.xls").Activate Sheets("Error Log").Select Cells.Select ActiveSheet.Paste Sheets("ぽちっと").Select ThisWorkbook.Activate Filename = ThisWorkbook.Sheets("す-ぱ-こんぴゅ-た-").Range("C1").Value Workbooks.Open Filename:= _ "C:\Documents and Settings\k-saruwatari\" & Filename Cells.Select Selection.Copy ActiveWindow.Close Windows("試作.xls").Activate Sheets("Lot Log").Select Cells.Select ActiveSheet.Paste Sheets("ぽちっと").Select ThisWorkbook.Activate

  • EXCELの自動記録の修正の件

    いつもお世話になっております。 こんな質問しました。 http://okwave.jp/qa3973267.html http://okwave.jp/qa3973335.html なんとか、自動記録とOKwebの受け売りで、 やってみました。 でも、もう限界です。 教えて下さい。 【困っていること】 1.保管するファイル名を固定でなく、 見積書.XLSのH13(固定)の値で、 ファイル名を付けて保存したい。 2.台帳.XLSのT2:AG2のコピー先で、 全てが選択されている状態のため、 リンクが全項目になっている。 先頭の項目だけにしたい。T2のコピー先のみ。 3.リンクを固定でなくて、 ファイル名、表示名をT2(固定)の値、 もしくはコピー先(可変)の値でしたい。 今は、見積書.XLSとSEC01-20080001となっているのを、 可変に、例、SEC01-20080100.XLSとSEC01-20080100にしたい。 現在のコード(一部)は以下です。 Range("A1").Select ChDir "H:\2008\見積" ActiveWorkbook.SaveAs Filename:= _ "H:\2008\見積\見積書.xls", FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False Windows("台帳.xls").Activate Range("T4").Select Selection.Copy Range("T2").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Range("S3").Select Application.CutCopyMode = False Selection.Copy Range("S1").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Range("T2:AG2").Select Application.CutCopyMode = False Selection.Copy Cells(ActiveSheet.Rows.Count, 4).End(xlUp).Offset(1).Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Application.CutCopyMode = False ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="見積書.xls", _ TextToDisplay:="SEC01-20080001" Cells(ActiveSheet.Rows.Count, 4).End(xlUp).Offset(1).Select ActiveWorkbook.Save 宜しくお願い致します。

専門家に質問してみよう