探検
Excel VBA 質問スレ Part51
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (スププ Sd4a-O827)
2017/11/08(水) 11:26:30.13ID:+KUB1/9hdスレ立ての際は一行目に
!extend:checked:vvvvv:1000:512
と入れてスレ立てして下さい
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※関連スレ
VBAなんでも質問スレ Part2
http://mevius.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://mevius.2ch.net/test/read.cgi/tech/1328536426/
Excel総合相談所 126
https://mevius.2ch.net/test/read.cgi/bsoft/1496487719/
※前スレ
Excel VBA 質問スレ Part50
http://mevius.2ch.net/test/read.cgi/tech/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
691デフォルトの名無しさん (アークセー Sx87-/hyL)
2017/12/23(土) 19:53:54.32ID:AF0984djx >>690
直感的な説明だが、オブジェクトがオブジェクトを持つという表現は間違い
オブジェクトが持つのはあくまでメソッドとプロパティからなるメンバで、いわゆる下位オブジェクトにはメンバを介してアクセスしてるだけだからな
直感的な説明だが、オブジェクトがオブジェクトを持つという表現は間違い
オブジェクトが持つのはあくまでメソッドとプロパティからなるメンバで、いわゆる下位オブジェクトにはメンバを介してアクセスしてるだけだからな
692デフォルトの名無しさん (ワッチョイ cffa-buzn)
2017/12/23(土) 20:15:31.85ID:oVsH3Gmz0693デフォルトの名無しさん (ワッチョイ 6f9d-FmKA)
2017/12/23(土) 20:55:59.08ID:afY4COyy0 ちなみにButtonsとかCheckBoxesとかは隠しプロパティ
ヘルプにもでてこないからな
なんで隠してあるのかねぇ
ヘルプにもでてこないからな
なんで隠してあるのかねぇ
694デフォルトの名無しさん (アウアウカー Sac7-92zu)
2017/12/24(日) 00:26:44.47ID:oSJcOqyea695デフォルトの名無しさん (ワッチョイ 93f7-vrKU)
2017/12/24(日) 00:45:00.70ID:BN72T8jr0 まあ、大多数の用途では得られるメリットが少なすぎてSelectを消す意味は薄いけどな
696デフォルトの名無しさん (アークセー Sx87-/hyL)
2017/12/24(日) 01:23:50.46ID:2PxYmIQzx オブジェクトのプロパティにアクセスする処理でSelectメソッドはなるべく使わない
コードの実行中にデバッグ作業を行ったときなどに予期しないオブジェクトが選択されて、アクセスしたいプロパティにアクセス出来ずエラーになることがよくあるからね
Rangeオブジェクトを指定していたはずがShapeオブジェクトやOLEObjectオブジェクトを選んでいたりとか
コードの実行中にデバッグ作業を行ったときなどに予期しないオブジェクトが選択されて、アクセスしたいプロパティにアクセス出来ずエラーになることがよくあるからね
Rangeオブジェクトを指定していたはずがShapeオブジェクトやOLEObjectオブジェクトを選んでいたりとか
697デフォルトの名無しさん (ワッチョイ cfb9-bqMz)
2017/12/24(日) 01:43:15.08ID:O2udkTbW0 Selectは必ず代替手段があるから、範囲選択してユーザーに注意を促すとかでなけりゃSelect使う事に疑問を持った方がいい。
698デフォルトの名無しさん (ワッチョイ 6fe0-615/)
2017/12/24(日) 06:22:03.30ID:ZKd7S1fn0 起動中のIEからさらに別窓で開かれるフォーム入力用窓のIEオブジェクトを取得して操作したいと考えているのですが、
Function hoge() As WebBrowser
Dim tmp As Variant
For Each tmp In CreateObject("Shell.Application").Windows
If TypeName(tmp.document) = "HTMLDocument" Then
Set hoge = tmp
Exit Function
End If
Next tmp
End Function
のようにShellを使ってもIEオブジェクトを取得できなくて困っています
Set objIE = MAGIC(hWnd)
のような形で、ハンドルからIEオブジェクトを取得する方法は無いでしょうか
他に方法があれば、ハンドルから取得する方法にこだわりません
ただし、諸事情により外部からライブラリをダウンロードしてきて使用する、といったことはできないです
Function hoge() As WebBrowser
Dim tmp As Variant
For Each tmp In CreateObject("Shell.Application").Windows
If TypeName(tmp.document) = "HTMLDocument" Then
Set hoge = tmp
Exit Function
End If
Next tmp
End Function
のようにShellを使ってもIEオブジェクトを取得できなくて困っています
Set objIE = MAGIC(hWnd)
のような形で、ハンドルからIEオブジェクトを取得する方法は無いでしょうか
他に方法があれば、ハンドルから取得する方法にこだわりません
ただし、諸事情により外部からライブラリをダウンロードしてきて使用する、といったことはできないです
699デフォルトの名無しさん (ワッチョイ 93f7-vrKU)
2017/12/24(日) 08:15:14.57ID:BN72T8jr0700デフォルトの名無しさん (ワッチョイ 6f9f-WV/z)
2017/12/24(日) 11:59:50.98ID:uwQxUsVy0 IEが複数あるかもしれないのに見つかったら抜けちゃうコードで何かおかしいと感じないの?
701デフォルトの名無しさん (ワッチョイ ff8a-EmoC)
2017/12/24(日) 15:06:20.77ID:6Phr71Y20 Dim u As Long
Range("A1", "I5").Value = u
u = Round(u, 4)
四捨五入したいのに全部ゼロになる!
Range("A1", "I5").Value = u
u = Round(u, 4)
四捨五入したいのに全部ゼロになる!
702デフォルトの名無しさん (アウアウイー Sa87-cQ+C)
2017/12/24(日) 15:18:15.83ID:CcW1Sn5Aa >>701
uには何が入るの?
uには何が入るの?
703デフォルトの名無しさん (アウアウイー Sa87-cQ+C)
2017/12/24(日) 15:18:38.84ID:CcW1Sn5Aa てか、そりゃゼロになるだろw
704デフォルトの名無しさん (アウアウカー Sac7-92zu)
2017/12/24(日) 15:27:49.11ID:dho/ilxra 何かが逆でワロタ。
705デフォルトの名無しさん (ワッチョイ ff8a-EmoC)
2017/12/24(日) 15:36:05.76ID:6Phr71Y20706デフォルトの名無しさん (アウアウカー Sac7-92zu)
2017/12/24(日) 15:53:02.16ID:sjlc/tcta >>705
A1からI5の範囲に初期化したばかりのu(=0)を入れてる。
入れるのは逆で、入れた後で桁変更して戻す必要もある。
最初からuを使わずに自分自身に桁変更した自分を入れる方が普通かな。
そもそも見た目だけ桁指定する方が一般的だと思うが。
A1からI5の範囲に初期化したばかりのu(=0)を入れてる。
入れるのは逆で、入れた後で桁変更して戻す必要もある。
最初からuを使わずに自分自身に桁変更した自分を入れる方が普通かな。
そもそも見た目だけ桁指定する方が一般的だと思うが。
707デフォルトの名無しさん (アウアウイー Sa87-cQ+C)
2017/12/24(日) 15:54:56.74ID:CcW1Sn5Aa 桁指定したいならexcel vba 書式設定
でググりなさい
でググりなさい
708デフォルトの名無しさん (アウアウカー Sac7-92zu)
2017/12/24(日) 15:56:16.29ID:CBEBXlX2a というか、値が複数(配列)だから一発でいけないだろ。
709デフォルトの名無しさん (ワッチョイ 03d2-oA/d)
2017/12/24(日) 15:56:53.27ID:JTJf6bSC0 それぞれの行のB列からC列を引きたいのですが、下のコードだと
すべてB2-C2となってしまいます。
どうすればよろしいかご教示ください。
Dim i As Long
Dim Lrow As Long
Lrow = Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To Lrow
Cells(i, "D").Formula = "=B2-C2"
Next
すべてB2-C2となってしまいます。
どうすればよろしいかご教示ください。
Dim i As Long
Dim Lrow As Long
Lrow = Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To Lrow
Cells(i, "D").Formula = "=B2-C2"
Next
710デフォルトの名無しさん (アークセー Sx87-/hyL)
2017/12/24(日) 16:09:57.86ID:U3mSSLWjx >>709
数式書き込んでるループ内の処理の右辺を
"=$B" & i & "-" & "$C" & i
にするだけ
折角行インデックスをiで指定してループ回してるんだから使わないと
この程度のことだったらVBA使わなくても組み込みのテーブル機能で実現できるけどね
数式書き込んでるループ内の処理の右辺を
"=$B" & i & "-" & "$C" & i
にするだけ
折角行インデックスをiで指定してループ回してるんだから使わないと
この程度のことだったらVBA使わなくても組み込みのテーブル機能で実現できるけどね
711デフォルトの名無しさん (ワッチョイ cfb9-bqMz)
2017/12/24(日) 16:11:04.02ID:O2udkTbW0 >>709
Sub foo()
Cells(2, 4).Formula = "= B2 - C2"
Cells(2, 4).Copy
Lrow = Cells(Rows.Count, 1).End(xlUp).Row
Range(Cells(2, 4), Cells(Lrow, 4)).PasteSpecial
End Sub
Sub foo()
Cells(2, 4).Formula = "= B2 - C2"
Cells(2, 4).Copy
Lrow = Cells(Rows.Count, 1).End(xlUp).Row
Range(Cells(2, 4), Cells(Lrow, 4)).PasteSpecial
End Sub
712デフォルトの名無しさん (ワッチョイ 03d2-oA/d)
2017/12/24(日) 16:13:21.90ID:JTJf6bSC0713デフォルトの名無しさん (ワッチョイ 6fe0-615/)
2017/12/24(日) 17:56:35.14ID:ZKd7S1fn0 >>699-700
コードはあくまでも例で、実際はURLや文書内の文字列から判定しています
今回問題なのは、CreateObject("Shell.Application").WindowsをFor Eachで全要素を調べても、要素にそもそも含まれていない点です
IEの子窓として存在しており、タスクマネージャーで調べるとプロセスも存在するのに、IEオブジェクトを取得できません
しかし、WindowsAPIのFindWindowを用いるとハンドルの取得は可能だったので、
Set objIE = MAGIC(hWnd)のような形でハンドルからIEオブジェクトを取得する関数を作れないか質問させていただきました
コードはあくまでも例で、実際はURLや文書内の文字列から判定しています
今回問題なのは、CreateObject("Shell.Application").WindowsをFor Eachで全要素を調べても、要素にそもそも含まれていない点です
IEの子窓として存在しており、タスクマネージャーで調べるとプロセスも存在するのに、IEオブジェクトを取得できません
しかし、WindowsAPIのFindWindowを用いるとハンドルの取得は可能だったので、
Set objIE = MAGIC(hWnd)のような形でハンドルからIEオブジェクトを取得する関数を作れないか質問させていただきました
714デフォルトの名無しさん (ワッチョイ ff23-9Igo)
2017/12/24(日) 19:48:46.67ID:TDjZS1ex0 Excel2010です
以下のコードを実行すると、"$A$2"が表示されます。
セル範囲に添字0を付けた場合、セル範囲の先頭セルが参照される
(この場合B2)と思い込んでいたのですが、私の誤りでしょうか?
MsgBox(worksheets(1).range("B2:C3")(0).address)
以下のコードを実行すると、"$A$2"が表示されます。
セル範囲に添字0を付けた場合、セル範囲の先頭セルが参照される
(この場合B2)と思い込んでいたのですが、私の誤りでしょうか?
MsgBox(worksheets(1).range("B2:C3")(0).address)
715デフォルトの名無しさん (ワッチョイ 6fc5-buzn)
2017/12/24(日) 21:16:40.55ID:ODr8GH0o0 0 じゃなく 1
716デフォルトの名無しさん (ワッチョイ ff23-9Igo)
2017/12/24(日) 22:01:25.06ID:TDjZS1ex0717デフォルトの名無しさん (ワッチョイ 03bd-EmoC)
2017/12/24(日) 22:44:17.96ID:4FfGU/eI0 Dim FSO As Object
Set FSO = CreateObject("scripting.filesystemobject")
Dim folder As Object
Set folder = FSO.getfolder(ファイルパス)
Dim f As Object
For Each f In folder.Files
If f.Name Like "*" & Month(Date) & "*" Then
’ここでファイル名を翌月に変えてコピーを作成したい
End If
Next
ファイル名は「AAA〇〇月BBB」で統一(ABは文字列で〇〇は月を二桁表示)
抽出できた今月ファイルをコピーして名前の〇〇を翌月に変更したもの(翌月ファイル)を同フォルダ内に作成したいです
コピー元ファイル名を継承して一部だけ変更する良い方法が見つからなかったので教えてください
Set FSO = CreateObject("scripting.filesystemobject")
Dim folder As Object
Set folder = FSO.getfolder(ファイルパス)
Dim f As Object
For Each f In folder.Files
If f.Name Like "*" & Month(Date) & "*" Then
’ここでファイル名を翌月に変えてコピーを作成したい
End If
Next
ファイル名は「AAA〇〇月BBB」で統一(ABは文字列で〇〇は月を二桁表示)
抽出できた今月ファイルをコピーして名前の〇〇を翌月に変更したもの(翌月ファイル)を同フォルダ内に作成したいです
コピー元ファイル名を継承して一部だけ変更する良い方法が見つからなかったので教えてください
718デフォルトの名無しさん (アウアウカー Sac7-92zu)
2017/12/24(日) 23:29:24.13ID:XB6s5ekxa >>712
そのセル全部のRangeに対して"=B2-C2"でいける。
そのセル全部のRangeに対して"=B2-C2"でいける。
719デフォルトの名無しさん (ワッチョイ cfb9-bqMz)
2017/12/25(月) 00:16:31.32ID:2KDGjSox0 >>717
Sub foo(FolderPath As String)
Dim FSO As New FileSystemObject
Dim c As New Collection
Dim Folder As Folder
Dim File As File
FindWord = "*" & Month(Date) & "*"
Set Folder = FSO.GetFolder(FolderPath)
For Each File In Folder.Files
If File.Name Like FindWord Then Exit For
Next
If File Is Nothing Then Exit Sub
s = Split(File.Path, "\")
For i = LBound(s) To UBound(s)
If s(i) Like FindWord Then
e = Split(s(i), ".")
s(i) = Month(DateAdd("m", 1, Date)) & s(1)
End If
FilePath = FilePath & s(i)
If i < UBound(s) Then FilePath = FilePath & "\"
Next
FSO.CopyFile File.Path, FilePath
End Sub
試してないけどこんな感じかなぁ。
Sub foo(FolderPath As String)
Dim FSO As New FileSystemObject
Dim c As New Collection
Dim Folder As Folder
Dim File As File
FindWord = "*" & Month(Date) & "*"
Set Folder = FSO.GetFolder(FolderPath)
For Each File In Folder.Files
If File.Name Like FindWord Then Exit For
Next
If File Is Nothing Then Exit Sub
s = Split(File.Path, "\")
For i = LBound(s) To UBound(s)
If s(i) Like FindWord Then
e = Split(s(i), ".")
s(i) = Month(DateAdd("m", 1, Date)) & s(1)
End If
FilePath = FilePath & s(i)
If i < UBound(s) Then FilePath = FilePath & "\"
Next
FSO.CopyFile File.Path, FilePath
End Sub
試してないけどこんな感じかなぁ。
720デフォルトの名無しさん (アウアウイー Sa87-cQ+C)
2017/12/25(月) 08:06:21.04ID:fMKsEfdQa >>717
fileName = Replace(fileName,○○,××)
fileName = Replace(fileName,○○,××)
721デフォルトの名無しさん (アウアウイー Sa87-cQ+C)
2017/12/25(月) 08:07:54.57ID:fMKsEfdQa ああ、AAAとBBBに数字がない前提じゃないとダメだな
722717 (ブーイモ MMff-pp+B)
2017/12/25(月) 12:59:33.91ID:5/ecyLcnM723デフォルトの名無しさん (ワッチョイ ff7f-SZyW)
2017/12/25(月) 16:18:43.87ID:dIh/hlW50 んんんんあああああああああああああああああああああああああああああああああ
724デフォルトの名無しさん (アウアウイー Sa87-cQ+C)
2017/12/25(月) 16:44:33.34ID:DuOFgh3Va コピーしてファイル名置換するだけでしょ?
フォルダもすでに取得してるなら
fso.copyfile file.Path,folder.Path & "\" & Replace(file.Name,"○○","××")
だけで行けるんじゃね
フォルダもすでに取得してるなら
fso.copyfile file.Path,folder.Path & "\" & Replace(file.Name,"○○","××")
だけで行けるんじゃね
725デフォルトの名無しさん (ワッチョイ ffb3-7LW1)
2017/12/25(月) 17:30:49.11ID:1470x9yD0 UserFormに「次へ」のボタンをつくり複数のUserFormを次々と経由することで対話式に値を取得していきたいと思っています
誤った選択をしてしまった場合に備え、戻るボタンも作るとします
○UserForm1の「次へ」ボタンのクリックイベントに以下のように記述しました
Me.Hide
UserForm2.Show
○そしてUserForm2の「戻る」ボタンのクリックイベントには以下のように
Me.Hide
UserForm1.Show
うまくいったと思いきや、一度1に戻ってからもう一度UserForm2を再表示させると
UserForm2のinitializeに書いた処理が実行されません。
仕方が無いので1の次へに
UserForm2.Show
Unload Me
と書いてみると、今度は2から戻る時に、「フォームは既に表示されています。モーダルに表示できません」と出ます
2の「戻る」には上に書いたようにMe.Hideがあるにも関わらずこのエラー表示
解決法はありますか?
誤った選択をしてしまった場合に備え、戻るボタンも作るとします
○UserForm1の「次へ」ボタンのクリックイベントに以下のように記述しました
Me.Hide
UserForm2.Show
○そしてUserForm2の「戻る」ボタンのクリックイベントには以下のように
Me.Hide
UserForm1.Show
うまくいったと思いきや、一度1に戻ってからもう一度UserForm2を再表示させると
UserForm2のinitializeに書いた処理が実行されません。
仕方が無いので1の次へに
UserForm2.Show
Unload Me
と書いてみると、今度は2から戻る時に、「フォームは既に表示されています。モーダルに表示できません」と出ます
2の「戻る」には上に書いたようにMe.Hideがあるにも関わらずこのエラー表示
解決法はありますか?
726デフォルトの名無しさん (アウアウイー Sa87-cQ+C)
2017/12/25(月) 17:46:45.39ID:DuOFgh3Va727デフォルトの名無しさん (ワッチョイ ffb3-7LW1)
2017/12/25(月) 17:48:18.57ID:1470x9yD0 いやいや何か間違えてる
修正
仕方が無いので2の「戻る」に
UserForm1.Show
Unload Me
と書いてみると、今度は1から2にもう一度行こうとすると、「フォームは既に表示されています。モーダルに表示できません」と出ます
ついでにとにかくhideは避けてすべてunloadにしてもやはり2→1の段階で同じアラート
解決法はありますか?
修正
仕方が無いので2の「戻る」に
UserForm1.Show
Unload Me
と書いてみると、今度は1から2にもう一度行こうとすると、「フォームは既に表示されています。モーダルに表示できません」と出ます
ついでにとにかくhideは避けてすべてunloadにしてもやはり2→1の段階で同じアラート
解決法はありますか?
728デフォルトの名無しさん (ワッチョイ ffb3-7LW1)
2017/12/25(月) 17:48:59.15ID:1470x9yD0729デフォルトの名無しさん (ワッチョイ ffb3-7LW1)
2017/12/25(月) 18:01:10.24ID:1470x9yD0730デフォルトの名無しさん (ワッチョイ 03bd-EmoC)
2017/12/25(月) 22:53:06.92ID:S4ukHgvI0 sub test()
'マクロ起動用エクセルがあるフォルダ内のフォルダ名の取得
Dim strPattern As String
Dim strFolder As String
strPattern = "C:\xxxxx"
strFolder = Dir(strPattern, vbDirectory)
Do While Len(strFolder) > 0
If GetAttr(strPattern & strFolder) And vbDirectory Then
If strFolder <> "." And strFolder <> ".." Then 'if文始まり
'各フォルダ内にあるエクセルファイル名の取得
Dim FSO As Object
Set FSO = CreateObject("scripting.filesystemobject")
Dim folder As Object
Set folder = FSO.getfolder(strPattern & strFolder)
Dim f As Object
For Each f In folder.Files
If f.Name Like "*" & Month(Date) & "*" Then 'ファイルパスに今月が含まれている場合
FSO.copyfile f.Path, folder.Path & "\" & Replace(f.Name, Month(Date), Month(DateAdd("m", 1, Date)))
Debug.Print f.Name
End If
Next
End If 'if文終わり
End If
strFolder = Dir()
Loop
End Sub
717ですが上の記述で一応期待通りの動作をしてくれました
皆さんありがとうございました
ただこれだとファイル名に1〜12の数字を使えなかったりエクセル以外も取得できるのでまだ改良が必要そうです
'マクロ起動用エクセルがあるフォルダ内のフォルダ名の取得
Dim strPattern As String
Dim strFolder As String
strPattern = "C:\xxxxx"
strFolder = Dir(strPattern, vbDirectory)
Do While Len(strFolder) > 0
If GetAttr(strPattern & strFolder) And vbDirectory Then
If strFolder <> "." And strFolder <> ".." Then 'if文始まり
'各フォルダ内にあるエクセルファイル名の取得
Dim FSO As Object
Set FSO = CreateObject("scripting.filesystemobject")
Dim folder As Object
Set folder = FSO.getfolder(strPattern & strFolder)
Dim f As Object
For Each f In folder.Files
If f.Name Like "*" & Month(Date) & "*" Then 'ファイルパスに今月が含まれている場合
FSO.copyfile f.Path, folder.Path & "\" & Replace(f.Name, Month(Date), Month(DateAdd("m", 1, Date)))
Debug.Print f.Name
End If
Next
End If 'if文終わり
End If
strFolder = Dir()
Loop
End Sub
717ですが上の記述で一応期待通りの動作をしてくれました
皆さんありがとうございました
ただこれだとファイル名に1〜12の数字を使えなかったりエクセル以外も取得できるのでまだ改良が必要そうです
731デフォルトの名無しさん (アークセー Sx87-/hyL)
2017/12/25(月) 23:30:15.25ID:63usksBrx >>730
ファイルの種類に関しては、ループ処理の冒頭でFSO.GetExtensionName(f.Path)の戻り値を調べて処理を分岐させるようにすれば、狙った種類のファイルだけを処理できるようになると思うよ
ファイルの種類に関しては、ループ処理の冒頭でFSO.GetExtensionName(f.Path)の戻り値を調べて処理を分岐させるようにすれば、狙った種類のファイルだけを処理できるようになると思うよ
732デフォルトの名無しさん (ワッチョイ 637b-fQzT)
2017/12/25(月) 23:37:14.60ID:aEhB4dZD0 ググったのですがどうしてもわからないので教えてください
【環境】Windows10、Excel2010
【不具合症状】新規コードの作成ができない
新規bookを作成し、VBEを起動した際、通常はプロジェクトウィンドウに
「Sheet1-3」が表示されるかと思いますが、真っ白なまま何も表示されない状態です。
メニューの「挿入」をクリックしても、標準モジュールがグレイアウトになってしまい、
新規コードの作成が行えない状態です。
ITに相談しても初めての事例とのことでわかりませんでした。
コンパネからのofficeの修復も行いましたが改善されません。
マクロのセキュリティは「全て有効」で設定されています。
xlsm形式で保存もしてみましたがダメでした。
PC再起動も試してみました。
同一PCで、既存作成マクロの実行は行えます。
既存マクロのVBEを起動した際、プロジェクトウィンドウやコードウィンドウは
普通に見えますが、コードウィンドウで1文字でも編集すると、F5実行時に
「ファイルが見つかりません」とのエラーが出ます。ステップ実行でも同じです。
編集は例えコメント行でも同じエラーが出ます。
新規作成は全てにおいて不可です。
自動記録をしようとすると「マクロが記録できませんでした」とエラーが出ます。
マクロの作成ボタンは押せますが、押してもコードウィンドウが起動しません。
新規作成と編集が制限されているようなのですが、どこから変更するのかが
どうしてもわかりませんでした。もしわかる方いらしたら教えていただけないでしょうか?
スレチであれば、該当スレッドに誘導していただけると助かります。
よろしくお願いします。
【環境】Windows10、Excel2010
【不具合症状】新規コードの作成ができない
新規bookを作成し、VBEを起動した際、通常はプロジェクトウィンドウに
「Sheet1-3」が表示されるかと思いますが、真っ白なまま何も表示されない状態です。
メニューの「挿入」をクリックしても、標準モジュールがグレイアウトになってしまい、
新規コードの作成が行えない状態です。
ITに相談しても初めての事例とのことでわかりませんでした。
コンパネからのofficeの修復も行いましたが改善されません。
マクロのセキュリティは「全て有効」で設定されています。
xlsm形式で保存もしてみましたがダメでした。
PC再起動も試してみました。
同一PCで、既存作成マクロの実行は行えます。
既存マクロのVBEを起動した際、プロジェクトウィンドウやコードウィンドウは
普通に見えますが、コードウィンドウで1文字でも編集すると、F5実行時に
「ファイルが見つかりません」とのエラーが出ます。ステップ実行でも同じです。
編集は例えコメント行でも同じエラーが出ます。
新規作成は全てにおいて不可です。
自動記録をしようとすると「マクロが記録できませんでした」とエラーが出ます。
マクロの作成ボタンは押せますが、押してもコードウィンドウが起動しません。
新規作成と編集が制限されているようなのですが、どこから変更するのかが
どうしてもわかりませんでした。もしわかる方いらしたら教えていただけないでしょうか?
スレチであれば、該当スレッドに誘導していただけると助かります。
よろしくお願いします。
733デフォルトの名無しさん (アウアウイー Sa87-REpE)
2017/12/26(火) 01:59:52.47ID:fIC/1lmja >>732
エクセルのレジストリ削除してみてもダメ?
エクセルのレジストリ削除してみてもダメ?
734デフォルトの名無しさん (ワッチョイ 6f9d-FmKA)
2017/12/26(火) 06:55:25.36ID:cWcYrW8d0735デフォルトの名無しさん (ワッチョイ cf80-fDvV)
2017/12/26(火) 06:58:32.09ID:gkP6o6Ks0 >>717
「01月」というファイル名のコピーが、「02月」として、同じフォルダに入れるのか
フォルダ内に、「01月」「02月」があるとして、
この状態で、もう一度、同じ事をするなよ!w
設計として、同じフォルダに入れるのはおかしい。
異なるフォルダに入れるべき
わかりやすいように投稿する時は、名前欄に、717 と入れてくれ
「01月」というファイル名のコピーが、「02月」として、同じフォルダに入れるのか
フォルダ内に、「01月」「02月」があるとして、
この状態で、もう一度、同じ事をするなよ!w
設計として、同じフォルダに入れるのはおかしい。
異なるフォルダに入れるべき
わかりやすいように投稿する時は、名前欄に、717 と入れてくれ
736デフォルトの名無しさん (ワッチョイ 637b-7LW1)
2017/12/26(火) 07:54:39.17ID:6qOsufVw0737デフォルトの名無しさん (アウアウイー Sa87-cQ+C)
2017/12/26(火) 08:20:51.65ID:upqov7ALa738デフォルトの名無しさん (ワッチョイ ff23-pwf+)
2017/12/27(水) 09:27:07.83ID:58xyBvha0 >>719とか>>730とかのコードで意味わかんないところがいくつかある
(コードが間違ってるって意味じゃなくて、こっちの知識が足りなくて理解が追い付かないって意味です)
まず>>719は
なんでコレクションを宣言してるのか?
しかもなぜ宣言したのに使わないのか?
変数eは何のために使ってるのか?
ファイルのパスをsplitで分割してるけど、
ファイル名だったらinstrrevで\を探したほうが話が早いんじゃないか?
等々
>>730は
ループの中でdim使うのは大丈夫なの?
複数回宣言したらエラーになりそう
後、一番知りたいのが
If strFolder <> "." And strFolder <> ".." Then
これ、どういう意味なのか解説をお願いしたい
(書いてる人たちにケチつけてるんじゃなくて、本当に分らない事を教えて欲しいだけです)
どなたか教えてください、よろしくお願いします
(コードが間違ってるって意味じゃなくて、こっちの知識が足りなくて理解が追い付かないって意味です)
まず>>719は
なんでコレクションを宣言してるのか?
しかもなぜ宣言したのに使わないのか?
変数eは何のために使ってるのか?
ファイルのパスをsplitで分割してるけど、
ファイル名だったらinstrrevで\を探したほうが話が早いんじゃないか?
等々
>>730は
ループの中でdim使うのは大丈夫なの?
複数回宣言したらエラーになりそう
後、一番知りたいのが
If strFolder <> "." And strFolder <> ".." Then
これ、どういう意味なのか解説をお願いしたい
(書いてる人たちにケチつけてるんじゃなくて、本当に分らない事を教えて欲しいだけです)
どなたか教えてください、よろしくお願いします
739デフォルトの名無しさん (ワッチョイ ff1e-bqMz)
2017/12/27(水) 09:45:06.41ID:fOQst04i0740デフォルトの名無しさん (ワッチョイ ff1e-bqMz)
2017/12/27(水) 10:22:00.13ID:fOQst04i0 寝ぼけて書いてたからめちゃくちゃだな^^;
c:\test\test1> というフォルダがあったとしてそこで
c:\test\test1>cd .. と打てば
c:\test> と親ディレクトリ(フォルダ)に移動する
c:\test\test1> というフォルダがあったとしてそこで
c:\test\test1>cd .. と打てば
c:\test> と親ディレクトリ(フォルダ)に移動する
741デフォルトの名無しさん (アウアウイー Sa87-cQ+C)
2017/12/27(水) 10:45:52.46ID:90Vjgj1Fa >>738
ループ内でDimしてもエラーにはならないよ
その都度メモリが割り当てられるだけじゃないかな
フォルダ名の"."と".."は相対パスじゃなかったかな
一個上と二個上の親フォルダだったと思う
間違ってるかもしれないから調べてね
ループ内でDimしてもエラーにはならないよ
その都度メモリが割り当てられるだけじゃないかな
フォルダ名の"."と".."は相対パスじゃなかったかな
一個上と二個上の親フォルダだったと思う
間違ってるかもしれないから調べてね
742デフォルトの名無しさん (アウアウイー Sa87-cQ+C)
2017/12/27(水) 10:46:46.56ID:90Vjgj1Fa あ、間違ってたw
.がカレントフォルダで..がひとつ上の親フォルダね
すんませんな
.がカレントフォルダで..がひとつ上の親フォルダね
すんませんな
743デフォルトの名無しさん (アウアウイー Sa87-cQ+C)
2017/12/27(水) 10:48:05.37ID:90Vjgj1Fa あとsplitの問題に関しては読みやすさとか書きやすさじゃね
俺もよくやる
楽だからね
俺もよくやる
楽だからね
744デフォルトの名無しさん (ワッチョイ cf80-fDvV)
2017/12/27(水) 12:51:59.50ID:u0gTyM9V0 beforeStr = "あ12月い"
afterStr = beforeStr.sub(/\d\d月/) do |matched|
month = matched.to_i + 1
month = 1 if month == 13
sprintf("%02d", month)
end
puts afterStr
#=> あ01い
Ruby で、文字列を置換した。
こういう処理は、Ruby が良い。
PowerShell でも作ってみたが、簡単な置換方法がなかった。
置換時に、コールバック関数を取れる、sub のような関数が無かった
わかりやすいように質問者が投稿する時は、名前欄に、717 と入れてくれ
afterStr = beforeStr.sub(/\d\d月/) do |matched|
month = matched.to_i + 1
month = 1 if month == 13
sprintf("%02d", month)
end
puts afterStr
#=> あ01い
Ruby で、文字列を置換した。
こういう処理は、Ruby が良い。
PowerShell でも作ってみたが、簡単な置換方法がなかった。
置換時に、コールバック関数を取れる、sub のような関数が無かった
わかりやすいように質問者が投稿する時は、名前欄に、717 と入れてくれ
745744 (ワッチョイ cf80-fDvV)
2017/12/27(水) 12:58:13.04ID:u0gTyM9V0 間違っていたので、修正した
beforeStr = "あ12月い"
afterStr = beforeStr.sub(/(\d\d)月/) do |matched|
month = $1.to_i + 1
month = 1 if month == 13
sprintf("%02d", month) + '月'
end
puts afterStr #=> あ01月い
beforeStr = "あ12月い"
afterStr = beforeStr.sub(/(\d\d)月/) do |matched|
month = $1.to_i + 1
month = 1 if month == 13
sprintf("%02d", month) + '月'
end
puts afterStr #=> あ01月い
746デフォルトの名無しさん (ワッチョイ ffb3-7LW1)
2017/12/27(水) 13:38:32.87ID:lJNZ7xHQ0 VBA勉強し始めて間もない時に組んだマクロに
replaceという名前のプロシージャを作りました
そのことはすっかり忘れてたのですが、最近になってそのマクロを手直しする必要があって
その中でReplace関数を使おうとしたらエラーが出る
おかしいなと思い調べてみたらSub replace() を発見
プロシージャの名前を変えたら大丈夫かと思いきやなぜかどこかに何かが残っているようでエラーがでる
一旦そのモジュールを解放したらReplace関数は使えるようにはなりました
しかし、なぜかReplaceと打ってもreplaceとなる
replaceと打ってもそのままreplace
replaceをReplace関数と認識してくれてはいるものの、どこかに何かが残っている
他のブックでは起きないのでまぁそれほど支障はないものの、もし分かる方いらっしゃったら
どうすればいいか教えてください
replaceという名前のプロシージャを作りました
そのことはすっかり忘れてたのですが、最近になってそのマクロを手直しする必要があって
その中でReplace関数を使おうとしたらエラーが出る
おかしいなと思い調べてみたらSub replace() を発見
プロシージャの名前を変えたら大丈夫かと思いきやなぜかどこかに何かが残っているようでエラーがでる
一旦そのモジュールを解放したらReplace関数は使えるようにはなりました
しかし、なぜかReplaceと打ってもreplaceとなる
replaceと打ってもそのままreplace
replaceをReplace関数と認識してくれてはいるものの、どこかに何かが残っている
他のブックでは起きないのでまぁそれほど支障はないものの、もし分かる方いらっしゃったら
どうすればいいか教えてください
747デフォルトの名無しさん (アウアウイー Sa87-cQ+C)
2017/12/27(水) 13:47:19.08ID:fCTi8N3va Replaceで変数宣言してみ
748デフォルトの名無しさん (ワンミングク MM9f-tu6d)
2017/12/27(水) 15:20:29.55ID:DW1nj5RcM >>746
大文字小文字は、現在開いてるコード全体で統一されてしまうからな。
変数でもプロシャージャでもいいから、定義し直すと内部で覚えてる大文字小文字が上書きされるぽ
この仕様のせいで、他人の書いたブック開いたまま修正保存するといつのまにか変わってたりする。
するとWinMergeとかでDIFFしたときにイラッ
独り言でした
大文字小文字は、現在開いてるコード全体で統一されてしまうからな。
変数でもプロシャージャでもいいから、定義し直すと内部で覚えてる大文字小文字が上書きされるぽ
この仕様のせいで、他人の書いたブック開いたまま修正保存するといつのまにか変わってたりする。
するとWinMergeとかでDIFFしたときにイラッ
独り言でした
749デフォルトの名無しさん (アウーイモ MM67-dNkK)
2017/12/27(水) 18:43:06.62ID:8Kp24ZKYM プロシージャ外に書いたオブジェクトの寿命はいつまでなのでしょうか?
グローバル変数にオブジェクトを保存してそれをfunctionで返すシングルトンオブジェクトを作ったのですが、
プログラムが一度終了して再度起動した際もオブジェクトが残っており、ゴミデータでエラーが起きています。
一度ファイルを全て閉じるまでは残るものなのでしょうか?
グローバル変数にオブジェクトを保存してそれをfunctionで返すシングルトンオブジェクトを作ったのですが、
プログラムが一度終了して再度起動した際もオブジェクトが残っており、ゴミデータでエラーが起きています。
一度ファイルを全て閉じるまでは残るものなのでしょうか?
750デフォルトの名無しさん (アウアウイー Sa87-cQ+C)
2017/12/27(水) 18:55:21.26ID:K6GLaCg8a >>749
グローバル変数ならエラーで止まるかブックが生きてる限りは生きてるんじゃね
グローバル変数ならエラーで止まるかブックが生きてる限りは生きてるんじゃね
751デフォルトの名無しさん (JP 0H27-amUm)
2017/12/27(水) 19:03:21.38ID:4eyrVwN9H >>749
あとEndで止めると死ぬ
あとEndで止めると死ぬ
752デフォルトの名無しさん (スップ Sd1f-Eeo6)
2017/12/27(水) 20:23:28.17ID:ry3vSREld >>751
End なあ、せめて Class_Terminate()して欲しかった
End なあ、せめて Class_Terminate()して欲しかった
753デフォルトの名無しさん (ワッチョイ ffeb-7LW1)
2017/12/27(水) 20:40:54.92ID:RyDVOJzS0 >>732 です。
officeの再インストール試してみましたが
不具合解消せずでした・・・・無念
幸い既存マクロは動くので、新規作成と実行は
他のPCでやることにしました。
不具合はExcelだけで、Accessでは特に問題ありませんでした。
一応ご報告まで。
officeの再インストール試してみましたが
不具合解消せずでした・・・・無念
幸い既存マクロは動くので、新規作成と実行は
他のPCでやることにしました。
不具合はExcelだけで、Accessでは特に問題ありませんでした。
一応ご報告まで。
754デフォルトの名無しさん (アウアウイー Sa87-Tgm4)
2017/12/27(水) 20:55:52.26ID:K6GLaCg8a755デフォルトの名無しさん (ワッチョイ b303-G8t+)
2017/12/27(水) 21:08:27.21ID:CubzVxEy0 >>754
マクロ終わったら誰が初期化するん?
マクロ終わったら誰が初期化するん?
756デフォルトの名無しさん (ワッチョイ 6fc5-buzn)
2017/12/27(水) 23:24:01.01ID:TIhBPqs40757デフォルトの名無しさん (ワッチョイ 6fd2-oA/d)
2017/12/27(水) 23:29:35.39ID:0b7v1yOK0758デフォルトの名無しさん (ワッチョイ de93-SYER)
2017/12/28(木) 02:02:28.11ID:uSnaEunu0 >>757
Globalで保持していると想定していた変数がいつのまにかクリアされていて想定外の動作をおこし痛い目にあったことがあります。
調べてみたら、エラー発生時またはEnd通過時にGlobal変数の寿命が尽きるようで、、
それ以来、Global変数もEnd Statementも避けています。
記憶が必要な場合は、Cell値やValidation値またはDocumentProperty等を使うようになりました。
Globalで保持していると想定していた変数がいつのまにかクリアされていて想定外の動作をおこし痛い目にあったことがあります。
調べてみたら、エラー発生時またはEnd通過時にGlobal変数の寿命が尽きるようで、、
それ以来、Global変数もEnd Statementも避けています。
記憶が必要な場合は、Cell値やValidation値またはDocumentProperty等を使うようになりました。
759デフォルトの名無しさん (JP 0H96-FiVz)
2017/12/28(木) 02:45:31.50ID:m7DZbaKUH VBA初心者です
2つのセルがイコールになるように別のセルの値を変化させるというVBAソルバを作成したいのですが、エラーばかりで全く進みません・・・
現在は7行目から10行目まで構文エラーが出ています。
どなたかご教授願います・・・
Sub Solver()
i = 1
Do Until i = 313
'-------------------------------------------
Application.DisplayAlerts = False
SolverOk SetCell:="K" & i, ByChange:="J" & i
SolverAdd cellRef:=Range("K1:K313"), _
Relation:=2, _
FormulaText:=Range("L1:L313"), _
Application.DisplayAlerts = True
'---------------------------------------------
SolverSolve
i = i + 1
Loop
End Sub
2つのセルがイコールになるように別のセルの値を変化させるというVBAソルバを作成したいのですが、エラーばかりで全く進みません・・・
現在は7行目から10行目まで構文エラーが出ています。
どなたかご教授願います・・・
Sub Solver()
i = 1
Do Until i = 313
'-------------------------------------------
Application.DisplayAlerts = False
SolverOk SetCell:="K" & i, ByChange:="J" & i
SolverAdd cellRef:=Range("K1:K313"), _
Relation:=2, _
FormulaText:=Range("L1:L313"), _
Application.DisplayAlerts = True
'---------------------------------------------
SolverSolve
i = i + 1
Loop
End Sub
760デフォルトの名無しさん (ワッチョイ cab3-RYVm)
2017/12/28(木) 05:04:43.84ID:BF7frMSQ0761デフォルトの名無しさん (アウアウイー Sa43-UI1C)
2017/12/28(木) 08:06:18.47ID:VokPBxMja762デフォルトの名無しさん (スップ Sdea-4yVJ)
2017/12/28(木) 08:14:47.46ID:ezpQ52SId イミディエイトウィンドウにあるオブジェクトのことだよね
763デフォルトの名無しさん (ワッチョイ c69d-pcOt)
2017/12/28(木) 17:26:42.52ID:GeC01ME+0 >>749,758
そもそもプログラムが終了ってどういう事をさしてる?
ホントにプログラムが終了すれば、すべての変数の内容は失われるよ
たんに実行するコードが無くなっただけではプログラムは終了していない
Endはプログラムを終了させるけど、エラー出ただけでは終了するとは限らない
デバッグで再実行や変数見たりできるのはプログラムは中断したけど終了してないから
そもそもプログラムが終了ってどういう事をさしてる?
ホントにプログラムが終了すれば、すべての変数の内容は失われるよ
たんに実行するコードが無くなっただけではプログラムは終了していない
Endはプログラムを終了させるけど、エラー出ただけでは終了するとは限らない
デバッグで再実行や変数見たりできるのはプログラムは中断したけど終了してないから
764753 (ワッチョイ 5aeb-RYVm)
2017/12/28(木) 23:10:38.77ID:lWNTZScR0 >>756
753です。
マクロの記録そのものができないのです。
記録しようとすると「マクロの記録ができませんでした」と
エラーが出てしまいます。
新規作成と編集が全て制限されているようです。
セキュリティは「すべて有効」で設定しており、
そこでの問題は無いと思うのですが・・・・
753です。
マクロの記録そのものができないのです。
記録しようとすると「マクロの記録ができませんでした」と
エラーが出てしまいます。
新規作成と編集が全て制限されているようです。
セキュリティは「すべて有効」で設定しており、
そこでの問題は無いと思うのですが・・・・
765デフォルトの名無しさん (ワッチョイ cb8a-Auke)
2017/12/29(金) 04:00:07.55ID:G/qmS2zk0 >>759
"_" は次の行をつなげるためにつけたのだろうけど
Application.DisplayAlearts = True の前の行にも "_" が付いているから
何か貼り付け忘れか、間違って削除してしまったものがあるのでは
"_" は次の行をつなげるためにつけたのだろうけど
Application.DisplayAlearts = True の前の行にも "_" が付いているから
何か貼り付け忘れか、間違って削除してしまったものがあるのでは
766デフォルトの名無しさん (ワッチョイ cb8a-Auke)
2017/12/29(金) 04:08:47.98ID:G/qmS2zk0 セキュリティーレベル一番高いとダメなんじゃね
767デフォルトの名無しさん (ワッチョイ 5fd8-0Y/N)
2017/12/29(金) 07:22:34.45ID:b/Z/hzqU0 >>732
あー、昔そんな事象に当たったことあるよ
原因は同じかどうかは分からんけど
俺の場合とんでもなく深い階層のフォルダに置いてたら
VBEのシートモジュールが青く表示されてコードが作成できなくなった
そのファイル、とりあえず浅い階層のフォルダや
どこかのサーバに置いているなら
クライアント側にコピーして内容確認出来る?
あー、昔そんな事象に当たったことあるよ
原因は同じかどうかは分からんけど
俺の場合とんでもなく深い階層のフォルダに置いてたら
VBEのシートモジュールが青く表示されてコードが作成できなくなった
そのファイル、とりあえず浅い階層のフォルダや
どこかのサーバに置いているなら
クライアント側にコピーして内容確認出来る?
768デフォルトの名無しさん (ワッチョイ 5aeb-RYVm)
2017/12/29(金) 08:53:00.31ID:JNsjSKSN0 732、753です
皆様レスありがとうございます。
作成の不具合は、全くの新規Bookでも起こります。
既存マクロの場合は、コードの表示と実行は行えますが
編集が制限されています。
問題が発生してから、他のPCで新規作成したマクロを
該当PCで実行しようとしましたが、それはコードの表示すら
できませんでした。ファイルサーバー経由とかではなく
デスクトップ上に置いて実行しても同じです。
Accessでは特に問題ないので、VBAそのものではなく、
Excel単体の何かだとは思うのですが、皆目見当がつきませぬ。
皆様レスありがとうございます。
作成の不具合は、全くの新規Bookでも起こります。
既存マクロの場合は、コードの表示と実行は行えますが
編集が制限されています。
問題が発生してから、他のPCで新規作成したマクロを
該当PCで実行しようとしましたが、それはコードの表示すら
できませんでした。ファイルサーバー経由とかではなく
デスクトップ上に置いて実行しても同じです。
Accessでは特に問題ないので、VBAそのものではなく、
Excel単体の何かだとは思うのですが、皆目見当がつきませぬ。
769デフォルトの名無しさん (ワッチョイ 0a65-FiVz)
2017/12/29(金) 10:57:41.44ID:MXSoKJ1y0770デフォルトの名無しさん (ワッチョイ 4a23-Kkzi)
2017/12/30(土) 12:22:18.46ID:cGzM6pFo0 CreateObject("System.Collections.ArrayList")ってやったら
.NETのArrayListがVBAで使えてしまったんですが
これ隠し機能とかじゃなくて正式に使っていいんですよね?
.NETのArrayListがVBAで使えてしまったんですが
これ隠し機能とかじゃなくて正式に使っていいんですよね?
771デフォルトの名無しさん (ワッチョイ 069f-RYVm)
2017/12/30(土) 13:25:09.57ID:dKM8JRI70 前にも話題に上がったけど
.NETのほんの一部はVBAからも使える
リファレンスにも書いてあったような気がする
他で代替できるのでArrayListをわざわざ使うメリットはないということで
そのときは終わったと思う
.NETのほんの一部はVBAからも使える
リファレンスにも書いてあったような気がする
他で代替できるのでArrayListをわざわざ使うメリットはないということで
そのときは終わったと思う
772デフォルトの名無しさん (ワッチョイ 4a23-Kkzi)
2017/12/30(土) 15:32:35.43ID:cGzM6pFo0 >>771
参考にします。ありがとうございました
参考にします。ありがとうございました
773デフォルトの名無しさん (ワッチョイ b3b3-UI1C)
2017/12/30(土) 15:33:00.15ID:xXJ5T9Ia0774デフォルトの名無しさん (ワッチョイ 6fc3-2NT7)
2017/12/31(日) 08:34:16.68ID:5sx4VZ0k0 >>772
Windows APIだって使えるんだぞ?
Windows APIだって使えるんだぞ?
775デフォルトの名無しさん (ワッチョイ de81-DSDK)
2017/12/31(日) 08:58:37.79ID:TXRnAgcd0 VBAの保存方法について
バックアップどうしてますか?
VBAのマクロだと戻る釦聞かないし、バグって復旧するとマクロの個所全部消えちゃうので2つくらいのバックアップを別ファイルでとってあるんですけど皆さんはどうしてますか?
まだ素人なので思ったのと違う処理になって戻せなくなることがしょっちゅうあるので
バックアップは大事
バックアップどうしてますか?
VBAのマクロだと戻る釦聞かないし、バグって復旧するとマクロの個所全部消えちゃうので2つくらいのバックアップを別ファイルでとってあるんですけど皆さんはどうしてますか?
まだ素人なので思ったのと違う処理になって戻せなくなることがしょっちゅうあるので
バックアップは大事
776775 (ワッチョイ de81-DSDK)
2017/12/31(日) 09:02:17.31ID:TXRnAgcd0 >>775
戻る釦ってまるい矢印の奴ね
戻る釦ってまるい矢印の奴ね
777デフォルトの名無しさん (ワッチョイ 4a1e-FiVz)
2017/12/31(日) 09:09:26.61ID:PwPBZUwb0778デフォルトの名無しさん (ワッチョイ 86e7-XPej)
2017/12/31(日) 09:49:30.47ID:aMifsa1T0 マクロ有りエクセルファイル自体にデータを入れて運用するのと、
データは別エクセルファイルにしてマクロ有りエクセルファイルでデータ入りエクセルファイルを操作するのと、
どっちがメンテナンスしやすい作り方だろうか?
いつも悩んでしまう
データは別エクセルファイルにしてマクロ有りエクセルファイルでデータ入りエクセルファイルを操作するのと、
どっちがメンテナンスしやすい作り方だろうか?
いつも悩んでしまう
779デフォルトの名無しさん (ワッチョイ c32b-LuW1)
2017/12/31(日) 09:52:29.70ID:35C6Q16O0 アドインマクロにしましょう
780デフォルトの名無しさん (ワッチョイ 5f9d-tENg)
2017/12/31(日) 11:06:17.25ID:fsRyV04Q0 マクロのバージョン管理ってどうやってます?
インポートファイルを分けすぎると不便なのでshareFanction見たいなインポートファイルに使いそうな関数全部入れてますが、初心者なもので開発中に関数の引数や戻り値を変えたくなるような場面が多々あり
今までのshareFanctionと互換性が保てなくなりますが、引数と戻り値を修正した関数以外でバグを潰したような関数は最新を使用したいです。
今はコピペで対応してますが
インポートファイルを分けすぎると不便なのでshareFanction見たいなインポートファイルに使いそうな関数全部入れてますが、初心者なもので開発中に関数の引数や戻り値を変えたくなるような場面が多々あり
今までのshareFanctionと互換性が保てなくなりますが、引数と戻り値を修正した関数以外でバグを潰したような関数は最新を使用したいです。
今はコピペで対応してますが
781デフォルトの名無しさん (ワッチョイ cae7-n93d)
2017/12/31(日) 11:27:58.03ID:rNrttlhS0 個人なのか仕事なのか書かないと有効なレスがつかないのではないかな
782デフォルトの名無しさん (ワッチョイ 5f9d-tENg)
2017/12/31(日) 11:34:47.18ID:fsRyV04Q0783デフォルトの名無しさん (ワッチョイ cae7-n93d)
2017/12/31(日) 11:36:51.05ID:rNrttlhS0784デフォルトの名無しさん (ワッチョイ 5f9d-tENg)
2017/12/31(日) 11:55:17.97ID:fsRyV04Q0 >>783
ありがとうございます
ざっとみた感じソースファイルのバージョン管理はできそうですが、
例えばサーバーあるいはローカルマシン上にそのshareFanctionを使用している分散しておいてある場合、
それぞれのマクロを調べて更新したいファイルを選択、修正版マクロを適用する、
みたいな使い方ってできるんですかね?
ありがとうございます
ざっとみた感じソースファイルのバージョン管理はできそうですが、
例えばサーバーあるいはローカルマシン上にそのshareFanctionを使用している分散しておいてある場合、
それぞれのマクロを調べて更新したいファイルを選択、修正版マクロを適用する、
みたいな使い方ってできるんですかね?
785デフォルトの名無しさん (ワッチョイ 5f9d-tENg)
2017/12/31(日) 11:57:21.02ID:fsRyV04Q0786デフォルトの名無しさん (ワッチョイ de81-DSDK)
2017/12/31(日) 12:53:47.48ID:TXRnAgcd0 ヴァージョンって仕事じゃないからいつから何時まででUP履歴にしたらいいかわからなん
機能変更したら必ずかもしれないけど、個人用だとやりながら変更しているからバージョン数が半端ないことになる。
機能変更したら必ずかもしれないけど、個人用だとやりながら変更しているからバージョン数が半端ないことになる。
787デフォルトの名無しさん (アウアウイー Sa43-UI1C)
2017/12/31(日) 13:10:06.47ID:sYPUhsnja バージョン管理は大変だよな
インストーラーみたいなのつくってどうにかしようとしてるがうまく行くかわからん
インストーラーみたいなのつくってどうにかしようとしてるがうまく行くかわからん
788デフォルトの名無しさん (ワッチョイ cab3-tILW)
2017/12/31(日) 13:25:39.05ID:pVPyHW7p0789デフォルトの名無しさん (ワッチョイ 5f9d-tENg)
2017/12/31(日) 13:31:04.61ID:fsRyV04Q0 >>787
専用のソフトがなければ1sheetをマクロ関数管理用にして各関数内にver x.y.z(x変更で互換性無し、y変更で互換性あり、z変更は互換性ありバグ修正みたいにして)
モジュールをインポートしたファイルをオープン時に、イベント検知で所定の管理ファイルを検索、新しいバージョンがあれば自動で今までのモジュールを解放、y,zバージョンが最新のファイルをインポート
みたいにすれば実現可能そうですが結構手間がかかりそうで…
専用のソフトがなければ1sheetをマクロ関数管理用にして各関数内にver x.y.z(x変更で互換性無し、y変更で互換性あり、z変更は互換性ありバグ修正みたいにして)
モジュールをインポートしたファイルをオープン時に、イベント検知で所定の管理ファイルを検索、新しいバージョンがあれば自動で今までのモジュールを解放、y,zバージョンが最新のファイルをインポート
みたいにすれば実現可能そうですが結構手間がかかりそうで…
790デフォルトの名無しさん (アウアウカー Sacb-WFBV)
2017/12/31(日) 13:56:42.14ID:hllNi94Va マクロで書けよ。
バージョン管理。
セキュリティが低下するけどな。
バージョン管理。
セキュリティが低下するけどな。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 習政権、高市首相への態度硬化 台湾有事発言で連日非難 中国 ★11 [ぐれ★]
- 国内ホテル、既にキャンセルも 訪日客関連業界、事態見守る ★3 [蚤の市★]
- 日本損失1.7兆円に修正 中国渡航自粛の影響試算 [蚤の市★]
- 「どうしようもない」 ため息つくアジアの玄関口 中国の訪日自粛で−福岡市 [蚤の市★]
- 「アベノミクス」で投資対象と化したマンション ローンの低金利続き「年収の12倍」借りる20代出現 [蚤の市★]
- 食品の高騰対策、政府が交付金の「特別枠」検討 原則全ての自治体で [蚤の市★]
- 【超絶悲報】日本政府「高市さんの答弁撤回はない。政権として弱腰と映る姿勢は見せられない」これもう立憲岡田の議員辞職しかないだろ [519511584]
- 【実況】博衣こよりのえちえち朝こよ🧪
- 台湾「高市さんが台湾人の悲願を叶えてくれた!」これじゃ高市さん発言撤回できないぢゃん😰 [523957489]
- 高市周辺、さすがに焦り始めるww「小さな火種が火事になりかけている。早く鎮火しなくてはいけない」 [271912485]
- 【超悲報】中国への武力行使、世論調査で「賛成」「どちらかといえば賛成」48.8% 「反対」「どちらかといえば反対」の44.2%を上回る [314039747]
- 中国「高市が頭を下げて謝罪しない限り、絶対に許さない」 [329329848]
