Excel VBA質問箱 IV

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

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


309 / 3841 ページ ←次へ | 前へ→

【76246】Re:データを一列に並べるマクロ
発言  γ  - 14/10/20(月) 21:46 -

引用なし
パスワード
   配列を使ってはどうですか?

Dim a(1 To 30000, 1 To 1) As Variant
というように少し大きめの配列を用意しておいて、
その配列に書き込んでいきます。
そして、いくつ書き込んだかもカウントしておきます。

最後に
Range("A1").Resize(カウント, 1) = a
とすれば、必要な箇所だけがシートに書き込めます。
・ツリー全体表示

【76245】Re:動的checkbox
お礼  [名前なし]  - 14/10/20(月) 16:31 -

引用なし
パスワード
   みなさまありがとうございます。

今のコードは部分をカットして説明したものなので、
変数宣言部分をコピーし忘れているだけです。

やはり動的に作った部品はwitheventsでないと動かないのですね。


以下は直します。

Private Sub UserForm_Terminate()
  Set cbox = Nothing
End Sub
・ツリー全体表示

【76244】データを一列に並べるマクロ
質問  akiko☆  - 14/10/20(月) 15:12 -

引用なし
パスワード
   はじめて投稿させていただきます。

データが各列、各行にわりとバラバラに
入力されている状態なのを、
一列に並べたいと思っています。

範囲がA1からAS7002まであります。
データは26733個です。

何かよいやり方がありますでしょうか。

どうぞよろしくお願いいたします。

※下記マクロを参考にしましたが、
データが多いとエラーになってしまいます。
strData = strData & vbTab & Cells(lngRow, lngCol).Value

▼複数の列に入力されているデータを一列にまとめるマクロ
Sub AlignDataTo1Col()

 Dim lngRow As Long
 Dim lngCol As Long
 Dim strData As String
 Dim varData As Variant
 Dim lngLop As Long
 Dim rngOutPut As Range

 For lngCol = Selection(1).Column To Selection(Selection.Count).Column
  For lngRow = Selection(1).Row To Selection(Selection.Count).Row
   If Not IsEmpty(Cells(lngRow, lngCol).Value) Then
    strData = strData & vbTab & Cells(lngRow, lngCol).Value
   End If
  Next lngRow
 Next lngCol

 varData = Split(strData, vbTab)

 On Error Resume Next
 Set rngOutPut = Application.InputBox(Prompt:="出力先セルを指定してください。", Type:=8)

 For lngLop = 1 To UBound(varData)
  rngOutPut.Offset(lngLop - 1, 0).Value = varData(lngLop)
 Next

End Sub
・ツリー全体表示

【76243】選択範囲をPDFで保存
質問  ゆうすけ  - 14/10/20(月) 13:14 -

引用なし
パスワード
   VBAで処理ができるようにしたくていろいろ調べてみましたが、勉強不足につき
辿りつく事が出来ませんでした。ご教授いただけますでしょうか。

エクセルは2010を使用しております。
sheet3にPDFで保存したい情報があるのですが、範囲が限定されています。
A1:AJ60の部分だけをPDF化して現在のファイル名.pdfで現在のフォルダ(共有上のフォルダです)に保存したいのです。

どのようなVBAを記述すればこの作業を一発で出来るようになりますでしょうか。
宜しくお願い致します。
・ツリー全体表示

【76242】Re:番号を並べて表記したいのです。
お礼  シェバルブラン E-MAIL  - 14/10/20(月) 8:32 -

引用なし
パスワード
   >▼Yuki さん:
ご指導、ありがとうございます。
シリアルNoやデータがどこにあっても、
Sheet2を作って、A1にシリアルNo、B1にデータをコピーすれば、
出来そうです。
これくらいならなんとかなります。
ありがとうございました。
・ツリー全体表示

【76241】Re:プログレスバーの使用について
発言  カリーニン  - 14/10/20(月) 8:07 -

引用なし
パスワード
   関連スレッドの内容に当てはまるのならライセンスはクリアしているものと思われます。
その上で警告が出るのでしたら原因は私は分かりません。識者のレスをお待ち下さい。

直近のスレッド

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

↑への関連スレッド

関連スレッド
ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=40850;id=excel
・ツリー全体表示

【76240】Re:プログレスバーの使用について
お礼    - 14/10/20(月) 7:49 -

引用なし
パスワード
   カリーニン様
早速のご教授有難うございました。私のパソコンはVisual Basicはインストールしておりません。
ただCドライブにはSysWOW64¥mscomctl.ocxのファイルが存在するのですがそれでも
使用不可能なのでしょうか。
・ツリー全体表示

【76239】Re:プログレスバーの使用について
発言  カリーニン  - 14/10/19(日) 20:32 -

引用なし
パスワード
   ライセンス関係はクリアしてますか?
参考HPです。

AddinBox(プログレスバー)
4.プログレスバーコントロールの利用

