シートをコピーして新規Bookで保存するマクロを作成しています。
このシートには「クリックするとユーザーフォームを開く」ボタンをつけているのですが、コピー先のBookにユーザーフォームをコピーすることができません。
(全て自動化したいので、両方のBookをVBEで開いてドラッグでコピーするようなことは考えていません。)
良い方法がありましたら、アドバイスください。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

フォームをエクスポートして新しいブックにインポートすればOKです。


下はユーザーフォームのMyFormをC:\myform.frmにエクスポーとして新しいブックにインポートする例です。

Dim newBook As Workbook
ThisWorkbook.VBProject.VBComponents.Item("MyForm").Export "C:\myform.frm"
Set newBook = Workbooks.Add
newBook.VBProject.Import "C:\myform.frm"
    • good
    • 1

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qフォーム御礼とは何ですか?

こんにちは。
あるブログで「フォーム御礼」という言葉を見かけましたが、どういう意味でしょうか?教えてください。

Aベストアンサー

そのブログサイトに設置されているメールフォームなどから
送られてきたブログ閲覧者からのメッセージに対する
ブログ管理者のお礼ではないでしょうか。

QEXCELVBAでコピー・について

(例) (例)のようにあった時、暑いはA4まで寒いはA7までコピーしたいのですが、
  A         データは別のデータから貼り付けしているため、時々によって空白セルの     1 暑い        幅が違います。要するにA1は「寒い」の一つ手前のセルまでコピーと認識
2            させたいのですが、どう入力すればよいか教えてください
3
4
5 寒い
6
7
8 冷たい
9
10

Aベストアンサー

一例です。
VBAでない方法です。
(1)A1:A10を選択→ctrl+Gキー押下→セル選択→空白セルを選択→OK→数式バーに=A1と入力→ctrl+enterキー押下

(2)VBAは、上記操作をマクロ記録すればよいが、範囲を可変にしたい場合は、以下のコードの「Range("A1:A10").Select」を削除して範囲選択は手動として下さい。
 マクロ記録でのコード例です。(マクロ記録終了後にalt+F11キー押下→標準モジュール→Module1に登録されています)
Sub Macro1()
Range("A1:A10").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.FormulaR1C1 = "=R[-1]C" →Selection.Formula = "=A1"でも可
End Sub

Q“フォーム”とは何でしょうか。

“フォーム”というインターネット関連の言葉を最近耳にいたします。

検索を試みましたが、しっくりと理解できません。

特徴を教えていただけないでしょうか。
何ができるのでしょうか。その例を教えていただきたく願います。

Aベストアンサー

「フォーム」とは、データを送信するための窓といったらいいでしょうか。gooでも、検索するときに検索キーワードを入力するボックスがありますよね。それやチェックボックスなんかを総称して「フォーム」と呼びます。

「フォーム」を使えば、ユーザーが任意に選んだ情報をサーバーに送信できるという特徴がありますね。(つまり選択肢のなかから選択といったことが可能になる)

QExcelVBAを使ってシートの行の情報をテキストファイルに書き込みたいのですが...

ExcelVBAを使ってシートの行の情報をテキストファイルに書き込みたいのですが...
(とりあえず、一行分をテキストファイルに書き込みたいです)

色々なサイトを見ても難しそうなことが多く書いてあったので、上記のような例でサンプルを使って(なるべくシンプルな形で)ご教授していただける方がいらっしゃればお願いいたします。

Aベストアンサー

Const cnTITLE = "HTMLファイル出力処理"
Const cnFILTER = "全てのファイル (*.*),*.*"
Dim xlAPP As Application ' Applicationオブジェクト
Dim intFF As Integer ' FreeFile値
Dim strFILENAME As String ' OPENするファイル名(フルパス)
Dim bufStr As String 'ファイルの内容
Dim GYO As Long ' 収容するセルの行
'A1~?1までセルに文字が無い所までカンマ区切りで変数に格納
GYO = 1
Do
If Worksheets("データ入力").Cells(1, GYO).Value = "" Then
Exit Do
Else
strAft = strAft + Worksheets("データ入力").Cells(1, GYO).Value
strAft = strAft + ","
End If
Loop

'ここからファイル操作
' Applicationオブジェクト取得
Set xlAPP = Application
' 「名前を付けて保存」のフォームでファイル名の指定を受ける
xlAPP.StatusBar = "出力するファイル名を指定して下さい。"
strFILENAME = xlAPP.GetSaveAsFilename(InitialFilename:="hoge.txt", _
FileFilter:=cnFILTER, Title:=cnTITLE)
' キャンセルされた場合は以降の処理は行なわない
If StrConv(strFILENAME, vbUpperCase) = "FALSE" Then Exit Sub
' FreeFile値の取得(以降この値で入出力する)
intFF = FreeFile
' 指定ファイルをOPEN(出力モード)
Open strFILENAME For Output As #intFF
' レコードを出力
Print #intFF, bufStr
' 指定ファイルをCLOSE
Close #intFF

