• ベストアンサー

マクロでのファイル名組み方

os xp ex 03 [Module1 (コード)] に入っています。 数字は必ず4桁 数字は順位ばらばら 社名が入っている時も未入力も有り。 1503住友石炭 5602栗本鉄工所   5803フジクラ 5959岡部 6976太陽誘電 9001東武鉄道 150円以下 8604野村hd  5196 5711 以上多い時は20位少ない時は1  上記を  下記の ¥0000メック  の処に組み込む方法をお願いします。 *呼び込み ChDir "C:\08-C\9\new-2" Workbooks.Open Filename:="C:\08-C\9\new-2\ 4971メック .xls", UpdateLinks:=0 End Sub  *保存 Sub new2A保存() Windows(" 4971メック .xls").Activate ActiveWorkbook.Save: ActiveWindow.Close End Sub

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

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.5

ANo.4の Workbooks.Open FileName:=mypath & fnv(i) & ".xls", UpdateLinks:=0 のところですが、 数字を取り出して+メック.xls なら Workbooks.Open FileName:=mypath & Val(fnv(i)) & "メック.xls", UpdateLinks:=0 と変更してください。 お礼をいただきましたが、質問には答えていただけないのでしょうか?

yuki-g
質問者

お礼

大変に遅くなりまして御免なさい。 08・10・19・  09:46はテストしましたが "メック.xls", を使うと次の呼び出しでメックがダブりエラー 自分のレベルは此処まで 数字の4桁だけーーー 1234 これで統一して今回はくみます。 度々ありがとうございました。

yuki-g
質問者

補足

遅くなりまして御免なさい。 ano4のテストをしていますが、 数字の4桁だけーーー 1234 数字の4桁+記号ーーー1235- 数字の4桁+記号ーーー1236太陽誘電 以上の様に3種類もあるもので困っています。 全部で200位あります、その後約1000から2000位まで増やしたいのです。 其処で数字の4桁だけで後の記号とか漢字はオマケデ付いてくる様な処理を目標 okormazdさんの secode=left(selection,4)これを組み込めないか考えています。 今現在は基本の基なのです。 後に送信させていただきます。 08・10・19・  09:46はまだテストはしていません。 これからテストをさせていただきます。

その他の回答 (4)

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.4

>>質問の意図が理解できません。そうだと思いますーー書き込みだけでも精一杯です。 最初からコードを提示して、やりたいことを説明された方が解り易くなります。 取りあえず下記のようにすればどうでしょうか。 ANo.1の補足内容を出来るだけ取り入れてみた積もりです。 実用性に乏しいマクロになっています。 fnv変数のArray関数内の""にはファイル名を記入してください。 Sub test_new2A呼込1()   Dim fnv As Variant   Dim mypath As String   Dim i As Integer   'パス名   mypath = "C:\08-C\9\new-2\"   'ファイル名を列挙   fnv = Array("4971メック", _         "5196", _         "", _         "", _         "", _         "", _         "", _         "", _         "", _         "", _         "", _         "", _         "", _         "", _         "", _         "", _         "", _         "", _         "", _         "5711三菱マテリアル")   'ループしてファイル名を変数fnvから取り出す   For i = 0 To UBound(fnv)     Workbooks.Open FileName:=mypath & fnv(i) & ".xls", UpdateLinks:=0   Next i End Sub しかし、上記のコードでは本文にある >以上多い時は20位少ない時は1 といった要件を満たすことはできません。 この要件は、どこで知ることができるのですか? ファイル名は、都度変わるのですか?

yuki-g
質問者

お礼

遅くまで取り組み有難うございました。 此れまで列記して頂きこれを元に作成します。 又の出会いの時はお願いします。

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

質問の >組み込む方法を という組み込むというのは何のこと。 >数字は必ず4桁 数字は順位ばらばら 社名が入っている時も未入力も有り。 はエクセルのシートにデータがあるのか。そんなことは最低限で、はっきり書くこと。テキストファイルですか。 それをエクセルファイルにするのか? プログラマは、正式文書で、処理仕様を書けるぐらいにならないと。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.2

質問の意図が理解できません。 >Module1 (コード)] に入っています。 数字は必ず4桁 数字は順位ばらばら 社名が入っている時も未入力も有り Module1にそんなの書いたらerrorになるんじゃないの。 どこかのセルに書いてあって、それを選択してvbaを実行したら開くというのなら、 secode=left(selection,4) Workbooks.Open Filename:="C:\08-C\9\new-2\" & secode & "メック.xls", UpdateLinks:=0 あたりだろうが、 質問がいい加減だから、あってないかも。