ht tp://www.h3.dion.ne.jp/~sakatsu/ProgressBarTopic.htm
・ツリー全体表示

【76238】Re:フォルダーからファイルをコピーする
お礼  ペンネーム船長  - 14/10/19(日) 17:37 -

引用なし
パスワード
   γさん
実に基本ではありますが大切なご指摘有難う御座います。
(1)から(3)をやってみました。
意図した通りに動きましたー!!!
後から比較すると部品と”の間に半角スペースが2つ入っていたのが障害になっていたことが分りました。
こんなことにも多くの時間を費やしてしましました。
γさんにもおつきあいさせてしまって申し訳ありませんでした。
しかし、地道に確認する事の大切さを思い知った体験でした。
重ねてお礼申し上げます。
・ツリー全体表示

【76237】Re:フォルダーからファイルをコピーする
発言  γ  - 14/10/19(日) 14:24 -

引用なし
パスワード
   こんにちは。
私、変数Kにはまったく注目していませんでした。失礼。
""の中に変数があるなどとは想像できなかった。
fso.CopyFileを提言できなかったことを含め、忸怩たるものがあります。
回答者の資格にちょっと疑問符が付きますな。

さて、
(1)まずは変数を使わずに単なる文字列でファイル名(*を含む)を指定して、
  コピーができることを確認して下さい。
  そこが出発点です。
(2)そのあと変数を使って、ファイル名という文字列(*を含む)を構成することに
  トライして下さい。
(3)文字列の作成だけに限定して、
  別の簡単なプロシージャでトライしたほうがいいでしょう。
  気をつけるのはスペースの全角半角です。

やることは決まっているのですから、注意深く実行するだけです。
頑張ってください。
・ツリー全体表示

【76236】Re:フォルダーからファイルをコピーする
回答  ペンネーム船長  - 14/10/19(日) 14:02 -

引用なし
パスワード
   変数KをStringに設定し、下記のところを書き直すと、メッセージボックスでの確認では,test元にあるのエクセル名と一致したのですが,やはり、実行時エラー53 ファイルが見つかりませんとなります。後少しってところまで前進してるのでしょうか。                    
                    
Private Sub CommandButton1_Click()                    
  Dim fso     As Object  'ファイルシステムオブジェクト                    
  Dim strSrc   As String  'コピー元                    
  Dim strDst   As String  'コピー先                    
  Dim K As String                    
                                      
  K = Range("A2")                    
  'メインオブジェクトの生成                    
  Set fso = CreateObject("Scripting.FileSystemObject")                    
                                      
  'コピー元ファイルパスの設定                    
  strSrc = "C:\Users\○●\Desktop\test元\*部品 " & K & " *.xls" '←ここ  を書き直しました                    
  MsgBox strSrc                    
                              
  'コピー先フォルダパスの設定                    
  strDst = "C:\Users\○●\Desktop\test先\"                    
                                      
  'ファイルのコピー(上書き)                    
  'Debug.Print fso.CopyFile; strSrc, strDst ’←デバグプリントをやってみ  ましたが、引数の数が一致しませんと出ました。実行時エラー450                    
  fso.CopyFile strSrc, strDst                    
                                      
  'オブジェクト変数のクリア                    
  Set fso = Nothing                    
                    
End Sub
・ツリー全体表示

【76235】プログレスバーの使用について
質問    - 14/10/19(日) 11:11 -

引用なし
パスワード
   Windows8を使用してプログレスバーを利用したいのですが、「ツール」から
「その他のコントロール」でプログレスバー6.0にチェックマークを入れて
UserForm上に表示させると「ライブラリーは登録されていません」の表示が出てしまいます。何か設定方法があるのでしょうか。お教えて頂きたいのですが。
・ツリー全体表示

【76234】Re:フォルダーからファイルをコピーする
発言  γ  - 14/10/19(日) 5:51 -

引用なし
パスワード
   >strSrc = "C:\Users\○●\Desktop\test元\*部品 K*.xls"
>としたとき、
>Debug.Print Dir(strSrc)
>とすると、イミディエイトウインドウには何が表示されますか?
>ワイルドカードとしても、それにマッチするファイルがなければ、
>エラーになるのが正しい振る舞いです。
誤解を招く記述でした。
Dir関数は""を返します。
エラーになるのは、
  fso.CopyFile strSrc, strDst
です。
・ツリー全体表示

【76233】Re:フォルダーからファイルをコピーする
発言  γ  - 14/10/18(土) 23:48 -

引用なし
パスワード
   ▼ペンネーム船長 さん:
> fso.CopyFile strSrc, strDst  のところがエラーになります(黄色になります)
>
>「実行時エラー53 ファイルが見つかりません。」
>
>恐らく、  \*部品 K*.xls  が間違っているのではないかと思っていますがいかがでしょうか。
いかがと言われても、私にはわかりません。
何も確認できる手段がありませんから。
ご自分で確認してください。

