• 締切済み

EXCEL VBA何故こうなるのでしょうか

mt2015の回答

  • mt2015
  • ベストアンサー率49% (258/524)
回答No.2

マイドキュメントはCドライブ直下じゃないですから C:\新規トレーニング.xlsm にはブックがありません。 自ブックと同じフォルダのブックを対象にするならThisworkbook.path を使った方が良いです。 Sub 新規トレーニングへ()   Workbooks.Open Filename:=ThisWorkbook.Path & "\新規トレーニング.xlsm"   Worksheets("新規").Select End Sub

関連するQ&A

  • エクセルVBA教えてください

    sub 新規トレーニングへ() Workbooks Open Filename:="F:新規トレーニング.xlsm Worksheets("新規2").Select End Sub Private ub CommandButton1_click() 新規トレーニングへ End Sub アクティブでないbookをボタンで開くようにしています こんな構文でUSBで作成して問題無く動いています が他のPCへ移動してドライブをCに変えたところ Workbooks Open Filename:="F:新規トレーニング.xlsmが黄色で この部分にデバッグです 移動してドライブをCに変えただけではVBAではダメなのでしょうか 何故だめ?なのと解決方法を教えてくださると有り難いのです それとも初めからCドライブで作り直しなのでしょうか 宜しくお願いいたします。

  • VBAの更なる応用編

    度々すみません。 VBAで教えて下さい。 主ファイルYYYY.xlsmに下記の記述をしました。 副ファイルXXXX.xlsmがあります。 ------------------------------------------------- Private Sub Workbook_BeforeClose(Cancel As Boolean) On Error Resume Next Workbooks("XXXX.xlsm").Close End Sub Private Sub Workbook_Open() Workbooks.Open Filename:= _ "XXXX.xlsm" Worksheets("Sheet1").Activate End Sub ------------------------------------------------- 以上で、YYYY.xlsmとXXXX.xlsmの場合、主、副の共に保存せずに 終了するにはどのようなコメントを追記したら良いですか。 ネットで調べた下記の内容は場所が悪いのか動作しませんでした。 Sub CloseWorkbook() Workbooks("XXXX").Close SaveChanges:= False End Sub

  • エクセルVBAでエラーが出る原因を教えて下さい

    Sub テスト() Workbooks("テスト1.xlsm").Worksheets("転記").Range("C3:J7").value = _ Workbooks("テスト1.xlsm").Worksheets("データ1").Range("C3:J7").value End Sub ↑これではデータ1シートのC3:J7の文字や数字だけが転記シートのC3:J7にコピーされるだけで、 セルの色や罫線、フォントの大きさや色、などの設定情報が無視されてしまいます。 なので、文字や数字だけでなく設定情報もコピーできるように ↑のコードを↓のコードに修正していました。 Sub テスト() Workbooks("テスト1.xlsm").Worksheets("転記").Range("C3:J7").PasteSpecial Paste:=xlPasteAll, _ Operation:=xlPasteSpecialOperationNone = _ Workbooks("テスト1.xlsm").Worksheets("データ1").Range("C3:J7").PasteSpecial Paste:=xlPasteAll, _ Operation:=xlPasteSpecialOperationNone End Sub しかし、エラーがでてしまいます。なぜなのでしょうか?

  • エクセルVBAの変数利用

    シートのC1セルに入力したブック名をアクティブにするための 変数なのですが、アクティブになりません。 下のようにしていますが、とのようにすればよいでしょうか? Sub test() Dim FileName As Range FileName = ThisWorkbook.Path & "\" & Sheets("sheet1").Range("C1") & ".xls" Workbooks.FileName.Activate End Sub

  • エクセルVBAでエラー、Changeの使い方が×?

    エクセルVBAでBOOK1のsheet1とsheet2とsheet3があり、 sheet1とsheet2の全ての情報をsheet3にコピーしてまとめるようにしました。 マクロを実行するには、Visual Basicを開いてF5を押しています。 それをsheet1かsheet2の中身の一部分でも変更すると そのときに自動的にマクロが実行されるようにしたいです。 sheet1とsheet2とsheet3に Private Sub Worksheet_Change(ByVal Target As Range) Call マクロ() End Sub を入れ、 標準モジュールに Sub マクロ() Workbooks("BOOK.xlsm").Worksheets("sheet1").Range("C1:BE50").Copy _ Destination:=Workbooks("BOOK.xlsm").Worksheets("sheet3").Range("C1:BE50") Workbooks("BOOK.xlsm").Worksheets("sheet2").Range("C1:BE100").Copy _ Destination:=Workbooks("BOOK.xlsm").Worksheets("sheet3").Range("C51:BE150") Dim UsedCell As Range Dim Max_Row, RowCount As Integer Set UsedCell = ActiveSheet.UsedRange Max_Row = UsedCell.Cells(UsedCell.Count).Row Application.ScreenUpdating = False For RowCount = Max_Row To 1 Step -1 If Application.WorksheetFunction.CountA(Rows(RowCount)) = 0 Then Rows(RowCount).Delete End If Next Application.ScreenUpdating = True End Sub をやって、sheet1かsheet2のセルを変更すると エクセルが固まってしまいます。 デバックでは最初の Workbooks("BOOK.xlsm").Worksheets("sheet1").Range("C1:BE50").Copy _ Destination:=Workbooks("BOOK.xlsm").Worksheets("sheet3").Range("C1:BE50") がよくないようです。 書き方が間違っているのでしょうか?

  • エクセルで、PW付きのファイルを開くには?

    Sub Macro1() Workbooks.Open Filename:="C:\Users\test.xlsx",,,0000 End Sub だと赤文字になってしまうのですが、どうすればいいでしょうか? パスワードは0000だとします。よろしくお願いします。

  • VBA コンボボックスの値による条件分岐

    12カ月分のブックがあり、 コンボボックスで指定した月のブックを開くマクロはどう記述すれば良いでしょうか? BOOK("1月")のSheet1にコンボボックス1と コマンドボタン1があります。 コンボボックスには下記をリストにしています。 Private Sub Workbook_Open() With Worksheets("Seet1").ComboBox1 .AddItem (" 2月") .AddItem (" 3月") .AddItem (" 4月") .AddItem (" 5月") .AddItem (" 6月") .AddItem ("7月") .AddItem ("8月") .AddItem ("9月") .AddItem ("10月") .AddItem ("11月") .AddItem ("12月") End With End Sub Private Sub CommandButton1_Click() If ComboBox1.Value = "2月" Then Workbooks.Open Filename:="C:\testBook\2月.xlsm" ElseIf ComboBox1.Value = "2011年度 3月売上" Then Workbooks.Open Filename:="C:\testBook\3月.xlsm"     中略 End If End Sub 上記ではエラーとなります。 基本もままならない素人で申し訳ありませんが、 ご教授願います。

  • VBAで値だけコピー

    EXCEL VBAで別ファイルの値をコピーして貼り付けをしているのですが、セルの中の一部のみを貼り付けしたいと思いますが、 どのようにしたらいいのでしょうか? 関数では取り出すことができたのですが、できればVBAの中で処理できればと思っています。 =IFERROR(MID(Z2,FIND("6",Z2),FIND(" has",Z2)-FIND("6",Z2)),"") やりたいこと 1.左から見て6~空白までの値のみを貼り付けしたい 2.エラーの時は空白にしたい Sub SO_Copy() Dim ws As Worksheet Set ws = Worksheets("Sheet1") Dim FilePath, FileName As String 'C8&C9にファイルパス/ファイル名を入力 FilePath = ws.Range("C8").Value & "\" & ws.Range("C9").Value FileName = ws.Range("C9").Value Workbooks.Open FilePath 'Z2~コピーして、"メール送信.xlsm"のD11以降に値だけ貼り付け Range("Z2", Range("Z2").End(xlDown)).Copy Windows("メール送信.xlsm").Activate Range("D11").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Workbooks(FileName).Close End Sub

  • Excel VBAでの関数入力

    お世話になっております。 ExcelのVBAに関する質問です。 やりたいこととしては  (1) CSVファイルを開き、そのファイル名を取得後  (2)「カウントマクロ.xlms」、「件数表」シートのB2から最終行まで、(1)のCSV(Sheet1)を参照先とするCOUNTIF関数を入力する。というものです。   Dim OpenFileName As String OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.csv?") Workbooks.Open OpenFileName Filename = Dir(OpenFileName) Workbooks("カウントマクロ.xlsm").Activate Worksheets("件数表").Activate LASTROW = Cells(Rows.Count, "A").End(xlUp).Row Range("B2").Select ActiveCell.FormulaR1C1 = _ "=COUNTIF(Filename.Sheet1!R2C10:R10C10,""*"" & RC[-1] & ""*"")" Range("B2").Select Selection.AutoFill Destination:=Range(Cells(2, "B"), Cells(LASTROW, "B")) End Sub 上記のように記述してみたのですが、 "=COUNTIF(Filename.Sheet1!R2C10:R10C10,""*"" & RC[-1] & ""*"")" の部分Filenameが件数表シートの関数にそのまま表示されており、うまく機能しませんでした。 このようにVBA上で関数を入力する場合、FileNameのように定義したファイル名はどのように記述すればよいのでしょうか。 どなたかご教示いただけましたら幸いです。

  • Excel2007VBAファイルの開き方について

    ●質問の主旨 Cドライブのフォルダにあるファイルを下記コードで開こうとしましたが、 開くことができませんでした。 1.なぜ下記コードでは開くことができないのでしょうか? 2.開くためにはコードを書き換える必要があるのでしょうか? 3.書き換えるとすればどのように書き換えれば良いでしょうか? ご存知の方ご教示願います。私はVBA初心者です。 ●質問の捕捉 コードはあるVBAの参考書をまるまる引用したものです。 その説明として、 「該当ファイルの存在を予めチェックし、存在すれば開き、 存在しないときはメッセージを表示する」 とあります。 もちろん"C\data\test.xlsm"という場所、ファイルは予め用意しています。 ●コード Sub 存在するときだけ開く() myfile = "C\data\test.xlsm" If Dir(myfile) <> "" Then Workbooks.Open myfile Else MsgBox "ファイルが存在しません" End If End Sub