• ベストアンサー

自動起動する必要の無いファイルは起動しない

エキセルファイルのtestを起動すると  Personal XLSB以外のcalldataも同時に自動起動しているようです。 calldataは、自動する起動する必要がないファイルです。 起動しないように設定するにはどうすれば良いでしょうか ? 添付画像を参照ください。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4901/10362)
回答No.2

拡張子txtというのが不審ですが、XLSTARTフォルダーに入っているから開かれるんじゃないでしょうか。 XLSTARTファイルの場所は環境によって違います。PERSONAL.XLSBファイルを名前で検索すると、その場所がXLSTARTフォルダーです。

NuboChan
質問者

お礼

>XLSTARTフォルダーに入っているから開かれるんじゃないでしょうか。 notnotさん、上記の意味が判りました。 XLSTARTフォルダーに、ファイル名がcelldata.txtのファイルが存在するのでは? の意味だったのですね。 チェックすると確かに  無関係なテキストファイル(celldata.txt)が存在していました。 ファイルを削除して問題が解決しました。 アドバイス感謝いたします。

NuboChan
質問者

補足

notnotさん、回答ありがとうございます。 PERSONAL.XLSBは、下記のフォルダーに存在しています。 C:\Users\*****\AppData\Roaming\Microsoft\Excel\XLSTART officeは、2019(x64)版です。 ------------- >XLSTARTフォルダーに入っているから開かれるんじゃないでしょうか。 この意味が理解できません。 試しにcelldataシートが有る状態で  シートを追加(名前は、Sheet1のまま)でcelldataシートを削除し  Sheet1のシートだけが存在する状態で上書き変更して  再度エキセルを起動させてもCelldataシートだけが復活しています。  (Sheet1名のシートはありません。)

その他の回答 (1)

  • bardfish
  • ベストアンサー率28% (5029/17766)
回答No.1

起動しないようにするのは無理じゃないでしょうか? 新規作成でたちげてもSheetの数だけ出来てしまいます。 予測ですが、Sheetから自分で作成した(または利用する)VBAコードを呼び出すためのモジュールではないかと・・・ Excel VBAの元祖でもあるVisul Basicでも画面であるフォームオブジェクトに貼り付けたコマンドボタンやコンボボックスのイベントを処理するサブルーチンは必ず作られます。そこからフォーム以外のオブジェクトファイルに記述した関数やステートメントを呼び出すのです。 Excelの場合はシートがVBのフォームに相当するとお思います。 ですから、そういう構成になるのは仕方ないと思います。 Visual StudioからExcel VBAにはいった私にとっては違和感はないです。むしろ.netの便利な機能が使えなくて使いたくないとさえ思っています(笑) まぁ、実際にExcelのVBAで作られてたものをVisual Basic .NET + SQL Serverに移植してプログラムのメンテがかなり楽になったし、処理時間の大幅短縮を実現できました。

NuboChan
質問者

お礼