strSrc = "C:\Users\○●\Desktop\test元\*部品 K*.xls"
としたとき、
Debug.Print Dir(strSrc)
とすると、イミディエイトウインドウには何が表示されますか?
ワイルドカードとしても、それにマッチするファイルがなければ、
エラーになるのが正しい振る舞いです。

なお、ドライブの話は、
要は、システム情報を保護するためにセキュリティが
強化されている部分に書き込んでいないか、という話です。
そうでなければ問題ありません。
・ツリー全体表示

【76232】Re:フォルダーからファイルをコピーする
回答  ペンネーム船長  - 14/10/18(土) 23:20 -

引用なし
パスワード
   失礼しました。

 fso.CopyFile strSrc, strDst  のところがエラーになります(黄色になります)

「実行時エラー53 ファイルが見つかりません。」

です。

恐らく、  \*部品 K*.xls  が間違っているのではないかと思っていますがいかがでしょうか。

私のPCはソニーvaioなのですが、DドライブがDVDに割り当てられていて
Cドライブしか使えません。
 
Cドライブで試すしかないのです。・・・スミマセン・・・
・ツリー全体表示

【76231】Re:フォルダーからファイルをコピーする
発言  γ  - 14/10/18(土) 21:09 -

引用なし
パスワード
   ▼ペンネーム船長 さん:
>下記もNGでした。
エラーになるなら、エラーメッセージを書いてください。
質問する際には、重要情報ですから、よろしくお願いします。

私の手元では成功します。
C:ドライブなのでセキュリティの関係があるのかも知れません。
D:ドライブでテストしてみては?
・ツリー全体表示

【76230】Re:フォルダーからファイルをコピーする
回答  ペンネーム船長  - 14/10/18(土) 20:53 -

引用なし
パスワード
   下記もNGでした。
どこが間違っているのでしょうか。

Private Sub CommandButton1_Click()
  Dim fso     As Object  'ファイルシステムオブジェクト
  Dim strSrc   As String  'コピー元
  Dim strDst   As String  'コピー先
  Dim K As Range
          
  Set K = Range("A2")
  'メインオブジェクトの生成
  Set fso = CreateObject("Scripting.FileSystemObject")
          
  'コピー元ファイルパスの設定
  strSrc = "C:\Users\○●\Desktop\test元\*部品 K*.xls"
  
  'コピー先フォルダパスの設定
  strDst = "C:\Users\○●\Desktop\test先\"
          
  'ファイルのコピー(上書き)
  fso.CopyFile strSrc, strDst
          
  'オブジェクト変数のクリア
  Set fso = Nothing
End Sub
・ツリー全体表示

【76229】Re:フォルダーからファイルをコピーする
発言  γ  - 14/10/18(土) 13:45 -

引用なし
パスワード
   >下記のいずれかの方法を使うことになるでしょう。
二つ以外に無いと言っている訳じゃないです。さしあたりということです。
コマンドプロンプトでCopyコマンド使ってもいいわけです。
ワイルドカードが使えます。
・ツリー全体表示

【76228】Re:フォルダーからファイルをコピーする
発言  γ  - 14/10/18(土) 13:18 -

引用なし
パスワード
   それは、ワイルドカード指定を許さない仕様だからでしょう。
具体的ファイル名を指定する必要があります。

下記のいずれかの方法を使うことになるでしょう。
(1)Folderオブジェクト の Filesプロパティで全ファイルのコレクションを取得して、
  ファイル名を Likeを使って判別する
(2)Dir関数を使用。(ワイルドカード指定が可能です)
・ツリー全体表示

【76227】フォルダーからファイルをコピーする
質問  ペンネーム船長  - 14/10/18(土) 12:35 -

引用なし
パスワード
   以下のコードでエラーが出ます。
アドバイスをお願いします。

Private Sub CommandButton1_Click()
  Dim fso     As Object  'ファイルシステムオブジェクト
  Dim fileObj   As Object  'ファイルオブジェクト
  Dim K As Range
  
  Set K = Range("A2") ’管理番号
  'メインオブジェクトの生成
  Set fso = CreateObject("Scripting.FileSystemObject")
            
  'ファイルオブジェクト取得
  'Set fileObj = fso.GetFile("C:\Users\○●\Desktop\test元\*部品 K & *.xls") '←NGナゼ?
 
  'ファイルのコピー(上書き)
  fileObj.Copy "C:\Users\○●\Desktop\test先\"
  
  'オブジェクト変数のクリア
  Set fso = Nothing
  Set fileObj = Nothing

End Sub

注)部品とKとの間には半角スペースがあります
下記もNGでした
  Set fileObj = fso.GetFile("C:\Users\○●\Desktop\test元\ & * & "鉄骨" & " " & K & * & .xls")
・ツリー全体表示

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