Today: Yesterday: Total: Online:
カテゴリー
その他
  • RSS1.0
  • RSS2.0
  • atom0.3
  • valid XHTML1.0
  • valid CSS2
  • Credit
RSSリーダーで購読する | この日記のはてなブックマーク数 | プロフィール
コメントが一番多い記事(233コメント):人の心理の裏をかくホームページ集客術:リピータになってもらうためには
ツイートが一番多い記事(94ツイート):ちょっと待て!twitterやfacebookに子供の写真を掲載する親達への警告
いいねが一番多い記事(574いいね):facebookスパムに要注意。なりすましの見分け方とアカウント乗っ取りの手口(2013年度版)

[ カテゴリー » VBA ]

カテゴリー » VBA April 06, 2016

VBAで、CSVを読み込む ID:1459934542


http://excel-ubara.com/excelvba5/EXCEL111.html

一番楽なのは、CSVはエクセルで開く3番目の方法。
CSV入力3


改造して、既存のシート「シート1」に、「C:\aaa.csv」を読みこませる場合のサンプル


Sub CSV入力()
    Dim varFileName As Variant

    Dim SHEET_NAME As String
    SHEET_NAME = "シート1"
    

    varFileName = "C:\aaa.csv"
    
    If varFileName = False Then
        Exit Sub
    End If
  
    'csvファイル開く
    Workbooks.Open Filename:=varFileName
    
    'csvファイルのシートを全コピーする。
    ActiveSheet.Cells.Copy ThisWorkbook.Sheets(SHEET_NAME).Cells
  
    'csvファイル閉じる
    ActiveWorkbook.Close SaveChanges:=False
  
  
End Sub

これで、「シート1」にcsvファイルを貼り付けできる。

— posted by midilin @ 06:22PM | Comment (0)

カテゴリー » VBA April 06, 2016

excel(VBA)でPHPにPOST送信 ID:1459934194


パラメータを&でつなげて、
	  Dim xmlhttp As Object
      Set xmlhttp = CreateObject("msxml2.xmlhttp")
      xmlhttp.Open "POST", url, False  
      xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
      xmlhttp.send (paramStr)   

で送信できる。


参考)
http://piyopiyocs.blog115.fc2.com/blog-entry-433.html


また、テキストエリア(textarea)にPOST送信する場合は
改行コード(vbNewLine)を付加して送れば良い。


例えば、URLをテキストエリアに数行書いて、POSTしたい場合は
paramStr = "&urls=http://test.co.jp/aaa.html" & vbNewLine & "http://test.co.jp/bbb.html"

のように送ることができる。

— posted by midilin @ 06:16PM | Comment (0)

カテゴリー » VBA February 20, 2012

Access VBAでファイルコピー ID:1329719827


Sub myCopyFSO()
Dim objFSO As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")

objFSO.copyFile "コピー元", "コピー先", True

Set objFSO = Nothing
End Sub

http://www.nurs.or.jp/~ppoy/access/access/acEt012.html

— posted by midilin @ 03:37PM | Comment (0)

カテゴリー » VBA November 28, 2011

VBA 二次元配列で「定数式が必要です」が出たときの対処 ID:1322470110


配列の定義は定数でなければいけないが、
変数で定義をすると、コンパイルエラーが起きる

例)
Dim listMax As Integer
listMax = UBound(list)
Dim newList(listMax, 1) As Variant・・・・ここでコンパイルエラー

こんなときは
Redimにしてやればよい
Redim newList(listMax, 1) As Variant

http://brain.cc.kogakuin.ac.jp/~kanamaru/lecture/vba2003/06-array01.html
の「配列の動的確保」の部分を参照のこと

— posted by midilin @ 05:48PM | Comment (0)

カテゴリー » VBA November 28, 2011

VBA 二次元配列を動的に扱いたいとき ID:1322469416


1次元配列など
For cnt = 0 To UBound(dataArray)
ReDim Preserve newList(cnt)
newList(cnt) = list(cnt)
Next cnt


こんな感じで
ReDim Preserve
で、動的配列ができるが、
二次元配列で、行なうとインデックスエラーが起きる

http://www.asahi-net.or.jp/~ef2o-inue/asp/sub12_02_03.html#JAG

によると
「キーワード Preserve を指定した場合、変更できるのは、動的配列の最後の次元の上限インデックス番号に限られるようでできない。

代用策として
配列の中に配列を入れる、「ジャグ配列」というのがあるらしい。

— posted by midilin @ 05:36PM | Comment (0)

カテゴリー » VBA November 24, 2011

