• 締切済み

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

宜しくお願いいたします アクティブになっていない同じファイルにある WORKBOOKを開く構文として sub 新規トレーニングへ() Workbooks Open Filename:="F:新規トレーニング.xlsm" Worsheets("新規").select End Sub Private ub CommandButton1_cilck() 新規トレーニングへ End Sub をUSBにFドライブに作成して問題なく動いています そこで他のUSB Hドライブへコピー(移動)して(構文のFをHへ書き込み訂正)HドライブのUSBでは問題なく動いています ここが質問です ところがPCのCドライブのドキュメントへ(FドライブUSBを作ったPC)へコピー(移動)すると(同様に構文のFをCへ書き込み訂正) Workbooks Open Filename:="F:新規トレーニング.xlsm" がデバッグで黄色い色が付き動かないのです。 USB(Fドライブ)からUSB(Hドライブ)は問題なし USB(Fドライブ)からPC(Cドライブ)デバッグで動かない 何故こうなるのでしょうか、ご教授お願いいたします。

みんなの回答

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.5

こんにちは、回答No.4です 私のPCはWindows10ですがドキュメントは「C:\ユーザー\ユーザ名」にあります。 ----------------------------------------------------------------- >Workbooks Open Filename:="F:新規トレーニング.xlsm" これを  Workbooks Open Filename:="C:\ユーザー\ユーザ名\ドキュメント\新規トレーニング.xlsm として下さい

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.4

回答No.1,2の方同じことを指摘されています。 じっくり読み直してください >ところがPCのCドライブのドキュメントへ(FドライブUSBを作ったPC)へコピー(移動)  このQの「のドキュメント」外して  ところがPCのCドライブへ(FドライブUSBを作ったPC)へコピー(移動) と質問できるようにコピーして下さい

noname#252332
noname#252332
回答No.3

質問文の Workbooks Open Filenameに"."が抜けていたり、Worsheets("新規").selectの"k"が抜けていたりするようです。テキストのコピー、貼り付けを使えば間違いもなく簡単です。 https://www.sony.jp/support/vaio/beginner/school/shortcut/01.html  まず半角の"¥"と”\"ですが、表示する文字コードシステムによってどちらかが表示されますが、コンピュータから見ると同じ文字です。というのは、ASCIIコードを最初に見た日本人が、バックスラッシュなんか要らないから円記号にしたほうが便利だ、とバックスラッシュのコードで円記号を表示するように決めました。つまり、半角で¥と打ったのにバックスラッシュになった、というのはコンピュータにとっては同じ文字なので問題ありません。これが¥に見えるのは日本御システムだけです。国際語化されたunicodeのシステムではバックスラッシュに見えます。 https://social.technet.microsoft.com/Forums/ja-JP/fc2bcf92-05f2-43dd-8047-c77f7be1294d/windows101239112398c124891252112452125021245012463124751247327177?forum=win10itprogeneralJP  ところで今のWindowsではCドライブのルートに編集するファイルを置きません。ドキュメントフォルダでもデスクトップでも好きな場所に置いて、それがCドライブのどこなのか、そのファイルを右クリックしてプロパティを見て場所を知り、その場所をアクセスすればいいです。たとえば私のパソコンのドキュメントフォルダを右クリックしてプロパティを見ると C:\Users\toshi と書いてあります。ここにtest.txtを置いたなら、 C:\Users\toshi\test.txt というわけです。いま私のパソコンで見ると\がバックスラッシュに見えますが、これをメモ帳にコピーするとちゃんと円記号に見えますよ。

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

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

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

>ところがPCのCドライブのドキュメントへ ドキュメントにコピーしたのなら sub 新規トレーニングへ()   Dim myPath As String   myPath = CreateObject("WScript.Shell").SpecialFolders("MyDocuments")   Workbooks.Open Filename:=myPath & "\新規トレーニング.xlsm"   Worsheets("新規").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

専門家に質問してみよう