Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2907 / 13646 ツリー ←次へ | 前へ→

【65341】ユーザーフォームのエクスポートとインポート 友子 10/5/13(木) 12:25 質問[未読]
【65342】Re:ユーザーフォームのエクスポートとイン... Jaka 10/5/13(木) 13:52 発言[未読]
【65343】Re:ユーザーフォームのエクスポートとイン... 友子 10/5/13(木) 14:40 質問[未読]
【65346】Re:ユーザーフォームのエクスポートとイン... Jaka 10/5/13(木) 15:12 発言[未読]
【65347】Re:ユーザーフォームのエクスポートとイン... 友子 10/5/13(木) 15:30 お礼[未読]
【65349】あ、 Jaka 10/5/13(木) 15:42 発言[未読]
【65350】Re:あ、 友子 10/5/13(木) 17:53 お礼[未読]

【65341】ユーザーフォームのエクスポートとインポ...
質問  友子  - 10/5/13(木) 12:25 -

引用なし
パスワード
   MyBook1という名前のファイルがありますがこのファイルにはUserformが5個とModuleが3個あります、これを同じルートにあるMyVBAのフォルダーにエクスポートしてMyBook1を終了し、同じルートにあるMyBook2を開きこれらをインポートするにはどう記述したらよいですか?

【65342】Re:ユーザーフォームのエクスポートとイ...
発言  Jaka  - 10/5/13(木) 13:52 -

引用なし
パスワード
   参考
ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=53177;id=excel

フォームの場合
fpas = ThisWorkbook.Path
ThisWorkbook.VBProject.VBComponents("UserForm1").Export ("UserForm1.frm")
Workbooks("Book1.xls").VBProject.VBComponents.Import (fpas & "\UserForm1.frm")


With ThisWorkbook
  .VBProject.VBComponents.Item("Module1").Export Filename:="C:\xxxx\Module1.bas"
  'C:\xxxxに標準モジュールをエクスポートします。
  .VBProject.VBComponents.Item("UserForm1").Export Filename:="C:\xxxx\UserForm1.frm"
  'C:\xxxxにユーザーフォームをエクスポートします。
End With

///////////////

Sub インポート()
Dim FileNM As Variant, ブック名 As String, pat As String
ブック名 = "Book2.xls"
pat = ThisWorkbook.Path
For Each FileNM In CreateObject("Scripting.FileSystemObject").GetFolder(pat).Files
  If Right(FileNM.Name, 3) = "bas" Or Right(FileNM.Name, 3) = "frm" Then
    Workbooks(ブック名).VBProject.VBComponents.Import (FileNM)
  End If
Next
End Sub

Sub エクスポート()
Dim obj As Object, pat As String
pat = ThisWorkbook.Path
With Workbooks("フォーム、モジュール抜き出しファイル.xls")
  For Each obj In .VBProject.VBComponents
    If obj.Type = 1 Then
      obj.Export Filename:=pat & "\" & obj.Name & ".bas"
    ElseIf obj.Type = 1 Or obj.Type = 3 Then
      obj.Export Filename:=pat & "\" & obj.Name & ".frm"
    End If
  Next
End With
End Sub

【65343】Re:ユーザーフォームのエクスポートとイ...
質問  友子  - 10/5/13(木) 14:40 -

引用なし
パスワード
   Jaka さん、ありがとうございます、早速やってみたところうまく出来ました、本当にありがとうございます。
いままでBook1でひとつひとつエクスポートして終了して、つぎにBook2を開きインポートするには先にBook2のUserformをひとつひとつ削除してからインポートしてました。
インポートするときにBook2に同じ名前のUserformがあるとエラーがでます(当然ですよね)インポートする前にすべてのUserformを削除するにはどう記述したらよいですか?よろしくお願いいたします。

【65346】Re:ユーザーフォームのエクスポートとイ...
発言  Jaka  - 10/5/13(木) 15:12 -

引用なし
パスワード
   エクセルが意外とバカで追加したのか、削除したのかわからないようなことがあるから、
手動でやったほうが安全のように思います。
フォームのタイプは、3。

ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=5187;id=excel

【65347】Re:ユーザーフォームのエクスポートとイ...
お礼  友子  - 10/5/13(木) 15:30 -

引用なし
パスワード
   Jaka さん、ご回答ありがとうございます、わかりました、手動(開放)は手動でやります、エクスポートとインポートが今まで相当手間と時間が掛かってたのが数秒で出来るだけで感動です!!、またよろしくお願いいたします。

【65349】あ、
発言  Jaka  - 10/5/13(木) 15:42 -

引用なし
パスワード
   >  For Each obj In .VBProject.VBComponents
>    If obj.Type = 1 Then
>      obj.Export Filename:=pat & "\" & obj.Name & ".bas"

>    ElseIf obj.Type = 1 Or obj.Type = 3 Then
          ↑
      タイプ1の判定は、すでにしているのでいらない。

>      obj.Export Filename:=pat & "\" & obj.Name & ".frm"
>    End If
>  Next

【65350】Re:あ、
お礼  友子  - 10/5/13(木) 17:53 -

引用なし
パスワード
   >エクセルが意外とバカで追加したのか、削除したのかわからないようなことがあ>るから、
>手動でやったほうが安全のように思います。
>フォームのタイプは、3。

>tree=5187;id=excel
↑これを参考にして削除(開放)をやってみたら上手くいきました、本当にありがとうございました、ThisWorkbookのコードも無くなってしまいましたが(笑)、ほぼ理想通りに出来たので凄く嬉しいです。

2907 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free