yuki-g
質問者

お礼

そうですよね 質問がいい加減なら回答者は返事に困りますよね されど secode=left(selection,4)  secode ポイントを抑えた回答有難うございました。  

yuki-g
質問者

補足

okormazdさん、お世話になります。 >質問の意図が理解できません。 xlsさんににも書きましたが此処で精一杯なのです。 secode=left(selection,4)  secode このあたりは自分では理解不能の れべる です・

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

質問の意図が理解できません。 >[Module1 (コード)] に入っています。  >数字は必ず4桁 数字は順位ばらばら  >社名が入っている時も未入力も有り。 このデータはどこに書かれているのですか? [Module1 (コード)]に書かれているのですか? 数字を取り出し、ブック名とするということでしょうか? それなら、例えば下記のようにすることができます。 (例に挙げたのは、セルA1にデータがある場合です。) Workbooks.Open FileName:="C:\08-C\9\new-2\" & val(Range("A1").Value) & ".xls", UpdateLinks:=0

yuki-g
質問者

補足

xls88さん、お世話になります。 >質問の意図が理解できません。そうだと思いますーー書き込みだけでも精一杯です。 今現在は Sub new2A呼込() ChDir "C:\08-C\9\new-2" Workbooks.Open Filename:="C:\08-C\9\new-2\4971メック.xls", UpdateLinks:=0 Workbooks.Open Filename:="C:\08-C\9\new-2\5196.xls", UpdateLinks:=0 - -約1から20位この様に書き込んであります。 - Workbooks.Open Filename:="C:\08-C\9\new-2\5711三菱マテリアル.xls", UpdateLinks:=0 End Sub >数字を取り出し、ブック名とするということでしょうか? ブック名より呼び出しする様な方法ですとFor to Next文が更に難易になると思い回答者の方に負担がかかると結うことです。 >[Module1 (コード)] の処に 例えば a1=4971メック a2=5196 の様に処理をしてもらえればと思っていました。 別ブックまで面倒を見ていただければ幸いと思います。 只どちらにしても " & val(Range("A1").Value) & " 4971メックと5196に対して共用は効きませんよね?