とりあえずこれで試してみてください。
あくまで1行分だけです

Const cnTITLE = "HTMLファイル出力処理"
Const cnFILTER = "全てのファイル (*.*),*.*"
Dim xlAPP As Application ' Applicationオブジェクト
Dim intFF As Integer ' FreeFile値
Dim strFILENAME As String ' OPENするファイル名(フルパス)
Dim bufStr As String 'ファイルの内容
Dim GYO As Long ' 収容するセルの行
'A1~?1までセルに文字が無い所までカンマ区切りで変数に格納
GYO = 1
Do
If Worksheets("データ入力").Cells(1, GYO).Value = "" ...続きを読む

Qメールフォームのソースにある「id="sen"」とは何?

人にもらったメールフォームをカスタマイズしてフォームを作っています。一行のテキスト入力フィールドのソースが以下のようになっています。
<INPUT type="text" size="50" maxlength="50" name="mail1" id="sen">
フィールドは複数あるのですが、どれも「id="sen"」がついていて、これが何を規定しているものかわかりません。html制作はホームページビルダーを使いましたがそのような設定項目はなく、Web制作の本をみても載っていません。なくてもいいものなのか、設定が必要なものなのか、わかる方、教えて下さい。
(私はhtmlを作成し、あとはプログラマに修正してもらうことになっているのですが、そのプログラマの方もよくわからないようです。)

Aベストアンサー

idはスタイルシートやJavaScript、DynamicHtmlで使用される要素です。
そういった類のものがソース内になければ、idは消去しても問題ないはずです。

参考URL:http://www.tohoho-web.com/html/attr/id.htm

Qエクセル2007でマクロを動かし、たくさんのシート(200シート)に情

エクセル2007でマクロを動かし、たくさんのシート(200シート)に情報を書き込み
保存する処理を実行するとメモリを大量に消費してエクセルが落ちる現象が発生する。
タスクマネージャでコミットチャージが2.5GBになっている・・・。
ちなみにエクセル2003だと問題ない。

メモリを消費しない方法、或いは、エクセルを落ちないようにする方法を
ご存知の方がいらっしゃいましたら回答をお願いいたします。


ソフト:Microsoft Excel 2007sp2 (1.2.0.6425.1000)
OS:WinXP

Aベストアンサー

どのようなマクロを書かれているかわかりませんが、シート数の上限はPCの性能に依存するので一番良いのはファイルを分けることだと思いますが。(2003と2007の内部動作の違いでメモリ使用量が異なるのでしょう)
試すとすれば、
1.マクロ実行のはじめに「Application.ScreenUpdating = False」を 記述し、画面更新を無効にする。(終了時には必ずTrueに設定)
2.式の自動計算を手動にする。「Application.Calculation =   xlCalculationManual」
 終了時には必ず自動に設定「xlCalculationAutomatic」

上記で無理であればファイルを分けるしかないと思います。

Q質問フォームからの情報とは

よくホームページなどで、
「ご意見・ご感想はコチラ」のような入力するところがありますが、
(アドレスへ送るのではなく、入力フォームです)
あれは送り元であるこちらの情報、
例えばPCやケータイの何らかの情報も自動的に送られるものなのでしょうか?

同じPCから二度送れば、同じ情報が出て発送者が分かったりするものでしょうか?

Aベストアンサー

そのフォームサービスによって違うと思いますが、IPとHostが分かってしまうものがあります。
そういったものだと同じPC・ケータイからの発信なら分かってしまうでしょう。

QExcelVBAで行の非表示、表示をコード化したい

現在、Excel2003をつかっており、VBAを用いて
sheet1シートの2行目、4行目、10行目を非表示にするマクロ(HIDDEN)と
すべての行を表示にするマクロ(APPEAR)を使っています。

Sub HIDDEN()
ThisWorkbook.Worksheets("sheet1").Rows("2").HIDDEN = True
ThisWorkbook.Worksheets("sheet1").Rows("4").HIDDEN = True
ThisWorkbook.Worksheets("sheet1").Rows("10").HIDDEN = True
End Sub


Sub APPEAR()
ThisWorkbook.Worksheets("sheet1").Rows.HIDDEN = False
End Sub


いま、2つのマクロを併合し

「Sheet1の2行目、4行目、10行目のいずれかが非表示であれば、すべての行を表示
そうでなければ、2行目、4行目、10行目のすべてを非表示にしたい」
と考えています。
ここで私が困っているのは、2行目、4行目、10行目のいずれかが非表示であれば
というのをどうVBAで記述するのかです。

現在、Excel2003をつかっており、VBAを用いて
sheet1シートの2行目、4行目、10行目を非表示にするマクロ(HIDDEN)と
すべての行を表示にするマクロ(APPEAR)を使っています。