VBA フルパスから最下層のフォルダを取得する方法 ID:1322103000


http://blog.livedoor.jp/excelvbamemo/archives/54034122.html

— posted by midilin @ 11:50AM | Comment (0)

カテゴリー » VBA November 22, 2011

VBAでサブフォルダを含めるファイル一覧、ディレクトリ一覧を取得する ID:1321943668


サブフォルダを含めるファイル一覧
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_080.html

でも、modAPIBrowseForFolder2でエラーがおき、
excel2003ではダメだった。

modAPIBrowseForFolder2で検索すると


ディレクトリ一覧を出力
http://okwave.jp/qa/q6441695.html

同様の問題があり、modAPIBrowseForFolder2を使わず
再帰的にディレクトリ一覧を生成するプログラム有

http://www.k1simplify.com/vba/tipsleaf/leaf280.html


http://www.moug.net/tech/exvba/0060078.html


すべてのサブフォルダをリストアップする
http://itpro.nikkeibp.co.jp/article/COLUMN/20060206/228661/

サブフォルダを含めてファイル一覧を取得する(WSHでDirコマンドを実行)
http://www.moug.net/tech/exvba/0060087.html
↑これが一番、理想の形で出力された

— posted by midilin @ 03:34PM | Comment (0)

カテゴリー » VBA November 14, 2011

VBAで文字コード変換 ID:1321256265


Excelのシートの内容を読み込んで、別のテキストファイルに、SJIS(Shift JIS)以外の文字コードで出力するVBAサブルーチン
http://nagblog.blog24.fc2.com/blog-entry-50.html

文字コードを変換する関数・・・動作確認済
http://pub.ne.jp/arihagne/?entry_id=2214821

— posted by midilin @ 04:37PM | Comment (0)

カテゴリー » VBA November 13, 2011

VBA 改行コード 判定 ID:1321164792


http://okwave.jp/qa/q3791659.html

— posted by midilin @ 03:13PM | Comment (0)

カテゴリー » VBA June 14, 2011

VBA Collection ソート ID:1308017564


http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard28.htm
にバブルソートを使った方法が載っている。
クラス2つと、ソート関数を使ったもの。

上記のURLだとクラスの変数を渡しており、
かつStringの比較なので
integerで比較してソートをすると、うまくいかないので
こんな感じに変更してソートできた。


関数単体で使用可能

Sub sortCollection(ByRef p_col As Collection)
    Dim l_colRet    As Collection
    Dim l_cls       As Object
    Dim l_clsMin    As Object
    Dim l_intMinID As Integer
    Dim i           As Integer
  
    Set l_colRet = New Collection
  
    Do Until (p_col.count = 0)
        'まずは先頭を基準
        l_intMinID = 1
    
        '先頭ははずしてループ
        For i = 2 To p_col.count
            'Intgerに変換して比較
            If CInt(p_col(l_intMinID)) > (p_col(i)) Then
                'i番目の方が小さければ、それが基準
                l_intMinID = i
            End If
        Next i
    
        '一番小さい基準値のデータを登録
        l_colRet.Add p_col(l_intMinID)
    
        '引数のデータから削除
        p_col.Remove l_intMinID
    Loop
  
    '結果の返却
    Set p_col = l_colRet

End Sub


ソートの降順、昇順も切り替えをできるようにさらに追加すると
こんな感じか。

'collectionのソート
'sortType:昇順ならASC、降順なら、DESCを指定
Sub sortCollection(ByRef p_col As Collection, sortType As String)

    Dim l_colRet    As Collection
    Dim l_cls       As Object
    Dim l_clsMin    As Object
    Dim l_intMinID As Integer
    Dim i           As Integer
  
    Set l_colRet = New Collection
  
    Do Until (p_col.count = 0)
        'まずは先頭を基準
        l_intMinID = 1
    
        '先頭ははずしてループ
        For i = 2 To p_col.count
            If sortType = "ASC" Then
                'Intgerに変換して比較
                If CInt(p_col(l_intMinID)) > (p_col(i)) Then
                    'i番目の方が小さければ、それが基準
                    l_intMinID = i
                End If
            ElseIf sortType = "DESC" Then
                If CInt(p_col(l_intMinID)) < (p_col(i)) Then
                    l_intMinID = i
                End If
            End If
            
        Next i
    
        '一番小さい基準値のデータを登録
        l_colRet.Add p_col(l_intMinID)
    
        '引数のデータから削除
        p_col.Remove l_intMinID
    Loop
  
    '結果の返却
    Set p_col = l_colRet

End Sub

— posted by midilin @ 11:12AM | Comment (0)


カウンター