bardfishさん、アドバイス感謝します。 >予測ですが、Sheetから自分で作成した(または利用する)VBAコードを呼び出すためのモジュールではないかと・・ 回答を受けてPERSONAL.XLSBのVBAコード(Module1,2)を見直してみる事にしました。 celldataでシートを作成している箇所が無いか?  celldataで検索してみるました。  結果、Module2でテキスト出力名でcelldata.txtをしている事が判りました。  他所で頂いたコードです。(少しだけ私的な修正があります。) テキストに書き出すのでシート名と関係なさそうなのですが、認識が間違っていますか? 質問では、エキセルファイルのtestを起動する事を前提で質問を始めましたが 現在、単にEXCELを立ち上げるだけでも必ずcelldata名のシートが作成されます。 celldata名のシートを作成しないようにはできませんか? 以下、Module2(コード)です。 '===================================================== ' 投稿用シートレイアウトをクリップボードに取得(改造版) '              作成者(momo)+ Me ' ' BrkStr:列間の文字列 初期値は「|」 ' DataObjectID:DataObjectのLate Binding用(変更不可) '===================================================== Option Explicit Sub 投稿用シートレイアウトをクリップボードに取得() Const BrkStr As String = "|" Const DataObjectID As String = "1C3B4210-F441-11CE-B9EA-00AA006B1A69" Dim myRng As Range, rngFormula As Range, rngBuf As Range Dim tbl() As Variant Dim AryTxt() As String, StrBuf As String Dim i As Long, j As Long, AryWidth() As Long, LenBuf As Long Dim YesNo As Variant Set myRng = Application.InputBox("取得したい範囲を選択してください。", Type:=8) If MsgBox("数式として表示したい範囲はありますか?", vbYesNo) = vbYes Then Do Set rngBuf = Application.InputBox("数式として表示したい範囲を選択してください。", Type:=8) If rngFormula Is Nothing Then Set rngFormula = rngBuf Else Set rngFormula = Application.Union(rngFormula, rngBuf) End If Set rngBuf = Nothing Loop While MsgBox("さらに数式として表示したい範囲がありますか?", vbYesNo) = vbYes End If ReDim tbl(1 To myRng.Rows.Count, 1 To myRng.Columns.Count) ReDim AryWidth(1 To UBound(tbl, 2)) For i = 1 To myRng.Rows.Count For j = 1 To myRng.Columns.Count tbl(i, j) = myRng.Cells(i, j).Text If Not rngFormula Is Nothing Then If Not Application.Intersect(myRng.Cells(i, j), rngFormula) Is Nothing Then tbl(i, j) = myRng.Cells(i, j).Formula End If End If LenBuf = Application.Evaluate("LENB(""" & Replace(tbl(i, j), """", vbTab) & """)") If AryWidth(j) < LenBuf Then AryWidth(j) = LenBuf End If Next j Next i ReDim AryTxt(UBound(tbl, 1)) AryTxt(0) = String(Len(myRng.Rows(myRng.Rows.Count).Row) + 3, " ") For i = 1 To UBound(tbl, 2) StrBuf = "[" & Split(myRng.Columns(i).EntireColumn.Address(False, False), ":")(0) & "]" If AryWidth(i) > Len(StrBuf) Then AryTxt(0) = AryTxt(0) & BrkStr & StrBuf & String(AryWidth(i) - Len(StrBuf), " ") Else AryTxt(0) = AryTxt(0) & BrkStr & StrBuf AryWidth(i) = Len(StrBuf) End If Next i For i = 1 To UBound(tbl, 1) AryTxt(i) = " [" & myRng.Rows(i).Row & "]" & _ String(Len(myRng.Rows(myRng.Rows.Count).Row) - Len(myRng.Rows(i).Row), " ") For j = 1 To UBound(tbl, 2) LenBuf = Application.Evaluate("LENB(""" & Replace(tbl(i, j), """", vbTab) & """)") If IsNumeric(tbl(i, j)) Then AryTxt(i) = AryTxt(i) & BrkStr & String(AryWidth(j) - LenBuf, " ") & tbl(i, j) Else AryTxt(i) = AryTxt(i) & BrkStr & tbl(i, j) & String(AryWidth(j) - LenBuf, " ") End If Next j Next i YesNo = MsgBox("クリップボードの出力ですか?(テキスト出力なら「いいえ」)", 3 + 32, "出力箇所(クリップボード、テキスト)の指定") Select Case YesNo Case 6 'クリップボード出力 With GetObject("new:" & DataObjectID) .SetText Join(AryTxt, vbCrLf) .PutInClipboard End With MsgBox "クリップボードに出力しました。" Case 7 'テキスト出力 Open "C:\Users\Nubo\Desktop\" & "celldata.txt" For Output As #1 For i = LBound(AryTxt) To UBound(AryTxt) AryTxt(i) = Replace(AryTxt(i), vbTab, Chr(32)) Print #1, AryTxt(i) Next Close #1 MsgBox "デスクトップにテキストファイルを作成しました。" Case 2 '処理中止 MsgBox "キャンセルが押されました。" End Select End Sub

関連するQ&A