Sub HIDDEN()
ThisWorkbook.Worksheets("sheet1").Rows("2").HIDDEN = True
ThisWorkbook.Worksheets("sheet1").Rows("4").HIDDEN = True
ThisWorkbook.Worksheets("sheet1").Rows("10").HIDDEN = True
End Sub


Sub APPEAR()
ThisWorkbook.Worksheets("sheet1").Rows.HIDDEN = False
End Sub


いま、2...続きを読む

Aベストアンサー

With ThisWorkbook.Worksheets("sheet1")
  If .Rows("2").Hidden Or .Rows("4").Hidden Or .Rows("10").Hidden Then
    APPEAR
  Else
    .Rows("2").Hidden = True
    .Rows("4").Hidden = True
    .Rows("10").Hidden = True
  End If
End With

QGV-RX26T256HのPCBフォームとは?

http://www.links.co.jp/html/press2/gigabyte_gv-rx26t256h.html
今度、上記サイトのボードを買おうと思っているのですが、PCBフォームの意味が分かりません。
私のPCはマイクロATXなので、もしかしたら使えないのでしょうか?
スペックは
M2A-Vm
AMD DC 5000+
CFD W2U800CQ-1GLZJ PC2-6400 2G
DVD ASUS DRW-2014L1T B BULK
HDD HITATHI GST 160G
M-60BK (ブラック・電源なし)
ZUMAX 400W

宜しくお願いします。

Aベストアンサー

PCBフォームはATX、PCBサイズは175mm×111mm
ざんねんながら ATX仕様ですが PCはマイクロATX無理かと思いますが
上は高さ と 長さ表示です。
ケースによるかな
ついでに言っときますがASUSU とGIGABYTE 相性悪いよ
同メーカー選んだ方が正解ですが

QExcelVBAでODBCドライバを使ってCSVファイルにアクセスしようとしています。

こんにちは。

いろいろとネットを探したのですが、詳細を見つけられなかったので質問することにしました。

内容は、ExcelVBAで[ODBC Text Driver]を使って、CSVファイルにアクセス(SQL構文のSELECT文で取得)するというものです。

そんな中、ある条件でエラーが発生してしまい、(解説がまったくないため)手詰まりになってしまいました。

Dim MyDb As ADODB.Connection
Dim MyRs As ADODB.Recordset
Dim MySql As String

Set MyDb = CreateObject("ADODB.Connection")
MyDb.Open "Driver={Microsoft Text Driver (*.txt; *.csv)}; DBQ=c:\temp; ReadOnly=1"
MySql = "SELECT * FROM test.csv"
MySql = MySql & " WHERE a ='" & strA & "'"
MySql = MySql & " AND b ='" & strB & "'"
MySql = MySql & " AND c ='" & strC & "'"
Set MyRs = MyDb.Execute(MySql) <---- エラー発生!!!

エラーは、
 実行時エラー '-2147217913 (80040e07)':
 [Microsoft][ODBC Text Driver]抽出条件でデータ型が一致しません。
です。

抽出条件のa, b, cをそれぞれ個別に条件として設定したところ、
a…NG
b…OK
c…OK
であることが分かりました。

元々のCSVファイルは、文字フィールドが"(ダブルコーテーション)で囲まれておらず、『文字のフィールドなのか、数値のフィールドなのか区別できないでいるのか?』という疑問が生まれました、が調べようにも解説を見つけられず…。

このエラーの原因がお分かりの方、もしくは解説サイトをご存知の方、いらっしゃいましたら回答ください。

よろしくお願いします。

こんにちは。

いろいろとネットを探したのですが、詳細を見つけられなかったので質問することにしました。

内容は、ExcelVBAで[ODBC Text Driver]を使って、CSVファイルにアクセス(SQL構文のSELECT文で取得)するというものです。

そんな中、ある条件でエラーが発生してしまい、(解説がまったくないため)手詰まりになってしまいました。

Dim MyDb As ADODB.Connection
Dim MyRs As ADODB.Recordset
Dim MySql As String

Set MyDb = CreateObject("ADODB.Connection")
MyDb.Open "Driver={...続きを読む

Aベストアンサー

試しにこちらの環境でtest.csvを
a, b, c
1, XXXX, YYYY
Z, SSSS, TTTT
として実行したら、エラーは発生しませんでしたが、
a, b, c
1, XXXX, YYYY
2, SSSS, TTTT
として実行したところ、同じエラー80040e07が発生しました。質問者さんの推測通り、文字列のカラムを数値と認識しているせいかもしれません。
c:\tempにschema.iniという名前のテキストファイルを作成し、そこでtest.csvのファイルレイアウトを定義してみて下さい。
【schme.iniの例】
[test.csv]
ColNameHeader=True
Format=CSVDelimited
Col1=A Char Width 255
Col2=B Char Width 255
Col3=C Char Width 255


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報