関連するQ&A

  • vba マクロの組み立て不能

    毎度お世話になります。 Sub 呼び込み() ChDir "C:\08-C\9\1k-1\m\" Dim c1 As Variant Dim ran1 As Range Set ran1 = Range("ad16: ad40") '<----- Windows("SW.xls").ActiveSheet 記録前の削除 ran1.Delete Shift:=xlShiftToLeft For i = 1 To 10 '<----- 実際には10から20です。 Workbooks.Open Filename:=ThisWorkbook.ActiveSheet.Cells(i + 10, "A") & ".xls", UpdateLinks:=3 Windows("SW.xls").Activate With Windows("SW.xls").ActiveSheet c1 = Cells(i + 10, "A") .Cells(i + 15, 30).Formula = "Windows" & "(" & Chr$(34) & c1 & ".xls" & Chr$(34) & ").Activate" ' 出来上がり例 Windows("出来高.xls").Activate とかWindows("1334.xls").Activate   End With Next i End Sub 'Sub 呼び込み() した後に時間をおいて保存に移りたいのですが Range("ad16")よりの書き込みにを '利用して保存をしたいのです。 例> Windows("出来高移動平均.xls").Activate Sub 保存() Range("AD17").Select Application.CutCopyMode = False Selection.Copy ' 実際には此処に挿入したいがマクロ組み立て不能です。 Windows("出来高.xls").Activate '<----- 実際には此処に挿入したいがマクロ組み立て不能です。 ActiveWorkbook.Save: ActiveWindow.Close End Sub

  • Excelでファイルを開くをマクロで行いたい

    マクロ初心者です "ファイルを開く"をマクロの記録で記録させると ChDir "C:\Documents and Settings\○○\△△\※※" Workbooks.Open Filename:= _ "C:\Documents and Settings\○○\△△\※※¥LotLog20070131.csv" Windows("●●●.xls").Activate End Sub と記録されます この中で 開きたいファイルネ-ム(上記ならばLotLog20070131.csv)を "●●●.xls"の どこかのセルを参照に開きたいのですが どうすれば宜しいのでしょうか?

  • vba 呼び込みで1回目のファイルを参照しエラー 

    お世話になります。 Sub test02() ' ChDir "C:\08-C\9\1k-1\m\" For i = 1 To 10 Workbooks.Open Filename:=Cells(i + 10, "A") & ".xls", UpdateLinks:=0 i = i + 1 Next i End Sub 上記のコードで呼び出しをすると一回目は指示どうりに動作 for to 文ですから 二回目の呼び出しが一回目のファイルを参照してしまうので エラーに (此処で大弱り) dirの  "C:\08-C\9\1k-1\m\"  \mにexcelのファイルが有ります。 参照先の  Cells(i + 10, "A") & ".xls"は  "C:\08-C\9\1k-1\m\"  の中にsw.xls が有り A列11より数字4桁で入ってその後には  数字4桁、 数字+漢字、  漢字 の順に入っています。 A列の配列はソートをかけています。 または A列11より数字4桁 だけでも解決が付けば大変な感謝です。

  • マクロが思い通りに動きません

    エクセルでマクロを使いボタンを 作りました。ボタンを押すとHDDとDVDに保存される仕組みになっています Sub DVD() ChDir "E:\" ActiveWorkbook.SaveAs Filename:=Format(Now, "yyyy-mm-dd(hh時mm分ss秒)"), FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False End Sub Sub HDD() ActiveWorkbook.SaveAs Filename:= _ "C:\Documents and Settings\***\デスクトップ\ファイル名.xls", FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False End Sub これだとDVDへ保存が上手くいきません。DVDからエクセルを開いて使えば問題ないのですが、デスクトップから開くと日付入りのデータがデスクトップに保存されてしまいます。 どうやって書き換えたらいいでしょうか

  • ExcelのマクロでExcelファイルを抽出して開きたい

    あるフォルダ内にある複数のExcelファイルの中から、希望のExcelファイルを開くマクロをつくりたいと思っています。 フォルダ名は任意の数字、ファイル名は任意の数字(フォルダ名と同一)+版数データです。 例) C:\excelsheets\1234567890_1\1234567890_1_0_2_Sheet.xls 「_整数」の部分が版数データ。 動作としては、マクロを実行したら、任意の番号を入力してExcelファイルを開くという流れを考えています。 ちなみに、開くファイルは、 希望A 指定した番号の最新のファイルだけを開く。 希望B 指定した番号のファイルを、版数に関係なく全て開く。 を考えています。(AがダメならB) マクロの自動保存で出来たマクロに手を加えて出来たのが下記です。 Sub test() Dim Select1 As Double Select1 = Application.InputBox("Noを入力してください", "No. Select") ChDir "C:\excelsheets\" & Select1 & "_1" Workbooks.Open Filename:= _ "C:\excelsheets\" & Select1 & "_1\" & Select1 & "_1_0_2_Sheet.xls" End Sub ただし、これだと版数の変化についていけないので、試しに、    "C:\excelsheets\" & Select1 & "_1\*.xls" と、ワイルドカードが使えるか試したらエラーになりました。 初歩的な事かもしれませんが、マクロの勉強を始めたばかりで試行錯誤しながらやってます。ご助言、よろしくお願いします。

  • Excelマクロの命令文を教えてください。

    EXCEL2002です。現在Access2002に簡単なマクロを作りAccessよりExcelで作った000.xlsを開いてます。その000.xlsに下記のようなマクロを入れて実行し目的を果たしています。 Sub LROpen() ChDir "D:\EXCEL\LRTotal" myfile = Application.GetOpenFilename Workbooks.Open Filename:=myfile End Sub 本当はAccessからいっぺんに上記マクロのEND SUBまで行きたい所ですが私の力では無理なのでこのように段階的になってます。質問はこの上記マクロが張ってある000.xlsが開いたとき自動的にマクロが実行される様にする方法があるかお尋ねする次第です。宜しくお願いします。

  • Open Filenameで変わるファイル名を開く

    スマホアプリで作成したデータをパソコンのExcelから開きたいです。 vbaで操作したいのですが、アプリでエクスポートされたファイル名は日々名前が変わります。 Open Filenameで操作したいです。 Sub Sample1は開きますが、毎日ファイル名をて入力しなければなりません。 Sub Sample1() Workbooks.Open Filename:="C:\Users\closeinlove\Dropbox\アプリ\ExcelCalendarLite\cal-excel-160906.xls" '←「yymmdd.xls(年年月月日日).xlsの数値が入っています」 End Sub Sub Sample2に日々変わるファイル名の数値の部分を*に置き換えましたが、駄目でした。実行エラー1004 Sub Sample2() Workbooks.Open Filename:="C:\Users\closeinlove\Dropbox\アプリ\ExcelCalendarLite\cal-excel*.xls" End Sub Sub Sample3に日々変わるファイル名の数値の部分を??????に置き換えましたが、駄目でした。実行エラー1004 Sub Sample3() Workbooks.Open Filename:="C:\Users\closeinlove\Dropbox\アプリ\ExcelCalendarLite\cal-excel-??????.xls" End Sub ファイル名の変わる部分の指定方法を教えて下さい。

  • マクロExcel2003日付を付けてファイルを保存

    Excel2003でマクロを利用して、日付を付けた形でファイルを保存するようにしたいです。 条件としては、 (1)ファイルをz:\に「【ここに日付を八桁で保存】File1.xls」とする 例えば、20111127File1.xls (2)上書きする場合も、確認をせずに強制的に保存 (3)保存が終わったら、強制的にExcel2003を終了する という具合に書きたいです。 マクロの保存でやってみてわかっている所まで書きました。 Sub SaveEnd() ActiveWorkbook.SaveAs Filename:="Z:\【????】file1.xls", FileFormat:=xlNormal   【上書き保存で、確認をしない】   【Excel2003の強制終了】 End Sub どのように調べれば良いかも含めて、ご指導をいただければ幸いです。

  • Excelのマクロで、セル内の文字をファイル名にしたい

    ”プロト.xls”というExcelファイルの中に、以下の動作をするマクロを作成したいのです。 (1)”C:\顧客\顧客納期連絡.xls”というExcelファイルを開き、  それを”C:\顧客\A.csv”という名前のcsvファイルにする。 (2)”C:\顧客\A.csv”を”xxxxxxxxxxxxxxxxxx”(※注1)という名前にしてコピーする。 ※注1:”xxxxxxxxxxxxxxxxxx”の部分は、”プロト.xls”ファイルのSheet”マスター”のセルD9から取得させる。 そのセルは、 C:\顧客\ABCDEF0215.csv と記述しています。 (3)コピー後、”C:\顧客\A.csv”を削除する。 ------------------------------------------------------------------- Sub 顧客納期連絡() ' ' 顧客納期連絡 Macro ' マクロ記録日 : 2010/2/15 ユーザー名 : xxxxxxx ' ' ChDir "C:\顧客" Workbooks.Open Filename:="C:\顧客\顧客納期連絡.xls" ActiveWorkbook.SaveAs Filename:="C:\顧客\A.csv", FileFormat:=xlCSV, _ CreateBackup:=False ActiveWorkbook.Save ActiveWindow.Close ActiveWorkbook.Save Dim fname1 As String Dim fname2 As String fname1 = "C:\顧客\A.csv" fname2 = Workbooks("プロト.xls"), Sheets("マスター"), Cells("D9") FileCopy fname1, fname2 Kill "C:\顧客\A.csv" End Sub ------------------------------------------------------------------- 上記のマクロを作成したのですが、FileCopyの行で、構文エラーか型に一致していない、 というエラーになりマクロ再生が停止します。 セルの内容をファイル名にしたいのですが、何か良い方法はございませんでしょうか? 私は超初心者なので、何卒宜しくお願い致します。

  • ロックをかけたファイルにリンクしてあるファイルを開きたい

    Excelで簡易データベースを作成しています。入り口はひとつにしようと思い、メニューのブック以外にはロックをかけ、メニュー上のコマンドボタンから各ファイルを開こうと思っていますが、そのメニュー以外のファイルは互いにリンクしていて、リンクの更新時にもPass要求のBoxが開いてしまいます。リンク先のPassもVBAから入力できるようにならないでしょうか? Sub FILEAopen() Dim FILENAME As Variant FILENAME = "C:\A.xls" Const PSW As String = "APASS" With Workbooks.Open(Filename:=FILENAME, updatelinks:=3, Password:=PSW, writerespassword:=PSW) .Unprotect (PSW) End With End Sub これで”A.xls"は開けるのですが、リンク先の”B.xls”もブックの保護をかけているため、パス要求のダイアログが開いてしまいます。Aのリンク先の”B.xls”も自動で開きたいのです。 どなたか宜しくお願い致します。

専門家に質問してみよう